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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 E, }5 r8 O  Jinput mcasp_ahclkx,' M* U0 f  U9 e) Z% t$ X
input mcasp_aclkx,
9 v) }  [% ^" \1 `& Hinput axr0,, c; z* Q9 Q* {

0 A0 s6 O7 ~* g( m+ Soutput mcasp_afsr,
- V& B, G7 R: s- z8 Joutput mcasp_ahclkr,
4 i0 \7 ?6 m* q* ^. `! zoutput mcasp_aclkr,
$ Y: o& {1 G: J1 x% }output axr1,9 A/ ]5 S* [4 T- b" s! x
assign mcasp_afsr = mcasp_afsx;% F7 D/ H" F: S* g) L$ e: C4 @
assign mcasp_aclkr = mcasp_aclkx;
0 e+ ?& ~) i! F6 l: ~" ~assign mcasp_ahclkr = mcasp_ahclkx;: [* N, W9 @" h6 t+ _
assign axr1 = axr0;

1 ~/ |" {+ F) I0 y. R
* \0 q3 A2 x7 |# q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 J. `! Q0 A: v/ a1 o6 K5 L( Q7 v
static void McASPI2SConfigure(void)
& j$ p+ Q8 r3 j5 r{
9 H/ j! ]4 n+ A: ^McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 R- s1 ~. A2 b  N6 Q3 T) X2 _
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 G2 S6 E- X" @4 T! Q+ ZMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ P' Q$ |0 u" ]6 w7 c6 X% B, hMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ a# g8 @5 @' k  `1 OMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* l" z" ]  p% p- ]0 ?7 m' {0 x; A
MCASP_RX_MODE_DMA);' L. o( m' \# w/ z! c. W. @
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 E3 D" i# o4 KMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 V4 }7 }) ]7 Y. S3 o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; g$ A4 V  i+ r
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ _( w& G; `; _* B( Q. B2 _McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ D0 f+ L! L  f9 [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" t1 u7 D' t1 J/ T- RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 R- ~( u4 ?( v, ]* `* x+ [* lMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. B; f' s1 }/ rMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,  ?3 O4 y+ j- X3 S2 Q2 ~9 G% M
0x00, 0xFF);
/* configure the clock for transmitter */! C1 Y% k7 {0 |; o( M# C! j8 z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# d( e8 v* Q) Q1 D8 E0 A
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 R( J: N2 l( C& NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# L8 W7 E' A- D$ h( `$ a
0x00, 0xFF);
4 t& @8 A/ C( K# D  ?4 w' P7 o! m. P! h1 q1 T# p5 _
/* Enable synchronization of RX and TX sections */ : i/ N; A1 a# R$ P: \1 F0 b/ u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 a6 _! D+ d7 A" [( hMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 W3 b3 @2 _1 ~' }: c  f9 q+ r3 LMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*/ s2 N3 W* G) _, A
** Set the serializers, Currently only one serializer is set as, P5 U; X3 w! C8 O+ N7 ]6 O
** transmitter and one serializer as receiver.% A# \7 y5 q4 r/ V
*/
& e# G& r' f0 Y; c9 sMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& P3 l$ |2 _2 `1 K1 ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 a  Q: \0 F' O7 y4 ?9 l
** Configure the McASP pins 6 E, U2 a& P, r, ^
** Input - Frame Sync, Clock and Serializer Rx
/ G+ K2 s/ R& G* Z' R** Output - Serializer Tx is connected to the input of the codec 3 h( Y: f& U0 I" M
*/
' A! X. R1 ?0 [- {McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 t, Z* p  b: [; F6 w
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( v) x( l) l8 J4 ?  y; f/ kMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 v& c( b! \9 Z% `! E, g4 g| MCASP_PIN_ACLKX6 Y2 {+ W) d2 z' e
| MCASP_PIN_AHCLKX+ i) u; R! o( F0 |! h$ \6 K0 `4 y& t
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 [: C  L& a0 i/ `$ H) N. |/ r0 qMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 t3 K; c1 q6 p& S| MCASP_TX_CLKFAIL 2 s' x8 l9 P3 X$ `* V
| MCASP_TX_SYNCERROR
3 ^2 W* r9 O/ r8 `5 a2 J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # W' ~/ w- {# @1 |0 N
| MCASP_RX_CLKFAIL
% u; @  h1 P* e4 ]% m$ T/ `2 j. ?; h| MCASP_RX_SYNCERROR # w: y4 \" ?+ e
| MCASP_RX_OVERRUN);1 B) n: z8 x" a9 z& q1 B
}
static void I2SDataTxRxActivate(void)) d* t) ^" J9 Q1 v2 g! r* `& v
{8 ~; ~1 u& y) y+ W! Y4 @, S8 e
/* Start the clocks */
. d* M& `5 s$ S: {  OMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 j6 G7 S2 M0 T" x( N
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 |/ C( S1 K- u$ [" Z) ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 K. R# G/ o* r6 C1 HEDMA3_TRIG_MODE_EVENT);; X' ~# Q7 _  Z  B3 b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( }8 P4 r7 N0 e1 y0 Y2 T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ j# \: m$ z9 R/ j! o3 T& w: V% E( NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 J: Q7 a/ `9 ?) f* \9 I* `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. Q( J: v% z% K/ \' r* L+ ]while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' N7 |$ o' g" R! p' x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( a4 W! I- L1 p% G8 Y- \- _3 tMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 S; v# j; p( Z; m# x) \
}

$ \( ?. ^; u$ Q$ J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  G9 E, m* C6 U5 K9 b8 l9 j; @  L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 17:02 , Processed in 0.038235 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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