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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8356|回复: 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,
( q: j$ R% _" `$ I' r6 vinput mcasp_ahclkx,
$ J$ }7 t% ?2 L( @1 q: u: i7 jinput mcasp_aclkx,2 _: Z. l' C# J& N9 J3 T3 L
input axr0,8 J( x) Y' N/ `, g/ f
% X$ r2 e! k: [7 H  |& F1 ~) H. C
output mcasp_afsr,
; z- x% P  o* o3 T- d3 ~( r5 \8 }output mcasp_ahclkr,
# K; m# e# j6 `/ B, e! joutput mcasp_aclkr,8 N. o  x% n4 F# S* d8 U
output axr1,
" L1 J% E: t( J! l0 F5 h$ Y
assign mcasp_afsr = mcasp_afsx;  B3 j% r1 L: ]) `! n# g& ?5 K
assign mcasp_aclkr = mcasp_aclkx;
0 W7 f1 E7 O/ q- u# rassign mcasp_ahclkr = mcasp_ahclkx;- D+ ?0 ~  I" R1 u( ^, N1 y/ G
assign axr1 = axr0;

# a; m, {! E6 B3 Z
8 Z# \( n/ U. ]0 f/ {' U. i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# |; K" s* P( b; e% o8 _: |$ H  x
static void McASPI2SConfigure(void)  `6 {* X0 C' ]" q  v3 P9 ^
{( D& D1 ~# C7 N; F# N+ e
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 t% k* Y$ o% f1 M. @) m9 l  cMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 S+ R$ j2 R% {6 kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 f( v( O% \9 g% s& A9 c: S
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ }/ Y0 \7 {# c. r3 KMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( r( }( r& {2 U! N7 |
MCASP_RX_MODE_DMA);! @: x, |! T: I6 h: @" m, C. t$ o. {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- G. w- g' w, N6 IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 R+ m" e1 W- t
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , _, M1 C  ~. E9 ?
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 z, X/ W) d/ @2 o
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* r5 |3 j! ~0 LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 G: ^$ ]% n( ^# H8 GMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: s" j  {1 J; \/ @9 O/ d
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' h! W$ D$ n: R8 e+ w# O3 E) T4 L0 gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 M5 S% k# p$ Q( B" T9 ?, H
0x00, 0xFF);
/* configure the clock for transmitter */
0 \5 q, x9 P" e) X6 ~/ {$ PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 Y4 y3 x  a: Q: U  O! rMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 U5 C/ i" X5 Y- q8 [McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% D- D2 Y5 T, ]5 j& C
0x00, 0xFF);
! j5 [) }" f9 ~/ E& S. O2 F+ s. ]8 f3 l" d
/* Enable synchronization of RX and TX sections */
6 Z6 A; V2 |, ]+ N5 eMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: g0 Y$ W7 C! r4 vMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) F: d; |/ G4 M( O$ e7 tMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# x/ P) j5 U' w7 p9 A; R0 m3 R
** Set the serializers, Currently only one serializer is set as) i" j: R0 j; @
** transmitter and one serializer as receiver.
$ `3 n2 d9 B- d* h! Q*/2 f  |, Z" X/ }/ F# U/ `6 I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  ?# \! S3 J7 F9 F& C" p) O, Q
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 J/ c) I# I. I" v# c2 i2 t
** Configure the McASP pins 7 `( N  W$ k& d  a8 V4 W# }
** Input - Frame Sync, Clock and Serializer Rx
3 ~5 X5 f) F/ [, _5 g& g% d: m: d** Output - Serializer Tx is connected to the input of the codec
, Y) i" @# @! O*/
1 y: ]. M* t# x/ FMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- |1 x/ ~1 t+ C9 k8 d% \2 X
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) {( T& d+ Y+ BMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ W) K6 M/ r8 o% R) T$ k| MCASP_PIN_ACLKX- ?+ h2 t5 b2 z- q6 [) I
| MCASP_PIN_AHCLKX
* G! ~7 u. u$ D/ q! I" O: o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 T; d9 Q$ l1 B0 T* `9 K; {, r% \! }McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 p+ s; q# X) W6 ?0 J| MCASP_TX_CLKFAIL
" d( q+ ~' v6 X$ I, g/ h. ?| MCASP_TX_SYNCERROR
3 u5 v# X) i3 D  M7 C| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # k/ Q8 N; U  x1 a
| MCASP_RX_CLKFAIL
# S% I$ n/ x4 F0 o8 h9 v5 d| MCASP_RX_SYNCERROR
8 V# C: e& u, o| MCASP_RX_OVERRUN);# S/ u* q! z) Q6 q7 T; R/ |/ \
}
static void I2SDataTxRxActivate(void)
( N( C4 I- T% K{
* R  H8 h5 R  n6 B0 ^, b; Z/* Start the clocks */4 a) D0 [# ?% I8 a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ t2 d+ Z& _- T3 EMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 L  R: C2 d8 ^5 v$ [! j: ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! l7 Y: [! e2 X2 j8 Q, D# o4 F0 S
EDMA3_TRIG_MODE_EVENT);
# A1 M- _* \* N0 |! [' [EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) J! y! H' V2 S2 o; `/ v) L  eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ e' d, ?# V3 S! xMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 n7 Z) a# o+ vMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ D: p% k; F) ~* F. p* Nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: {; f+ I5 k; T7 H9 B5 GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 n" t+ m% K% O$ R1 K+ K* t
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; i" C; K& f- o
}

& I$ t0 X$ Q+ I8 S- u' ]
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ R9 P( j( B" \9 b% S9 y( q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-20 05:28 , Processed in 0.037200 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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