MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9684|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
# Z$ m4 s$ F) ginput mcasp_ahclkx,3 {, u4 ^% o- Z3 W1 Y0 x
input mcasp_aclkx,
6 z+ i, h" ~* w* q8 Pinput axr0,! |3 ?  i8 U3 \# _, n& _
) c: u7 o' D3 `; X3 A3 H/ [' }
output mcasp_afsr,+ {( H% a& I$ M
output mcasp_ahclkr,
( Y! T7 p! b, b( p/ Qoutput mcasp_aclkr,
3 e5 M) s1 |4 o, qoutput axr1,4 e: Y/ P4 E5 w$ o/ X- ]5 A
assign mcasp_afsr = mcasp_afsx;
$ K: G2 L  z: ?8 sassign mcasp_aclkr = mcasp_aclkx;  o* D& D  U9 I
assign mcasp_ahclkr = mcasp_ahclkx;
# G, Z# F6 i0 h, I! C6 @assign axr1 = axr0;
& r6 o. d3 i  A

; `2 b; r% r5 t5 B; Y9 H" e, |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 n+ \' b# `$ X7 v' O
static void McASPI2SConfigure(void)
2 N) W+ T! H4 e4 ?/ w* e% u{
3 I+ f" P  O$ o" {McASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ D, Q& \: k! E" Y6 fMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" ~9 B# Z. d7 m0 GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' J% d$ i0 g4 h
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  ^$ C+ Y5 V6 n, \0 d
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 y' ?. \4 A0 ^$ x5 ]2 yMCASP_RX_MODE_DMA);
3 X! o4 D  g* |. v7 |0 b. b/ @McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 y; t4 C& T) e6 t$ ~& U
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 H, Y( n6 \+ ], G9 Z% j8 pMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 }8 y" |" k1 X5 I' N3 |* gMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ t% n3 p: Y5 [  ]+ [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 X& F  g  \+ g# U2 BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% y: G" h. A+ l+ w' ?! {# r+ kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ m: k0 X* R) e" o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; M! Z% B! c9 o
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! t0 X1 M8 x4 W% r" R: ?0x00, 0xFF);
/* configure the clock for transmitter *// ^7 a( _. s) F& k' o3 }$ _4 T) j
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 c: Q& H5 b/ v7 ]  k
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 Q8 ]' ?' a/ Q. J- b' r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 J- f. Z1 k! T$ X0 T( }5 O6 H0x00, 0xFF);% ]& D- {: w4 ]% ?4 F
+ w' Z$ z$ i* s* Z. [. ^
/* Enable synchronization of RX and TX sections */
) Q9 y  }- U$ u% M- t2 sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 @& S2 d, t4 w1 b; {* qMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 M* N( H/ j# D' S
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ H5 L- X4 }0 S* @6 I/ S# R
** Set the serializers, Currently only one serializer is set as
" {" x! l1 m3 S9 F5 s, R** transmitter and one serializer as receiver.
3 Z& r. W; e$ L; n* f2 Y: v*/
" i) B; W2 k1 ?" gMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! q$ J: ]5 L$ D8 yMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 w2 G) ]' b' J4 {& }8 V5 ^
** Configure the McASP pins 4 o$ |  B0 K8 [; l5 g6 j
** Input - Frame Sync, Clock and Serializer Rx, g, K- k; ~2 D8 i$ J4 X
** Output - Serializer Tx is connected to the input of the codec
; ^" \+ k+ @+ e+ v4 a8 }*/
) S" D* C( F. k) K$ BMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 G# [; R+ G/ V1 AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 _, d7 h6 N6 q% v: O# s, s  E& e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  j. g% F3 Y" j1 R3 Q| MCASP_PIN_ACLKX
- J/ J5 e$ Q( L( r| MCASP_PIN_AHCLKX4 \+ P- c, [. k. t" d4 t/ D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 ]4 d- U0 g# d
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# I! Z1 k$ K2 P. B' z- F% b| MCASP_TX_CLKFAIL 9 |* c) o( [! }! F$ Y
| MCASP_TX_SYNCERROR
/ L, \- r2 j+ C3 q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! u( _2 Z% e3 E0 j0 H+ P' S+ S' B
| MCASP_RX_CLKFAIL
2 ]* A  A3 _$ \% X* }( N2 z| MCASP_RX_SYNCERROR / i& p! t" q! c: g
| MCASP_RX_OVERRUN);* u8 N; I9 b! H' T) R, [' \
}
static void I2SDataTxRxActivate(void)5 b1 b" S$ l: d
{( ~! S' C' o  u; n' O) |% z4 T, q
/* Start the clocks */, n: r* W- ^9 J9 n  s: K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' y  L% w. L7 CMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: d% Q/ W$ j! u) i4 E; c4 p! ?4 L. n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  y& A$ Z* {- `$ z6 J4 o
EDMA3_TRIG_MODE_EVENT);
) U$ \& d, L; |( G0 E  Y- JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 E) ~2 c- e1 X* d. \
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 ?: ^: t$ }* I* [5 h( O' U. Q# T! v6 FMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" X' Y6 o1 x& S3 K( F
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 `) q1 C% ]2 Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 d! Y) |6 c% O0 Q; |6 aMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' o: b- s, R  h, t: SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);; f* k. ~/ _+ d: N
}

( T6 g' ^5 D; ^- b/ O* o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, a$ v; l6 ?# ]1 a2 E! C& h2 L6 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

点击跳转“创龙科技服务通”

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2026-1-17 10:08 , Processed in 0.039342 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表