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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10320|回复: 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,
  a; y4 t1 b) m+ G3 z$ Qinput mcasp_ahclkx,
" C. Q! ^" ]3 R5 V$ Minput mcasp_aclkx,1 V* P3 q3 Y+ I" T
input axr0,3 d  e8 f9 }9 u+ w6 w# a! R5 ]

; [  W3 \) ^: [' c2 n& Qoutput mcasp_afsr,/ M% B; E5 x; {) ~2 n& k, e: X& L
output mcasp_ahclkr,$ ?, X( J# Y7 R4 C. J, P
output mcasp_aclkr,
) |6 L) B/ D( ^+ D- I9 soutput axr1,
8 \" B+ b; {' D1 _8 Z
assign mcasp_afsr = mcasp_afsx;3 m2 ^4 }; }$ M$ B9 M8 Z& p' ]
assign mcasp_aclkr = mcasp_aclkx;
, T  H5 c" H/ ^1 E: ~6 Tassign mcasp_ahclkr = mcasp_ahclkx;% Y- v' B, j( W! B) q. l
assign axr1 = axr0;

* C; m' N& D) N! i3 c9 P0 t/ p0 v5 j9 o; B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& X3 V* f# t0 r( w+ |
static void McASPI2SConfigure(void)
2 ]0 `' w# @, J+ T{
) |( {  a8 t9 j/ zMcASPRxReset(SOC_MCASP_0_CTRL_REGS);/ X1 j7 _) `6 S0 o8 S
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' T* d4 D" X( aMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 ]& N7 F; S# v4 k% {/ t" _$ T. S& C
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. x- e- @# r* M
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: u2 G  Q. g4 T! L" t1 j2 H
MCASP_RX_MODE_DMA);; C; p; N0 T  Y6 V5 e4 X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ S; L- K' W4 E1 zMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: q2 m' Y# ?/ O
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / C& T7 B% D3 {5 ^5 Z  x7 ?, R8 F& D
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 s  W3 X0 P- z3 U( `% |. B
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 g0 `  h2 ?0 _# z6 M: `4 Z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 S  \/ h, u8 |1 dMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( i& D- j: w+ Q2 p. c9 }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 L7 B. a6 j2 ?+ B9 S7 kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 b3 Q! }( ~2 e3 U1 n0x00, 0xFF);
/* configure the clock for transmitter */
$ r+ ?3 `/ j' |+ ~McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; V$ ~* i' a( S' V" vMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & t9 L: Y8 R* p1 q+ h. E1 \, X& S
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 t* z/ u/ t1 c$ @0 C
0x00, 0xFF);
0 {5 L/ @/ \$ a4 ^" c9 ?' I) R
# w: s4 u- T8 f  i- p7 n/ O/* Enable synchronization of RX and TX sections */ % [; ?! B$ u8 A% e3 c3 p' L: x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: Z3 Y; W# C0 _. r3 v7 ]! WMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. K* x5 ]' V( i+ U5 U1 [9 {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 e9 C. Y" p+ z( \1 T* b
** Set the serializers, Currently only one serializer is set as% i7 [) Q7 }; t3 v. b0 G: ~1 z- z: `
** transmitter and one serializer as receiver.$ V& a( A4 N, J4 [6 M/ x% K
*/
: E- K) l$ A4 _McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 R. n9 R  R# fMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ z$ V, L# T6 G4 o1 P2 f& N
** Configure the McASP pins 8 `6 x1 m! ~7 c% `- \
** Input - Frame Sync, Clock and Serializer Rx
6 J4 q# {3 O# J3 H! W7 c1 v7 z7 i* G** Output - Serializer Tx is connected to the input of the codec
7 A5 R1 S% ]: h) L7 I*/% A( K; C5 w/ R! b6 G; e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);0 I0 n' S% P* i9 W0 s: f! h+ {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) j# k- |& l4 M7 s+ ?, wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) S( o2 r' b4 H| MCASP_PIN_ACLKX
* u; s7 F. P2 z4 z0 ^| MCASP_PIN_AHCLKX
% r6 N+ i0 h- x8 o' L. j+ f| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. Z2 f* ^  Q5 L4 \0 U0 XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 ~6 M. s( M/ h| MCASP_TX_CLKFAIL . e; q+ u/ P! G9 [, W" ~7 ~
| MCASP_TX_SYNCERROR
" c: k4 l5 y1 Q2 ~+ y| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % c1 e" l0 T! J% {4 ?
| MCASP_RX_CLKFAIL
* K: z" P$ Z# w+ ~, Z| MCASP_RX_SYNCERROR - }; S. N! w( G# [9 y+ t
| MCASP_RX_OVERRUN);& T9 }+ k  B6 |6 @% j# u8 ?
}
static void I2SDataTxRxActivate(void)& H0 W+ i6 A" g) B
{( _! g6 H, h0 |; X: ?
/* Start the clocks *// }& _6 ]' V$ z; C
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 s7 t8 d2 Y5 Q/ L5 pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. Z1 v* P  Y8 U: H: B% ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 D, ]5 X* o/ U. d
EDMA3_TRIG_MODE_EVENT);! n4 Q1 p) O! J* D$ Z, q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, ~0 Z3 c# y5 R; VEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- p9 {5 F/ t0 ~. k
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# T9 s- M- n: t/ K. f# C/ h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& U+ s& u+ V: ?( \while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( ?2 f, t$ I6 l6 w, t
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ _4 w8 a% K$ g/ A- c5 M. sMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);" d( v, }( c8 T7 J% ^7 l
}

& O* I2 r. C" j+ ]5 k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 }, H/ x* J! [  n+ n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-3 17:09 , Processed in 0.039037 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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