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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
: B9 \4 j  v9 a  X5 x" [input mcasp_ahclkx,4 p6 `9 q7 Q* n( [) c; \- @  o( k+ N
input mcasp_aclkx,% n% v6 J$ [9 N7 O
input axr0,
( d( o+ |  H( f! f9 Q. G. a
- A9 `% X/ A" r1 k' w! L! ^; Koutput mcasp_afsr,2 C8 \+ g" c/ {" M
output mcasp_ahclkr,* F7 M+ }! w, Y2 L% r$ _! L, X& }, i$ C
output mcasp_aclkr,* q1 f6 ~3 z9 b; V0 y( Q
output axr1,6 C( S# ^; J6 y8 G' S6 ]; g
assign mcasp_afsr = mcasp_afsx;
  l  K4 f4 k4 L9 D7 \, j. p- Q. eassign mcasp_aclkr = mcasp_aclkx;) [4 y+ f' b! e0 [) P% N" N1 I' `
assign mcasp_ahclkr = mcasp_ahclkx;
! z9 e, N" x7 H- E; `( u3 F- oassign axr1 = axr0;

) S0 {" h- x0 [* ?% h" k1 {1 o  S
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# Q  f/ M. Q& O: d! I: j
static void McASPI2SConfigure(void)6 T7 g- w! |: k* ?/ `& ?9 q- H7 n
{6 _3 M! K& v0 Q) S+ F' c9 V
McASPRxReset(SOC_MCASP_0_CTRL_REGS);2 Q5 m9 S! m3 L8 q  p2 `1 y+ n
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ O* t' r+ y, V9 m3 H- H
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 T$ b! P. R5 ^- B; T
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// b3 l% }; R0 c4 i+ p! H) r
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ G% X3 u8 P% c- }9 D0 k
MCASP_RX_MODE_DMA);
  n$ Q2 E& F0 q$ X5 {! [McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 D9 }: K# n% y' `) Z( tMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: q6 r$ G& y& D8 T  m' b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 K1 t) i3 u: s6 F& u, m9 d8 WMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 D4 A/ Y5 j8 E  O. M$ D2 u3 \
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 b4 [5 C$ q) V% fMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# I8 P" b* L2 F2 E. f
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. D$ v" A  h) `3 ^$ FMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 L; k6 Y9 i' y. [3 C9 T: ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 L! z1 p; G9 U- P
0x00, 0xFF);
/* configure the clock for transmitter */' L4 |) W/ m  Y; p# G
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 @; O( D5 b& Z' X) T2 x  _McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 T5 v9 q1 I: v4 {- N/ l; j, N' b
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# p1 w. ?% L( ^3 d- x1 C0 Z4 }0x00, 0xFF);0 N# [+ K* \8 u/ f8 Z* E, j, }
7 a1 L3 K' h' v) w3 c
/* Enable synchronization of RX and TX sections */
" W- }9 i! W) Q- b% I! L" TMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 B6 t  a8 M& Q: O  i# t% O( E& Y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 g" ?6 ?. ^& BMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  |! g7 q# h' E; m! C( b
** Set the serializers, Currently only one serializer is set as
5 P9 G4 q4 Z/ r$ N( U5 d** transmitter and one serializer as receiver.
3 [3 N5 g3 n8 U1 ]  L7 S*/5 l5 V. Q' ^) ?5 L
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( N' Q, M! x0 |0 t) e) K
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 b4 I  b& a; k: d1 D5 R& M; T; J3 u** Configure the McASP pins
4 b0 v) N1 \; K1 ^* z8 \** Input - Frame Sync, Clock and Serializer Rx
2 y  F; a5 P2 a** Output - Serializer Tx is connected to the input of the codec
6 {7 g4 l. N7 S1 C- j9 H*/
2 W. \1 _4 ^9 ?McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ P' y: d* L" }" Q$ O; S1 v
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 T8 v; X+ A% u0 J; s5 d6 EMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 G" v) j4 l8 E) Y9 v1 B
| MCASP_PIN_ACLKX2 J0 x+ |& ]& t# o6 t* I
| MCASP_PIN_AHCLKX
, b( [0 @; N- |1 D% a| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 E+ N/ |- X# a* Q$ E0 U. {4 T
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! Z0 Q. U4 s4 j; h  _5 y| MCASP_TX_CLKFAIL
( K0 [! ?3 a+ x5 m4 x7 L- g| MCASP_TX_SYNCERROR9 Q7 P' V7 _- j6 }2 g8 j! L2 ~
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 i4 A/ f: |9 N5 ^' B7 w/ Q0 [; L. W
| MCASP_RX_CLKFAIL+ ]! `) o% n: e9 Q! E. {& b, H
| MCASP_RX_SYNCERROR
- B( f0 h, H8 k6 ?0 Y4 ?| MCASP_RX_OVERRUN);
* e# y* G4 m/ ?+ P+ a' r# k# a}
static void I2SDataTxRxActivate(void)% k9 G! i. I/ m1 P4 }9 b
{: N: @9 x- G" k9 p+ U) ?
/* Start the clocks */, E  h, D1 }' K/ z: m3 h
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) s+ N* Y  d. w$ y/ }7 {7 t
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 j; C+ K2 p# ^0 iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* N6 M  J! Z; a3 J* D2 a
EDMA3_TRIG_MODE_EVENT);6 ~7 I2 J8 a8 y& R: e9 u1 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 F3 W$ k% l8 c0 P) w) oEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: j  x  k0 p+ f' e+ XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  o5 R( \- C+ S, v( l$ u2 FMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 G: \' \+ I1 S6 q  `) C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 `! e1 x( t  r" r1 b. tMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ g4 K! I' D+ H5 G  ~9 @4 u/ iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 }; w+ r" S: E6 [. |! x% C, m1 g& V" _}
- A9 b& q9 U' J7 Z- M- g/ k7 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; x" |4 ]# b) N" j/ r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-14 09:49 , Processed in 0.041788 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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