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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8741|回复: 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,
; a5 \% O. v# Z1 D. w+ O- D5 kinput mcasp_ahclkx,5 n$ o# h: Z0 Q8 H$ X
input mcasp_aclkx,
6 a* t# u) G' u; Z) Jinput axr0,
, z6 o. s4 f. V8 Q, T2 q' U7 J* M0 z: X+ x8 ~  Q" v
output mcasp_afsr,, W) e/ I& j6 q- z
output mcasp_ahclkr,
8 ~5 T8 H5 A1 [9 {7 \* @output mcasp_aclkr,1 l8 Z( w( Y' i% |4 `/ \3 D
output axr1,
5 Z# V, p8 c% k3 E& K" c
assign mcasp_afsr = mcasp_afsx;7 L' L* ]& l% J& v/ H8 @3 ?2 I& ~
assign mcasp_aclkr = mcasp_aclkx;- ?* n& e* S( Y' V  v
assign mcasp_ahclkr = mcasp_ahclkx;+ `8 |5 s' E2 S+ L3 n
assign axr1 = axr0;

2 Q8 ?! O2 `! _# @
1 K3 D) ]  T- A1 W5 @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

) c# u2 N; Q) B1 m
static void McASPI2SConfigure(void)+ Z& T5 u, ]; k
{
6 a; c' v3 t: p: K- H  O* u0 o3 yMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( Z4 Z3 v7 A  d. ~+ B/ {" TMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ t4 P3 X) g6 ]' }; q; EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 V3 O$ m2 e: W1 s5 g9 _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 |7 c2 d; o% q  E$ O$ p- Y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# Y, J" W' w3 D
MCASP_RX_MODE_DMA);
: e" l4 K. [, Q& {  I) fMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- A5 y% Y! [( NMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  F  m1 A1 l# P7 m2 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& u  {" s+ i( @2 i" `2 h: S. aMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 R* e) B" _1 GMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( e( b+ @# |5 l- b
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
' [) B; }$ P4 p) j& VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 i- @' r: z+ U1 E; V% eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ T( Q5 `/ m$ J8 o3 H6 ^' y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," M. D& H- y$ `2 I5 S0 V
0x00, 0xFF);
/* configure the clock for transmitter */. g  [+ ^/ {7 D, H* z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 D: F" m: c4 |McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & O% p' F* a& ~
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& N0 w1 h5 B* ^  d3 s/ g! G" |0x00, 0xFF);; E+ [' I. w+ |; I. e  G

5 Q5 G+ w; ^! c# [( T/* Enable synchronization of RX and TX sections */
3 h8 m# C; E' s& }! ?McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 L; X4 C4 V$ D8 Y$ k) r+ g# cMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 y: n- o4 ]; q+ E
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*/ @3 p8 B4 Q! K/ l+ v
** Set the serializers, Currently only one serializer is set as
  a5 ^( |& y( E** transmitter and one serializer as receiver.* j3 F; |* t, x
*/
1 C# q4 q* I9 X) D3 e, ?" OMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 N3 ?, c% B( p( r# j# l
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 _, N& ^  `8 g) P  _
** Configure the McASP pins , R" I8 J" s; e/ Q. Z% m% _& X2 V
** Input - Frame Sync, Clock and Serializer Rx
8 [2 R: X2 Z  N1 C! ~** Output - Serializer Tx is connected to the input of the codec # k7 U" n1 b2 c* q: G& c& G
*/
' `" U6 I' ~3 A/ J* n, BMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* N& G( Y9 P, c/ ^- t! N3 H' P+ ?McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: N- z! l9 l8 ]& `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& _7 H& T, @- d& y6 D
| MCASP_PIN_ACLKX# M- u2 r( z. D5 u- E& W4 d
| MCASP_PIN_AHCLKX
1 \% h6 S6 T; `' y  Z9 ~| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ A0 k1 i+ F/ c6 `: OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) m% \6 w2 ^/ P" g| MCASP_TX_CLKFAIL
/ Y- K/ |' t# C2 W| MCASP_TX_SYNCERROR- e; @7 q3 c$ q7 D# h& `3 c
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
! _  U1 a+ r/ V4 || MCASP_RX_CLKFAIL
2 M1 T- I/ N" ]8 C1 b# v9 e$ {% _| MCASP_RX_SYNCERROR
3 L! p7 e- I1 G4 S| MCASP_RX_OVERRUN);
! Z9 B7 p% H' A6 `" @) b}
static void I2SDataTxRxActivate(void)! l$ Z, A# G' Y1 a! p
{
+ y/ {0 E/ g5 a/* Start the clocks */- \, k) @2 W) j0 n$ G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' K7 k: l. b! X# E3 l$ w1 F
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 Y, v! P8 @' o& b8 p; O. n- h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! h" e1 G7 \; j/ O- C  Z% V
EDMA3_TRIG_MODE_EVENT);
3 E, J' w4 Y: Q& |9 R2 XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' k. C. W8 H7 `
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 N( x. t) ~5 @  D5 ?& w9 yMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 ?$ P. \. r% R$ T& F; o) JMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- j, [1 F' A* J  n5 c2 c+ awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ o$ @7 Z0 p( ]+ E! W, {! ?9 x$ ^
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 T0 I9 E) ^& i) w' {2 Q, i
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);( A+ Y& U9 n3 @9 [+ z* \1 U
}

8 |7 w, ^( D0 G( A9 s5 F' h# V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 [8 L" s" Q8 R; e$ w* ~; h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 20:48 , Processed in 0.043696 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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