MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
$ C; Y' @3 `+ H8 x% W5 s$ finput mcasp_ahclkx,- [) z- B' g7 ]3 y+ j; q7 K, N
input mcasp_aclkx,& w. w" W/ ?; W; q& q
input axr0,) q( u& h. l( c1 [( Q+ I1 e- |0 ]

* J+ }/ H& j$ G! i0 houtput mcasp_afsr,5 |) D: v9 O( s- Q# R
output mcasp_ahclkr,
0 s! b9 l* c- P: h) goutput mcasp_aclkr,
" x! ^, J! X; {* O* Z9 h) Doutput axr1,
- X. e/ g. a# N" V0 A$ d* h, L
assign mcasp_afsr = mcasp_afsx;2 o) f) }, o* I& C3 t
assign mcasp_aclkr = mcasp_aclkx;
) q( r; A: y( @4 L: I8 G5 Bassign mcasp_ahclkr = mcasp_ahclkx;0 {" |8 N+ r1 e; b2 e9 l2 j3 w
assign axr1 = axr0;

& T1 z$ j! U  H
+ y. y9 F( p7 U* T3 ~5 H+ W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 ~, l) k# r; ~: S* Q8 b( \, `
static void McASPI2SConfigure(void), H6 G$ u" n) J2 o6 c
{
$ u" Y" P, m2 l7 Q9 k: y0 K. w( vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. Y( p; f4 p/ O' K, ?McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 z: k: `" u9 b1 v  nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: p, @, h8 v" Q! E1 S4 D+ I
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ e$ z2 c3 v. A* N1 ]3 R% B) \% H
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% i# V; F; i0 t; f  u
MCASP_RX_MODE_DMA);. {2 Z, k# i/ U3 W
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ c0 Q% U# V; f# l: \! V
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 s5 C- V0 H2 w( q3 K5 n9 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) s1 S/ ^4 s3 o, |% J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
, _3 C: c# t; s: @McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 _' h0 m5 }( k4 ^' l5 J' x1 Q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 ^1 y8 F2 q: h1 ]/ z+ S
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* h% Q* K& J* E& ]8 k" ^( A. e/ l7 Y% R( U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. Q, O! b6 R& J! b2 EMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 ]2 u" k3 V6 x0x00, 0xFF);
/* configure the clock for transmitter */. D9 q2 c+ M$ `, G5 M/ U# ]7 i
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" c" g  r/ y7 y5 d/ E  `" BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 X; ~* _6 @+ s7 sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 _" W$ U8 U0 V+ O0 C" G/ J
0x00, 0xFF);7 t6 ~, A$ `9 G' \
! v# Y% {( J: }3 ^1 C
/* Enable synchronization of RX and TX sections */ / H) T9 b4 o& G8 D- _+ v- U
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 X6 {0 C+ f; v3 K" `
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ F$ J1 ^  ?% o' t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
+ q5 G$ R% `/ i! R** Set the serializers, Currently only one serializer is set as
. L7 I/ X( L( E1 z+ J** transmitter and one serializer as receiver.
. j/ ^! X& d. Y*/
2 ~7 U$ C  v1 M5 zMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: Y  R! r2 E8 R* o5 f+ }
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 A6 P9 U6 k3 q2 s3 B
** Configure the McASP pins 1 W- i% e0 d( r
** Input - Frame Sync, Clock and Serializer Rx0 h. w+ n2 I+ V9 ^' m4 ^( J
** Output - Serializer Tx is connected to the input of the codec " s. E1 c7 x2 \* e1 R5 H* S; B# u
*/
5 S; k) h% j6 ]4 }! xMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ p# Z& }% s' X% b
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ Q' v" K# X, N8 ~8 e: |" G' b* \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) s6 N1 P$ j( F9 r3 N5 J3 y3 r1 x| MCASP_PIN_ACLKX* S6 I+ `7 m( M3 P; r# d
| MCASP_PIN_AHCLKX# }* j0 d9 ~: U; H2 I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 K9 {) d* X( o
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 K  M1 f  r: D+ z| MCASP_TX_CLKFAIL 1 x0 m4 o& k# t. h
| MCASP_TX_SYNCERROR
0 _( N4 E6 Q% ~3 ~. ]8 w( e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' z4 I& H6 C6 A5 n* ~, R5 }2 d
| MCASP_RX_CLKFAIL% r0 B  E9 @9 V- N$ y7 ~6 q
| MCASP_RX_SYNCERROR   {& `; x; D' y$ J. t% n) M
| MCASP_RX_OVERRUN);/ u1 b2 O. B( n: Z0 X9 u; j
}
static void I2SDataTxRxActivate(void)  E6 o4 \1 F) B# X& I7 o
{% D$ A+ R& s5 v& f7 @
/* Start the clocks */9 r5 D. D6 ^9 e" n
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% c: W" R+ ]! [4 v, B1 m" ^! |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 \8 |- S  n4 s$ p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
: ?: ~4 g( v  q3 ]4 JEDMA3_TRIG_MODE_EVENT);
$ T, J4 x/ M2 ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " n6 ?5 g$ ^3 S7 c5 k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ u. i% i; T" x2 ~# c; y5 bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 Y4 \! |. K, q, ]3 Q$ ~) nMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 H- X/ V2 u! K- }/ ]' k3 l! g
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. y2 i8 y9 Z: S- X4 l9 v
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ E) N8 r5 `# S& J9 {/ t
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 u( O) i' Z  [0 P}

' `3 h/ ~/ W: |# y+ n' X* v; p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 t, `; t/ I- c5 v0 A/ r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 13:14 , Processed in 0.042535 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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