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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11275|回复: 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,* a% ?4 Q8 t; F# @) Y
input mcasp_ahclkx,+ o; a4 k& j9 f5 O# f. _
input mcasp_aclkx,; X3 G" `+ a/ `, x5 u( r
input axr0,
, c+ \' |7 q+ ^( _& h' a
4 e; ]1 m) }2 b5 M! ^7 {output mcasp_afsr,
7 ]- b7 R" \+ V" k/ Z: `; F, Q; voutput mcasp_ahclkr,
' j$ a0 q2 g5 K" Soutput mcasp_aclkr,
  u4 {( m3 J% I! x" moutput axr1,4 M/ t. ~, h; `1 c& V
assign mcasp_afsr = mcasp_afsx;
2 q0 X: H; j2 P. qassign mcasp_aclkr = mcasp_aclkx;
+ p" R' v! d0 R7 @. F& Aassign mcasp_ahclkr = mcasp_ahclkx;
1 d* y9 M+ Y& i* i& q; m2 J2 V. {assign axr1 = axr0;

1 ?0 }$ s6 O: E: y1 }3 Z  _5 M- _/ V3 T: k0 I$ m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 X$ i( z2 U+ ]8 z: ~
static void McASPI2SConfigure(void), O2 h5 D8 W' n5 X9 K6 ~+ G
{  R: t  t% a" C* Z2 ]
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 L3 q  \- B. q7 `, WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 ]! N% H" n; \0 a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: J& J- K! i2 \+ _: {5 b7 Z* [McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: v0 ]5 A) n4 n( s9 a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! ^3 ~. {+ H" B3 P" d* S/ W: ~1 K6 RMCASP_RX_MODE_DMA);
* ^. d  ^/ z$ W/ P3 W: fMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- x' V8 Z1 C/ @; w" I4 R3 oMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 l6 i' V+ L! X/ J8 d$ S1 T
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 V/ z6 m% ?  S, h5 FMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
9 `) a. m4 @- K4 v9 Q+ XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , s  s$ t& q! }0 W5 P8 ^2 j" s
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, N, o" a3 J! K7 o  n* i# |+ ~# _McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 b& W3 z7 c0 y$ r' @McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ K$ \. r) X0 O. N/ J1 Z  I. [* NMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,3 G( v* F$ N+ M  E% B& d. M
0x00, 0xFF);
/* configure the clock for transmitter */
# ~1 d1 e1 l) c( O; vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 l- J' h( s5 o* _, o
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + @+ _* I8 I% j1 f
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% }' u8 d4 h1 ?+ N" r/ o0x00, 0xFF);
0 J# P. @- r# i% r' ]# l$ C, x/ H2 C3 n4 M& S; y! ^* b" ~& s
/* Enable synchronization of RX and TX sections */ ) X  _. M# w. z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 e( _9 X% E% i; g
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: t' ^9 S5 T' K6 GMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. U/ L( z" u2 ]
** Set the serializers, Currently only one serializer is set as
2 ]' c: l1 t1 E5 e1 @3 F% l# b** transmitter and one serializer as receiver.6 r0 X: j0 ~+ G% H
*/
5 Z) j6 D/ f+ o) Y0 pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);; Z1 L$ C9 U0 {( F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' ~+ h/ r+ V8 h( W** Configure the McASP pins
- r6 {7 b& ]! q1 \; w0 Y" T- e** Input - Frame Sync, Clock and Serializer Rx
0 m7 l1 L0 C" y+ x3 F8 d1 d. A** Output - Serializer Tx is connected to the input of the codec 7 l7 Z  g& a( V- m! q+ U0 M( b
*/
6 C% \3 T: P9 K9 d5 xMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ N  Z) M2 S5 N9 ~' _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
- Z" V3 A6 G* {  \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% |4 C& k0 q; j& y5 P! L& c| MCASP_PIN_ACLKX; E" [7 D3 Z2 n4 Z: P
| MCASP_PIN_AHCLKX
( I5 s/ W5 t' w2 W, ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ H7 D* j3 ?4 A! |( N# R2 R
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 Q2 l5 T- D% ^& }, N( r' \2 m
| MCASP_TX_CLKFAIL
0 W. ^& O8 j$ ^. k0 h* e| MCASP_TX_SYNCERROR5 D3 g& I' t' Z- s% _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 V- b( U2 `* \+ `3 j9 O
| MCASP_RX_CLKFAIL
8 N7 p: h6 Z  O! x7 c2 s| MCASP_RX_SYNCERROR   f- w) ^/ C9 L# k8 G1 a2 p
| MCASP_RX_OVERRUN);  t" C* |0 i" u
}
static void I2SDataTxRxActivate(void)5 L" ]) A% Q$ A2 \) o
{0 @- @/ B/ ^' N
/* Start the clocks */' J7 w# l/ r: A' C; Y) q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 l: x$ d0 _( }; y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 `% s, |# h8 f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; B8 O7 s8 _0 {# K- U, d8 [EDMA3_TRIG_MODE_EVENT);+ ~* f! H+ L3 W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . H1 a+ M( ^& K* j# p
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 U( V0 e7 n- V- H' fMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 I- p+ h! U( a9 N3 FMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  y; y2 s1 i2 B" D" h
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& @9 b: e: _! A+ Z3 y9 GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);- i0 O/ D2 u/ H7 O; S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ u- o' ^) N8 I) p
}
( }( G! M. e9 C6 h7 N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) w3 Q+ F% k9 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-28 23:52 , Processed in 0.039494 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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