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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8654|回复: 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,
9 R5 g- I3 I9 e. V/ d. Qinput mcasp_ahclkx,8 F; `4 e3 h  p. {* [& T
input mcasp_aclkx,
& c5 U% S+ O6 N/ U" uinput axr0,
4 O3 n; V1 s' l, R+ I) _5 }% J/ [. j7 C$ j. O+ u
output mcasp_afsr,
: K4 S" I# K% d3 uoutput mcasp_ahclkr," e8 V/ F! C: k# Q! Z" v) f
output mcasp_aclkr,) \& `" d/ }1 i* B
output axr1,; u# S$ O! R- U% `3 F; G; G/ d
assign mcasp_afsr = mcasp_afsx;, p6 |% Z' c2 S9 \) G/ Z$ e
assign mcasp_aclkr = mcasp_aclkx;
5 C7 F, V" e6 D+ t( Gassign mcasp_ahclkr = mcasp_ahclkx;* E6 {5 t6 y' C: b0 u9 u
assign axr1 = axr0;

5 `7 Y/ T$ j4 Q' h5 N1 b
" W. I" r1 p9 m1 V, `, O# Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  G6 P5 o( d3 |( ~6 _$ x2 |5 X
static void McASPI2SConfigure(void)8 {8 i* s) K2 _, _7 W" ?4 F, c: I
{
! ?. Z0 p+ O. |/ GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 M2 G) K; |  k* |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 W$ k9 ]( p5 M; {. LMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. G. a: ]% \/ A/ YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 ^& n' b" I3 S3 d3 nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! b  ~" X1 P5 I3 U) QMCASP_RX_MODE_DMA);9 \2 L4 j9 Z! I! Q8 X: i! B+ Y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! h4 G7 K- f) |7 vMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 a  A5 d% m' O+ RMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ [0 t6 B/ J' ^; `1 H3 n: xMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
9 h$ v+ f2 ^4 Z4 e& \% w5 {/ pMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # o3 G3 m! Q" @0 j$ h' W/ j8 W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 }% g, _1 ?$ u; a, U" o: i7 FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" s/ s% P0 o& `2 m' xMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 ?# M5 w7 _9 F! yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 O/ P5 Z% I. _# k5 k# B
0x00, 0xFF);
/* configure the clock for transmitter */8 z5 N' f1 c* e  P# ?
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! Z4 R9 ?. U8 I( E1 j& x9 f; l
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ H6 f6 g9 U4 }8 @% A2 VMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 @% V9 K+ F  Y6 r( n: v0x00, 0xFF);
0 W5 m3 t# N& V2 ]0 n5 ~
- J) _# u& q( v/* Enable synchronization of RX and TX sections */ ; c6 K# E$ Y- _4 q, _
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) M# ^( L; j4 K5 }! rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 f- |) d- o0 l8 g( E; S8 k! ^% J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 F" m  u, u) Y" \% y* ]! w9 E
** Set the serializers, Currently only one serializer is set as- Y+ N* ?# _* v$ k
** transmitter and one serializer as receiver.
( ?8 H, C( U; T& n5 n& }*/+ c4 B2 h" F4 Y9 w* f2 P# M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 M5 C1 U& z$ @3 m9 J
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ G5 ]5 L' H/ E! ?7 M2 t, m% K** Configure the McASP pins , k% L. c) [$ }( Y4 m6 W8 ^
** Input - Frame Sync, Clock and Serializer Rx
# j7 x1 ?) _+ S+ z! @** Output - Serializer Tx is connected to the input of the codec ( y. J+ |- u, T: n0 D
*/: m2 U, ^) F2 h1 @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 c) l9 b* ~: b5 y/ d  [! rMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) Z- w" t6 K  ^- D: p" s  Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 S0 W* s; P  Y" y) w| MCASP_PIN_ACLKX
+ T+ K0 [5 x+ S- j1 p7 r| MCASP_PIN_AHCLKX
/ t, [" B1 ^2 `. T| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% E# y6 `/ D# q9 U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ u  t& r1 h( O  m- t6 }* J8 p5 C| MCASP_TX_CLKFAIL
5 |( b" x! f* {+ l, Z| MCASP_TX_SYNCERROR
; C5 a. u. A6 M0 v, d" r| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 J6 T/ h* v5 d$ M4 [4 g" j: u' K
| MCASP_RX_CLKFAIL
% X( D* w. K9 z) K( T4 T, @4 z1 l. e| MCASP_RX_SYNCERROR
5 Z, V' d: P" I) x4 p| MCASP_RX_OVERRUN);
/ ]1 ?4 z! |6 W2 w}
static void I2SDataTxRxActivate(void)  G$ `& j$ B' I6 `! ]1 p8 w8 X
{  X6 K$ h& U) K# k5 ^: g* `" s' M
/* Start the clocks */
% ]5 t; ]' N; aMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( u' i6 k& \+ ^9 b, G! m, {* x8 X
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& M. C1 h8 r6 E" r' z" z. p5 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 ]4 _# A. e9 @; T. }6 C  P) Q
EDMA3_TRIG_MODE_EVENT);
& E) F  M( }1 Z& X( @0 iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 }' i9 d4 `, t4 h
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& {1 L! J; z. r* XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. E' D. m$ I3 f
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. q7 Y+ K( S2 y; ?- u! Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) A4 J& u; p4 v& J, j4 [* v5 _# k3 p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ ]! s5 s0 u6 Q& s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 |3 m4 ?/ ^2 K% c8 @8 h
}
! G# ]6 _. z* R4 K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 a: M3 w1 n4 P0 x0 v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 13:31 , Processed in 0.036899 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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