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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9523|回复: 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,$ ]2 c6 k( ~; I
input mcasp_ahclkx,
1 p4 ]9 }4 {- k6 k* c+ einput mcasp_aclkx,+ \8 y; P# ?9 ]' j' Z
input axr0,
& V0 s  |3 `% A% b9 [
5 r4 j5 t4 u( a( d, Routput mcasp_afsr,0 ~4 s2 I, R5 @* C) D: P; f
output mcasp_ahclkr,6 L/ b; ~: S1 _) T4 ]
output mcasp_aclkr,5 _- D' m. ?+ \  u  ^* V' h
output axr1,; Q3 j3 x, e8 c/ o' Y! S
assign mcasp_afsr = mcasp_afsx;# e, H8 q/ ?) s8 g
assign mcasp_aclkr = mcasp_aclkx;. G0 g6 n1 Q& O) ~( ~0 a
assign mcasp_ahclkr = mcasp_ahclkx;/ O2 I% f! q! y/ ~3 W
assign axr1 = axr0;
  i) M1 U% }9 b

  x5 i/ i8 h/ o  ]$ w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& c* T7 O  N; T+ @/ D2 o' ~
static void McASPI2SConfigure(void)3 H8 |2 [$ \0 b, R% J$ s5 W
{+ a- b: X$ ^6 d; c2 r' a" X
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" \6 B2 F. ^9 }  pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */8 i' x9 s/ f* I7 _2 d/ N  v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; N; s( j5 P# r6 w: D9 k% q* _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 N9 ]+ ^( O9 i- L
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; G8 t% \) D1 U' O' u4 ~, g. K
MCASP_RX_MODE_DMA);1 K7 [  c+ ?; t- p( ]+ \/ B
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' p/ \" P3 P4 {9 _3 N4 cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 d3 [! @7 B0 b: c9 f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! p# L$ }. n. k# Q. hMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 C; |  a+ f5 F3 A; i" R0 }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , c+ w- `4 Y6 p$ @& Y1 H
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 q6 L2 }: o1 j% J& XMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  a; l! t* h' X2 S$ f. }% xMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ h3 t9 {$ _+ Y0 W4 \/ X, l0 FMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 n4 |& U, N/ Q! u/ y: ~
0x00, 0xFF);
/* configure the clock for transmitter */( q  B2 }$ F% q% w- |; s4 A0 |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' u4 w1 z( L  w8 k$ B4 u3 l
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , H, i( b# r4 O" ^, Q3 `+ O
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ {5 g3 T& z3 {  y
0x00, 0xFF);
/ x# [5 c: f! m) K4 W$ j& J
* C+ v$ `3 z0 h& R8 P/* Enable synchronization of RX and TX sections */
, ?- V: n4 M8 C  i" B6 h( gMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 j3 R& z0 {" u- B# u( o) Z$ \, U5 ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 U+ v* Q  I! p! C
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 V. _# \: d& Q, m# u! H- ?7 L
** Set the serializers, Currently only one serializer is set as5 c5 ^$ ?( H! N# Z$ v8 Q
** transmitter and one serializer as receiver.8 x# [- w( S9 H. W% u- k' L% D
*/
6 X! M- G2 E" U  M6 v! Q+ r9 |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) t: W, X. G6 ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 r8 G: F9 L7 R7 C9 @** Configure the McASP pins
6 U6 n% j, t& p/ p' J4 I) R2 {** Input - Frame Sync, Clock and Serializer Rx1 A" R8 I, k2 U0 U+ Z0 P4 I3 p6 M* L- s
** Output - Serializer Tx is connected to the input of the codec ) [# i  J* w/ d3 P- r7 G
*/' D2 f* k! X. K7 T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 G+ D1 _! y! H* e, z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: D; R0 E1 }1 [, P, }* D& P4 P
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 }  E- f1 ]) h; Z4 P
| MCASP_PIN_ACLKX
& S. l# N% P4 d1 d| MCASP_PIN_AHCLKX
5 Y& t2 M# m: g5 f8 [| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, F  ~0 {  `% k' [
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - F7 L2 f6 }4 h
| MCASP_TX_CLKFAIL / [8 `$ E( @. f* \" J
| MCASP_TX_SYNCERROR6 M* O; U. u$ {) `  y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' }; m% R. d1 |& k& D| MCASP_RX_CLKFAIL
7 L% U1 ?" K1 ^* K  S| MCASP_RX_SYNCERROR 5 ^0 }" B  F6 X3 G/ ^" `7 t' _& P, v
| MCASP_RX_OVERRUN);
, g8 g1 u5 x+ V  U. d6 {}
static void I2SDataTxRxActivate(void)
& U+ T7 C1 T1 ^; `  s4 \% \( K! _{6 Z0 l  X) o1 P# I, Z! a+ J. e
/* Start the clocks */* J7 ]% z9 V) j- F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 @. k3 V% q) {/ cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 \! m% x( Y9 O, f+ H7 _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ `; Q9 t2 y) I, E7 V8 F& k2 V5 O
EDMA3_TRIG_MODE_EVENT);/ N# o/ g$ v- l" {$ A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
* i! S2 n( ], GEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */7 i- T# Y: H6 g: r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 s8 d  l9 F9 C( K3 w/ W% p
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, j( F" g$ c0 A& ?) u
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, `. l9 ^# a; i. vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);' R; F0 K0 v7 e0 v& a! C
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 g, _: p$ o) y6 m& W7 T( N4 A" t0 ?}
2 u3 _- T3 X& T% x' C/ O- }3 a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 u$ M5 ~. b: T% ^) A4 |8 U3 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 17:01 , Processed in 0.038470 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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