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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13525|回复: 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,. z( D# h4 U/ U) M2 l
input mcasp_ahclkx,
+ F4 ]! h7 E* Y8 Xinput mcasp_aclkx,. Q; Z0 w9 j- P3 ?6 J* P
input axr0,0 G/ N5 }4 U; i7 u
1 J7 m( t2 f: X, W
output mcasp_afsr,
3 l3 `5 L1 F: g% Xoutput mcasp_ahclkr,
& u4 c) V" R2 ~( voutput mcasp_aclkr,/ N+ L, u3 O8 d  S! x- V2 D* W( M
output axr1,
1 I' m9 @& b$ `: D: `3 ~
assign mcasp_afsr = mcasp_afsx;- V) A- G/ m& r& `$ C
assign mcasp_aclkr = mcasp_aclkx;+ W3 X" u% R6 _0 L& t1 g
assign mcasp_ahclkr = mcasp_ahclkx;4 ]/ K  c! i1 g5 W$ K6 }
assign axr1 = axr0;
1 x/ J7 {, ]* j0 H% H* F

2 X3 Z8 q$ }, D& [/ T& X) j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& R' v3 y) N2 p% O* {. p% z
static void McASPI2SConfigure(void)
# ~; g: m: ~% }& |( R{  {: `5 A" e! b5 \# a
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 E% Y# z6 o1 T/ a" D% U- ZMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: X& t) Y) d3 D4 b$ Q$ k/ F6 YMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, ^* G0 b, \# g. J; @
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, l* j+ V' o; a# O. EMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; R% s5 t, B- n  z- J
MCASP_RX_MODE_DMA);! T) V, d: ?. Z7 y, L
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 v/ _( j3 ~$ y0 p: e5 |9 ZMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 F7 a: D$ a& Q: PMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . ]; r: y9 s8 [$ a
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. c+ U; w. X+ @$ G$ G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & a. t& x  Z7 Z% \4 m% e- `
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( `/ G! ^. U" F  Z& [3 \6 E' x
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
1 B0 g0 b( J( I3 ^! \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' c; I  x7 t1 M: i$ b$ J) X4 Y$ d" @' j: h
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& P2 W# z7 l* o% S0x00, 0xFF);
/* configure the clock for transmitter */
$ a) T4 h# m3 n: s* t, OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 F0 f0 g' G# c/ s+ |: rMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! Q7 T5 \# z2 N. R# t
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 s: `" |" c$ t4 V9 w0x00, 0xFF);; f5 I3 p3 W" P. z

: S3 E2 Y6 v: R: |/* Enable synchronization of RX and TX sections */ 1 T) ~0 v( v- n) J2 Z# K' t# C+ Z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 _: s1 N8 y- w- j/ o
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' R" d9 }% I4 u( M6 y& UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 x; M5 E1 T! }" _( I+ S8 @$ S. i. G: P
** Set the serializers, Currently only one serializer is set as
. c  {% C8 O5 a4 ^4 |  c** transmitter and one serializer as receiver.
. u! X! Q, [- z5 ~' a! l, ~*/
. V2 c3 b" I8 ~/ K' w# Y! o  ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ M% J" F, m  B. \7 b. ~- W
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' l1 @& C: q+ W& l' b** Configure the McASP pins
( U! [, q" `8 ^+ b** Input - Frame Sync, Clock and Serializer Rx" G" |2 p4 M8 z# Z
** Output - Serializer Tx is connected to the input of the codec
/ V8 h+ h2 v& q& H*/
# }8 W9 g8 w( ^" VMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 I4 V' e, L# I7 }; m( eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' W' {7 M% H0 i
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, C5 z+ F4 B9 R$ T2 A+ M$ C| MCASP_PIN_ACLKX" O, t" O% X( {3 S( g
| MCASP_PIN_AHCLKX* I2 ]) A! q5 m4 ]# x
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 w/ A. S% a% c! x3 O' y  z1 i# bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % c/ g) J* @6 W
| MCASP_TX_CLKFAIL , B9 o  s! d" |; `1 |3 U- J
| MCASP_TX_SYNCERROR
2 \7 Z7 f6 E, w4 ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: o0 w1 q/ j  N8 p| MCASP_RX_CLKFAIL3 f# ]5 Y# G& h0 r$ l$ `7 \3 F2 T9 Y$ J
| MCASP_RX_SYNCERROR
' G; `5 t6 L9 M" f8 L; ~; k| MCASP_RX_OVERRUN);9 A: p; E* b* |2 {2 p1 n
}
static void I2SDataTxRxActivate(void)+ w, g& u5 K+ n4 U$ X
{
. J$ P/ H$ ~+ s3 }- P0 l) m) s# @/* Start the clocks */
1 ]/ T7 m5 L: t  Q8 `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& H- J, e7 m* ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; E5 @; }8 L* W( H4 c( uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,8 d) q* w) E# V2 ?6 @# h5 A; g. k
EDMA3_TRIG_MODE_EVENT);% {, t2 v9 ]* Y0 u8 y( [# y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# F# i1 O3 I( ]9 B* p8 a4 zEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ o3 |. ~. z! k0 V7 y8 JMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
! ~- ]: Q5 D7 y6 _+ K, OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: N% A; n7 A9 r" x/ T8 m0 l
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* d( n' F* g/ Y7 A( ]/ ?9 H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" O: W$ `3 z- ~
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: a0 f3 n. G2 B4 ]" n}
" `/ K5 o- \2 P8 J  p& g8 X5 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
! n2 P1 \0 d# v4 u: I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-28 04:55 , Processed in 0.044464 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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