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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8917|回复: 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,( o4 v4 z/ r9 N1 [! D
input mcasp_ahclkx,
) c+ }' V! g) n+ _# I5 C+ Qinput mcasp_aclkx,: I6 R- {! P! C( m0 x3 a
input axr0,
4 ^" {/ ]  Y) n. ^4 R. W/ G; ~: t* j* X, h. _3 q
output mcasp_afsr,- d  q1 r/ A8 W, L" @  ]- |/ I
output mcasp_ahclkr,: Y( s3 r( O8 d- Q9 N9 V. w
output mcasp_aclkr,3 V. x$ I6 I+ I9 c$ \+ O: u
output axr1,
3 @: q3 \& H. i3 f% M! Y
assign mcasp_afsr = mcasp_afsx;/ A+ P+ k2 V3 Q2 ~  B
assign mcasp_aclkr = mcasp_aclkx;9 c5 c8 T, a5 Y. e8 I1 U
assign mcasp_ahclkr = mcasp_ahclkx;, J# O8 G+ P. S7 ]) u9 ?; C& @) S/ Y+ B. c
assign axr1 = axr0;
5 z1 f4 H" m# N5 o3 ^1 K8 h% B
0 S" {5 Y' E. C- l* h6 i4 Z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

) O4 V# r& h( [- J) D
static void McASPI2SConfigure(void)
0 F5 n$ |7 ^- Y% A{
5 u0 [  |( a' N/ v! T/ MMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 d( k" R9 }  ]0 Q! H' ^; ^. AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# C7 J5 X/ M9 dMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: V# v: p( a: Q7 J3 h  Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' J3 f  V1 S' t9 jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) E0 m/ K& F9 C& o
MCASP_RX_MODE_DMA);
5 ]5 ~1 O0 B5 [& C3 N- r% i- g& XMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 L6 l, g" q0 L  EMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# I1 y1 k* q% I
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : G" E: B' f$ v8 B: v
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  x  v4 k1 ], B2 c  M6 e, ~
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 f: A+ c' F- E$ ~/ X" a
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* {) ?  Z- O: @" b7 O( t$ y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) d& Z3 N8 M  KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* d; z1 e8 i" C0 }/ I  Z/ S4 fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,3 F$ g# X) Y- p, e1 V" V. o, q
0x00, 0xFF);
/* configure the clock for transmitter */
0 L* A  Q6 U, O1 }McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 G8 Z( x) v! B: w
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. t6 I% M4 B; x2 `% C& q$ D, nMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 }) ]- G9 k# Q
0x00, 0xFF);
: r' Z/ c+ K$ E+ T% d0 H3 F
2 A: A. g, |2 \8 r5 p9 K9 F, ^/* Enable synchronization of RX and TX sections */ ' ?# S: b) D! x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */# _- |( p4 |3 o) p, e) b  w% V
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: A3 B# a1 A3 L$ s4 N4 S3 N3 _/ M& r, W# bMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 h, W3 O" K: L' ]$ V5 M** Set the serializers, Currently only one serializer is set as
, r/ s, q6 D- e2 ~1 V* `** transmitter and one serializer as receiver.
1 p2 ?; R; P/ d/ g- G2 R9 x& c( E& R8 @*/) Y' r8 Y7 p2 G) r4 U. r8 T- m5 m
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# A/ v; I# D  k7 W- [0 ~  NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 o( `: C7 h2 t  d  ^2 f+ r** Configure the McASP pins ! {3 d0 E1 K) Q. C
** Input - Frame Sync, Clock and Serializer Rx& G$ O: i# q$ ^: G! P! o+ X2 |: X5 ~
** Output - Serializer Tx is connected to the input of the codec
( D. |0 U: B! A' B" c8 ^0 J*/
; m6 K( B) L. Z) r3 d1 FMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) q. [9 y, W# w; J* q) _1 zMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 k/ G) y# \2 S8 U. t8 Y+ Y( ~. jMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 @. h" _; P# x8 m+ f/ X/ ~3 D| MCASP_PIN_ACLKX1 H5 A- H8 ~7 @0 a- P0 l
| MCASP_PIN_AHCLKX  U/ X" V. \( q! B2 {8 L
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& E% j; L$ U; H7 yMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ A  u  U  f& A9 r" h& M2 r2 ~" h| MCASP_TX_CLKFAIL
" |  y+ G) q1 T. l* a# }- ?| MCASP_TX_SYNCERROR6 ]! e8 b* @: n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' ^1 |. K# z' ?1 N1 U| MCASP_RX_CLKFAIL/ f9 g& o" [0 t
| MCASP_RX_SYNCERROR
% m7 w0 F0 b4 s| MCASP_RX_OVERRUN);
+ o7 X: q  I# O6 {; |3 Y}
static void I2SDataTxRxActivate(void)9 b, e& D6 s' L
{9 c6 d# \6 D( {7 x3 O
/* Start the clocks */
9 q; B; d! x/ G+ u4 n7 v: QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) ?% V4 n, o4 }% IMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
( C+ |8 `' b; e4 R4 TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
: j8 G* g( U4 C! JEDMA3_TRIG_MODE_EVENT);
) U  g8 ^, Z5 P  KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 ^  v# p! P8 t- T* e! L
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 R! @6 t2 u5 T' q" RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 p5 k- t2 H" c$ Z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, a" r  c( W' C5 f9 Pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# S5 b' A% Y8 L
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 w1 [- A. {, W1 |
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ Q2 x3 I$ H5 W
}

( W6 I$ r* C, _+ Y/ P7 T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( p8 a( t7 s1 g, R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 06:02 , Processed in 0.038576 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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