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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11287|回复: 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,( X8 W3 F/ h+ `3 p7 `5 o
input mcasp_ahclkx,
5 k" l) `5 }% V9 |: o7 F1 ^+ einput mcasp_aclkx,
; k4 C8 d% ^' Y/ C! n- Cinput axr0,/ T/ M' \2 p4 a3 R7 t+ j( A

! L5 e! t# q1 C+ \$ u4 E; W7 joutput mcasp_afsr,- a6 b9 L/ z7 |+ U1 E$ T
output mcasp_ahclkr,
3 L8 S, N2 p, A5 Eoutput mcasp_aclkr,; a: z& k- ?* o1 @4 T, i7 ?0 Y. G" i
output axr1,
/ o  w% b. j" k% C" W( O3 V
assign mcasp_afsr = mcasp_afsx;, O- u0 G. g& c" u
assign mcasp_aclkr = mcasp_aclkx;
! q/ r, A) O* _9 j/ T2 _; {assign mcasp_ahclkr = mcasp_ahclkx;+ t+ g, Z) l) G3 V( K3 Y2 A) W/ H
assign axr1 = axr0;
3 a4 X. b( [- _1 d$ g: I

, M* h+ y( p) X/ i! k' G+ E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 d. t& N7 o( Z6 ]
static void McASPI2SConfigure(void)) P+ z$ P3 p3 a7 y+ \# K( M
{
6 h( ?# s* W4 WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' m) E% O' P$ qMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 r/ |( S; m( o, bMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 j( o/ |" b0 H3 S( [McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( j6 [2 ?3 q) m" b0 e# fMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 i) @+ i/ q5 p; JMCASP_RX_MODE_DMA);
& o2 J! `& R0 x; _$ PMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- Y/ {% A! @# T7 n/ h  c! b) }* aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  L1 Z& ]/ B/ ]% |: ]
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: l2 t) X3 j" e  W& OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! w: Q6 D6 c# a( X1 {' Z$ e1 V
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / f; A; g+ l+ x
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 {8 Z8 l" c# E" R* k% x4 O
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 A  l7 E7 h; \$ }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 G- w" B( j8 ~# w$ V  W" MMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 O0 E/ D- N' {0x00, 0xFF);
/* configure the clock for transmitter */
; E, R& S. A, DMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; T! p& t5 U  s" C# G! Q& k9 B+ ^
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 c8 w7 z6 m: e9 a* i6 ^: I" L+ Y7 yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 Z3 x$ H) E$ M
0x00, 0xFF);
( j& `$ d7 E; N5 F" h: q; `' i& ]: f& R( [& v. e0 d
/* Enable synchronization of RX and TX sections */ & J3 S: N8 c7 D/ U# E% ~% ]  l/ e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- G: D4 z2 o8 ]8 OMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& B/ E# K! s3 \- a) EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 z, D. z: v% X! C0 ^! u( U** Set the serializers, Currently only one serializer is set as
" A4 Z" ]9 _4 S  z# ]7 W7 b+ v** transmitter and one serializer as receiver.
, z% L- {' }' v  y8 d1 i*/
- H/ U' j5 T- n" j* z# hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 T6 ], o% V* G+ u: q& YMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" X1 K$ f" T  X' R+ T
** Configure the McASP pins
% Y4 F$ n8 R# Y$ O** Input - Frame Sync, Clock and Serializer Rx
$ I% }& y, y! V% N% q6 y** Output - Serializer Tx is connected to the input of the codec * {/ Z+ I' W1 ^) x. m, T' G0 V) R
*/
2 F9 L/ b% F7 U0 f0 k" Y/ GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) w5 k* ^0 K) V" kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 ~" o* j) s/ T! x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 s/ \  v# a. R" P" i| MCASP_PIN_ACLKX
. ^1 B) d+ A# }! }3 X( r9 f( d| MCASP_PIN_AHCLKX
/ }$ V: k3 X5 w; F" X3 i| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( Q* M6 p% x9 B6 L* k5 v2 RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ w$ s% p. z$ x: M6 {8 Y8 L| MCASP_TX_CLKFAIL ) Y5 l$ L+ u: t9 P" L% I% ~( y1 o
| MCASP_TX_SYNCERROR2 F0 @6 h0 d! l
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" I' [- W6 s4 s0 U  l: g7 A7 Q| MCASP_RX_CLKFAIL7 Z( N1 X) N, p) J
| MCASP_RX_SYNCERROR . |9 H* r: j, ?8 y! h: y
| MCASP_RX_OVERRUN);, l: j8 x# `' U6 F! ~2 Q$ e
}
static void I2SDataTxRxActivate(void)( A  C+ R) V3 I) I% w" r  u
{: S) a- i0 R  E/ M
/* Start the clocks */7 |: m2 l! W4 H- B: u# _: A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ h9 N5 [  Q8 q5 |0 Z; ?7 ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' G" g) H3 N" v  c& B/ ?, z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" m& I3 U: i' B2 P0 J; ^  oEDMA3_TRIG_MODE_EVENT);
/ Y. Y% X" _3 `) p; e  eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( _; T/ P. S5 Y( p
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& m5 j. e1 c5 e$ [$ hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: B( u" w- {% hMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */4 j0 r$ o- M2 b" z. v
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) P5 {) n0 V( q9 K" JMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! U$ K/ V) Q. ZMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
7 H: U5 P0 _3 T4 ]# ]3 {}

+ i5 P, J4 C& M' U; G( Y* z& |# t- Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 P+ w: `' o5 h5 G6 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-1 07:32 , Processed in 0.038424 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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