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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9026|回复: 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 a) q3 O; z$ K0 l! Finput mcasp_ahclkx,
( e8 A+ E6 o4 a0 \0 u" A0 ginput mcasp_aclkx,' P' E& x0 r0 l3 p! O# e, j
input axr0,; C% Q' \- f8 {& ]; _( P8 u8 ]% t

& d5 |2 j, k) _' Joutput mcasp_afsr,
6 V/ ~: B$ h6 koutput mcasp_ahclkr,
2 ^* t! ^' E4 W3 R0 Boutput mcasp_aclkr,
4 F; n7 f6 r7 l3 Foutput axr1,& p! n& S4 x4 V2 `5 u
assign mcasp_afsr = mcasp_afsx;. r. v5 }! }$ p# m; _  L
assign mcasp_aclkr = mcasp_aclkx;
! {- F" A% ~/ b8 N' _assign mcasp_ahclkr = mcasp_ahclkx;
6 m  \! ?% l7 V9 g! Bassign axr1 = axr0;
( L" a# {& J8 e( J7 ^; `! G

7 R( O2 E# J" _1 g6 \: |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 O' p3 L6 u$ p3 b: K0 U+ x  u
static void McASPI2SConfigure(void)
) a5 D8 s. _; i, ?& T{
: W1 b4 r- R/ N; sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. l4 P9 N2 w6 a9 I$ ^McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* e. N0 x( A3 |& W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; N6 N$ Z/ |1 k  p3 p$ ~McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" H. Z8 B! `/ @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! ~( d9 s2 |# u; E+ m- h: ?MCASP_RX_MODE_DMA);
5 s. }! E/ i+ n- h: o5 _  P& mMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& j' W6 {* l8 P: a* zMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: w- ]! Y- v! z- }& J' G$ U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- O4 h1 H2 g+ h( zMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 O, ^: u. |) X: l$ t4 Y9 n1 D2 e4 FMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, - q0 K* m; n* G, w6 T
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 R* _& I, a6 o! f" R: G2 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" y: ]0 }6 I3 v+ }% y4 @! Q2 `: V: ?1 \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 u/ h7 @. W& `/ Z5 {9 X. U$ c
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 [; @3 M# F/ T: m0 Q' E$ w
0x00, 0xFF);
/* configure the clock for transmitter */7 z+ O) G; L' z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);% l* f2 {0 E6 }" ~  Q+ D$ a
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 g* i1 `) K* P! K5 g. c
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- c' B4 S- J. X, B4 m* n& i
0x00, 0xFF);7 O( T4 \2 E3 o( M! M# }# d

8 ~; B' [- l. |8 m0 m/ M. S6 o/* Enable synchronization of RX and TX sections */
, M- @/ I* c& w6 ^% a; cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 z2 ?/ Y) ]/ [+ w  u- g- {
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" D( [% @8 x% t" u
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% @8 f* B; a1 S- j0 {. c
** Set the serializers, Currently only one serializer is set as4 B: B9 X5 z  V0 T9 Y& _9 t5 D
** transmitter and one serializer as receiver.
# a& P  d& ~9 b3 {; u5 k*/1 H/ a# L  B1 d6 o- @" I+ J' H' \
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' P% G3 L1 [8 Y4 ]; |! a
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 ^8 T% y6 L1 n/ ?1 O5 j
** Configure the McASP pins ' n3 `1 Z5 g! F* F, l
** Input - Frame Sync, Clock and Serializer Rx
& r1 t8 N: T; c$ W** Output - Serializer Tx is connected to the input of the codec
2 t6 u* M1 H# l* K% L* M/ z; u*/. \6 ~& R% ~. }1 r
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 o7 S$ ^5 P# _9 V9 n4 @McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  f) [  b! y/ i; W- Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  x2 r3 P+ n, s| MCASP_PIN_ACLKX
' p! ~1 y5 m  m  l, Z$ y) t/ r| MCASP_PIN_AHCLKX# {7 h0 E: c1 ]  u% W
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( k: S" ^% k2 V5 r$ J7 Q9 Q& \McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! }& ?6 O& Z9 m( h. Y| MCASP_TX_CLKFAIL
$ h5 B+ l5 i7 L| MCASP_TX_SYNCERROR, r4 T; \. K' P4 V% g) A4 G# v) F8 n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 ?/ D# t' o; {
| MCASP_RX_CLKFAIL
5 r# B; h: t( h5 _# R. ?5 _3 g| MCASP_RX_SYNCERROR 4 S6 z$ J/ Z9 m
| MCASP_RX_OVERRUN);7 {8 w# @" ~# D* k
}
static void I2SDataTxRxActivate(void)
9 q1 Q- q& L# D1 w! \- G4 S{" f6 g! e+ C  h; e9 ~
/* Start the clocks */) L; u& M, T! Y5 n& X9 K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! [' B. K5 q' y! B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 Y" x5 _. ]8 ^- p# @5 B; N$ aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 ?: T2 N' @$ m5 m, IEDMA3_TRIG_MODE_EVENT);
6 I) D' D. m( yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 k; b; G$ ~, o/ C. z0 g  @$ BEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- C0 o8 X6 {. ]3 t3 f) {; R" W7 h2 zMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 E, Q% ?- m0 v1 Z4 \McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 ~, S5 y7 j( l4 \; @1 T
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 ^( F6 F3 I0 `8 W* h9 e. |1 f  GMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);! |9 g9 Z& Z0 I0 I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 V4 F/ G. O& c7 s: T
}
( u- p& O. J) R4 N" h# B( h4 Y' M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

) {  x- ]0 L; x# w6 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-14 10:59 , Processed in 0.036832 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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