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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,1 R) T0 _0 Y/ F/ s
input mcasp_ahclkx,
' P3 z% y) V* ]8 x6 Qinput mcasp_aclkx,3 l! y: o  g; w3 B5 y; C: W
input axr0,* W8 `, Q4 }( t& B& P' A& x2 ?

3 [$ G$ G/ E/ g, L. C* G# Boutput mcasp_afsr,
) |9 M% p- o; Z' Y/ Xoutput mcasp_ahclkr,
3 R$ F/ _( I' v9 |* J3 n% L  \0 @( @output mcasp_aclkr,7 @/ m$ W8 ^9 r& K" R
output axr1,
7 ]* r. U* k; z: ]( W
assign mcasp_afsr = mcasp_afsx;) X  ?! n6 B/ W- E. J4 y
assign mcasp_aclkr = mcasp_aclkx;
; s1 X; E5 Q( oassign mcasp_ahclkr = mcasp_ahclkx;& @, @6 {6 P, P
assign axr1 = axr0;
: }2 l% O8 H, u6 n1 Y% N# X! v
9 C0 H$ s: r% s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; u- q& S& c+ Y* O6 t0 W
static void McASPI2SConfigure(void)# e* b# K1 H- l( h5 y1 T2 j
{
: O- }6 X% i$ R' s6 y$ K0 F/ d0 E8 d/ I) kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( g- G: {  r% o9 C* F2 hMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% u. R/ x" I& K! @
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 U7 v8 p1 ]5 f8 C3 a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ a! A0 T" x; H6 d( g% c
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& a( ~1 t* H1 g; R
MCASP_RX_MODE_DMA);
" ?* q; |# ^; x, k  V1 e- C6 _McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ E' ^/ p1 R, N6 cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
. J+ l% q3 l- Q- Q* h: G# CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; g( e  m  `1 V/ P8 PMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" ?/ L; e& u  x( [$ w' C' d! h
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ ^) U( O. r" ?MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 F3 T+ S! x8 T
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 o6 ~. W! V& A/ ]" e# S8 SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 a; r. S2 x. _3 c/ e- Q" ?! t0 C# _. C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ V% [0 X1 i9 c4 [7 X
0x00, 0xFF);
/* configure the clock for transmitter */: Y" ^2 p. w6 s1 ^  w
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 v* o! D5 Q: y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, i1 U  r5 k* q- |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 ?/ N* {! y3 H, B$ G# w0 O9 ]7 Y0 a. t
0x00, 0xFF);- g2 a. T: L, z

4 ^# X" P! k' `; A( o6 C3 e/* Enable synchronization of RX and TX sections */ 7 x+ U" Y6 y0 @1 T7 c  s& `# R. F
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. Z3 h6 @& J5 e- z. W& ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- w( [5 a+ N- \- G5 V3 pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 v; _& ~* T+ R/ \6 Q
** Set the serializers, Currently only one serializer is set as4 b7 K$ g6 w% r0 W7 [+ s
** transmitter and one serializer as receiver.( g/ A/ Y* E$ \; S+ P4 \4 J
*/2 S- v1 _4 t% F1 U
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" M5 d! I: x* P( D! o8 E, t) ?  _
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 H$ a/ i0 |5 x, t** Configure the McASP pins
+ }+ E: y- a, p1 u5 e$ G7 u** Input - Frame Sync, Clock and Serializer Rx5 k: b" Z/ y( ~7 h6 S( K
** Output - Serializer Tx is connected to the input of the codec   ?, w6 h* Z# L9 k) V6 D+ Y
*/
# ~: B; ?3 x! a9 ~8 KMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 T5 B9 T& Y# L9 X! q" p. z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& d2 W8 v) o! P, s7 U# X+ }& ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 f7 q( z1 M1 ^+ Q! {$ n| MCASP_PIN_ACLKX7 _; w9 v, k% z6 z' f1 ?
| MCASP_PIN_AHCLKX
" p5 l) Y+ Q+ m: ]* S5 b3 T| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; c0 v# \  M# W5 X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! j. F' o8 u7 m1 D: D
| MCASP_TX_CLKFAIL 8 e* L( r$ K2 S2 L  v0 L* [
| MCASP_TX_SYNCERROR
& n  D) p  l7 w  v1 I$ Z3 R( b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % Q, r3 G& w8 @9 d( }
| MCASP_RX_CLKFAIL
3 }4 {$ ?2 n! g  i| MCASP_RX_SYNCERROR
5 P' e5 X; c; x/ K3 P| MCASP_RX_OVERRUN);" i$ s$ X  g+ x% z: B/ a
}
static void I2SDataTxRxActivate(void)
' ]. \/ Q8 x% q1 p{4 v& H1 c1 H9 U$ ~' O: W* V
/* Start the clocks */( N( i/ y! v% ~  K5 Z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- c7 ~2 i, U: IMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! ]0 F9 d$ v* J+ K2 U4 lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: n# `% D5 L# b
EDMA3_TRIG_MODE_EVENT);6 }( h6 m, |6 i$ P& V
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: K+ i2 t% ?+ ~EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* B- p/ i1 ~2 T1 `3 ~6 j5 VMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 F* f) s( d! p3 }" D! GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) b) F! H9 A, m3 W# c0 Q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ d. O( M2 C0 J+ q: R2 _" @
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 d# v9 b$ ~/ x/ ?1 X' @0 z  p
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) [1 P+ [4 j/ _2 w}

& p; o4 K' I) q# ?* x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. W$ D5 L6 Q% t1 \8 k, I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 15:23 , Processed in 0.039839 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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