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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8369|回复: 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,4 R. A" c' d3 v' u- C
input mcasp_ahclkx,
( J9 v/ r: `. [, uinput mcasp_aclkx,% G) T5 L- m  U1 q3 B  P  y
input axr0,
* ?% H2 R! S0 I% E! B; ^. A& T& H5 q3 j: k4 {; R
output mcasp_afsr,
; Z1 Q6 w4 e1 l& t* X% Moutput mcasp_ahclkr,
$ m. |2 ]  }2 v9 ~" |4 Koutput mcasp_aclkr,
4 j5 o2 h. R- g4 @4 H5 J  zoutput axr1,& f* l# ^+ \' e' H% O5 S% x: P
assign mcasp_afsr = mcasp_afsx;
0 G; v4 m9 n0 P% d9 B  \assign mcasp_aclkr = mcasp_aclkx;
. e$ j" }" K; Passign mcasp_ahclkr = mcasp_ahclkx;# M5 f" f5 s% m! m, W! c
assign axr1 = axr0;
' O4 i9 u9 @) F& x$ i% z
& E3 u& W7 B/ q/ g6 }& w+ _( d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  `& j: K* C: [' i$ ]
static void McASPI2SConfigure(void)$ C" y8 J6 X0 Q5 i  H) j
{; @; q$ |. Q" K, \7 n, g
McASPRxReset(SOC_MCASP_0_CTRL_REGS);- [$ c( y3 J# ^  _% G$ o  n3 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 D3 F8 \2 o- s3 R
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. |2 n5 _+ R2 Q% h# k* W9 a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& M3 K) `' T1 O/ z6 w1 C
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# q3 J1 h+ i9 X: q3 t
MCASP_RX_MODE_DMA);
  x" s( Y7 _7 q2 P1 {" W% Z6 ~5 z9 eMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! D* G' Q3 R: {7 w* y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( P' u3 z/ x7 i6 I1 I- P
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # K$ Q" f* S( {  `' }- K; R
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ O% S+ j# E3 ~  c' k& R8 o3 u! OMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 x. _2 ?+ V* y9 tMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  Q' d5 H6 w! \0 `! p+ {! }2 v# e8 h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* z+ j0 \! A& K6 F8 AMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' m' H6 f7 I2 A: w; ?5 C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ |' D& ]+ U7 Q, e
0x00, 0xFF);
/* configure the clock for transmitter */
1 l+ L: |& p; i4 `% wMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 {8 q- Z9 ]& i2 M( Q& FMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! B, i* m! }& j: i' m
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. U1 x6 L6 U% u3 U7 u' ~5 R
0x00, 0xFF);2 T  Y0 R' d6 h4 H# k6 H' q

9 r0 v: K: r  m7 Z, O  P/ ~/* Enable synchronization of RX and TX sections */
5 P' \. L' P" G/ w" ~# T* ?0 _McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- u% [; z5 O$ u8 l  ^3 t
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 M( C: W" w4 [9 Z5 X7 D6 _
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 I* q' Q7 s; g% I$ x& F% Y
** Set the serializers, Currently only one serializer is set as# o4 i/ b  n8 C! z7 \0 A  l
** transmitter and one serializer as receiver.
: ~* o6 o2 M/ e8 E+ o3 j1 f+ F*/
% `6 _8 G! e$ H, nMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 d& F5 Y5 q5 E1 o2 U- u
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) m, F( C6 X' K, k+ a" k0 L8 |** Configure the McASP pins
% o- @9 n! U9 Z* y** Input - Frame Sync, Clock and Serializer Rx  |- z) y3 E( Y, a
** Output - Serializer Tx is connected to the input of the codec
0 _* A1 `" u6 |* t; Z6 O*/3 A/ H* Z& L; Z( z7 F, R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);0 M" O0 Q* ?8 v3 a
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% W7 {" `' T, _7 DMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 h& ?) u& |- P| MCASP_PIN_ACLKX0 z4 j# E+ _/ q! B
| MCASP_PIN_AHCLKX
9 M; S) W$ Z, W/ @' X" t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# l: q' q: @' c7 [/ hMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & D' P5 S1 p- h: m  I) y
| MCASP_TX_CLKFAIL , y6 d( A/ O, Z8 |
| MCASP_TX_SYNCERROR- [! \& l1 ^# ]* o) n" G0 Z, n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 {% @9 v+ V0 U| MCASP_RX_CLKFAIL
9 W( p0 |$ }. x* @3 p7 v| MCASP_RX_SYNCERROR 9 w7 L2 D) u: ~/ M: ?1 _
| MCASP_RX_OVERRUN);/ c, y; B' f: h
}
static void I2SDataTxRxActivate(void)! w/ D% @& {2 T7 e8 q/ M% I
{7 ]+ m6 f- b5 W: i0 d
/* Start the clocks */
. L- Y: `- ^: c. Y2 KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 U7 [9 P9 M# D$ @
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 {0 L0 v! N3 `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) L' e/ Q* Q3 V6 t2 rEDMA3_TRIG_MODE_EVENT);& p- v' e4 S/ k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 e1 D0 ^- B, f* f% f; bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 w7 R0 s. d5 A$ Y2 r* n; aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, ], V( ^- Y' l8 R7 O7 cMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& u4 N2 K  V  X' j2 F" d# z6 @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 l) }. x/ x: K4 f; ~  zMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% w' S7 D# _: T$ \& pMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% {0 S& t& B/ w9 K5 t6 @: K# s, f$ c}
7 d+ ?0 R, M4 ]- a; P% L4 G- Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 \* x! l) i4 Y  Y, D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-20 17:20 , Processed in 0.037455 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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