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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9180|回复: 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,
7 f1 l! S) ^& y9 N2 M' U  u6 Qinput mcasp_ahclkx,
9 @: T& @9 `7 }& `input mcasp_aclkx,
/ i: O9 L" R8 M/ J3 f5 D" Ninput axr0,
$ P  e, |# |2 k) _3 e  i1 H
8 \- X) J9 N, }$ ^" o  p" g6 Aoutput mcasp_afsr,
, C1 M1 P6 Q0 ?, W; W& y& P( [7 x  routput mcasp_ahclkr,' Y4 s" Z/ G1 G- w
output mcasp_aclkr,! `- A7 x7 Y# W) }/ u5 _
output axr1,
2 k/ S6 u0 p2 E& I! S0 q* i
assign mcasp_afsr = mcasp_afsx;- t% I! K. C5 T& L. C; x: f
assign mcasp_aclkr = mcasp_aclkx;
) ^: H7 g' H# q8 cassign mcasp_ahclkr = mcasp_ahclkx;
" }7 d/ v# I( ^$ w- ]. wassign axr1 = axr0;
: H! b( O0 _! u. Z& H- ~
, q: ]# N5 Z3 ?* K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ k# C. `7 e8 A% e$ b& _6 `
static void McASPI2SConfigure(void)% d$ m" w/ P! ^$ K  o6 W1 Z& x# [. t' t( K
{
8 }$ _4 d3 B" |McASPRxReset(SOC_MCASP_0_CTRL_REGS);
: E( W* [. S- ^7 ]$ u4 [McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ ^2 p6 n4 y( E
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 `1 f) k8 C3 f* S- d% P' u* e# b  z
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# |) c8 X& e8 F* d! k  q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ F# E" G5 x% H7 x: dMCASP_RX_MODE_DMA);
% R# w% m& [! @/ ~( f2 zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# l1 C1 D8 x/ a7 \% l: \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* ]: ^5 X( G! nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
$ F- E5 c4 _& _2 Z+ zMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  E% X) ]6 e2 m1 N/ p5 NMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: V' [3 o! O" r  tMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# G! h  S  s2 C- gMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);' ]8 O6 b6 x( Q9 w0 {  h# L& l
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, Q4 S4 i/ u1 }# |4 g9 r1 nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ X5 v2 t; s. A
0x00, 0xFF);
/* configure the clock for transmitter */
5 p: }5 U6 ?& {  P8 Z& bMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& I3 |+ z/ Q' ]8 G* r/ Z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 H* b& L4 N" F: hMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
5 ^! j& M+ {4 I% l$ B0x00, 0xFF);! P2 b3 L7 e0 F; |# ^+ Y0 G1 O- R

5 b3 G6 Z& u( k4 ~" O/* Enable synchronization of RX and TX sections */
1 d) Z; B* _$ m+ ?; `! p  cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: f. v% Q6 h; u& c4 ?1 y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 s: Q/ F. z& G3 x7 h+ v+ Z! P
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 O5 K; a4 \; i; A6 ^& }  a
** Set the serializers, Currently only one serializer is set as
% s7 ~6 l& v3 p$ u/ H1 m7 p** transmitter and one serializer as receiver.2 H( L! r) F- h' O: `  Y
*/- T% D0 z) B/ f
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# J0 Z* V; j  D* a0 S
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ _( ~! r, Z9 K* k** Configure the McASP pins 3 ^/ P' X8 Y) g/ v: l& ]) L
** Input - Frame Sync, Clock and Serializer Rx- S) g# f# M# B# Z; ~" c8 D
** Output - Serializer Tx is connected to the input of the codec 8 k+ z" {: z6 q; O. _
*/8 s$ |/ t& Q* ^9 Y& ]
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' C2 z% n/ B5 u, o  n' EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: j3 G! O/ f6 c8 t; x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% ^; U# Z: s9 u1 y$ p1 S| MCASP_PIN_ACLKX
9 t$ G" O7 ?/ ^  Y| MCASP_PIN_AHCLKX5 R) ?) P$ B' R0 e* y' S
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, u, n( \5 j" p5 y* lMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) r. Q2 m! n% }+ o
| MCASP_TX_CLKFAIL 8 A/ i! {$ ]3 ]( w5 m
| MCASP_TX_SYNCERROR) g: L7 G: V& ^0 V# J* t( d1 u
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- c6 s) {  S' c8 K9 ?* T| MCASP_RX_CLKFAIL
0 a) w: N  B# N" P3 o. ^! I| MCASP_RX_SYNCERROR
) ]3 Z+ ~8 u. e1 t0 S, N2 W, z| MCASP_RX_OVERRUN);7 p8 y. q( ]# o2 l$ s( D
}
static void I2SDataTxRxActivate(void)
8 Q, h: G: t# c8 k. y{0 h3 h: O# J% U) w
/* Start the clocks */+ Y3 A" p4 z8 y4 Q& ?: Y/ N# }
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
: B# B% x1 _: F2 r4 EMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; f, y7 |- ~3 g8 F& nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- R6 r9 g( x6 `+ E# C& x- {EDMA3_TRIG_MODE_EVENT);- \# N" I8 _  E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 E' P; I) m% z, {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 K. l6 `# e3 Z3 v7 V  e; rMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 \0 u5 O9 U* E0 G2 i! H- }1 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' _; _& j5 C' H% A& E
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 K+ ?, b+ x; Z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' y. P  P( g8 E+ }( r4 |
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 A" ]* e( w; q7 g
}

. Z. i  H/ S( b+ r) u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" a- p  }: a* a1 @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-26 04:15 , Processed in 0.037323 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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