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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12180|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,/ `: Z: c1 e  S4 q' V, E( s
input mcasp_ahclkx,8 m7 P7 Q7 ?: T9 W
input mcasp_aclkx,
- n% f; `2 v  ?input axr0,8 I* W3 s/ v# \' |$ S3 N1 A
2 U; E; t8 \" N& o
output mcasp_afsr,+ ~9 d  X$ a! G" U- a. R
output mcasp_ahclkr,( s. V+ u1 B' M) D% W3 V2 @* l
output mcasp_aclkr,4 [# t7 r: ~1 T6 [8 I( c0 L
output axr1,9 i: A. d! R6 _$ Q, d4 R
assign mcasp_afsr = mcasp_afsx;5 D( U' E& M/ y+ f
assign mcasp_aclkr = mcasp_aclkx;# C: [# F- O0 q) a  @5 I) E
assign mcasp_ahclkr = mcasp_ahclkx;# k$ K9 l8 B% d2 J9 q
assign axr1 = axr0;
- ~6 p7 S. ^' |% {

, ?& K  I4 R3 G3 U7 u1 ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. P6 ?5 i8 M5 g- g- S- B2 }4 U: X
static void McASPI2SConfigure(void)  c8 h6 [8 T: q
{
  B2 t) y% }% R4 hMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# V6 n. Z4 {. h3 u9 kMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& g, E. A% n8 f* [, T, ~McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 r) ?- g2 L6 SMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 Y8 z: N7 k8 b4 h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ z# h1 H' {9 r
MCASP_RX_MODE_DMA);
. k/ r- a3 k" d  E5 h. o, QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( c5 c" B5 C  f; h0 r8 \& f
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// `: z+ A$ n" e9 L2 K
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
3 Y1 N+ q; Y- w+ C, fMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 g" x3 V, l1 s  N) L) yMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
, L7 [# o; w  T! P) KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 _3 o5 g0 t7 V0 G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 u% \0 t; ^. S, |7 [1 b. H- EMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 J$ A# `( m# s  E7 `* V" K
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 I. Z* Y' O; G8 @" @; \6 E0x00, 0xFF);
/* configure the clock for transmitter */  ]- P. }4 M8 w- @) q# J4 [+ B2 b; Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# Q  E5 ^% {9 W: X0 ^% N0 i
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" P8 x6 A3 ^6 Z( ~' w: U+ p2 kMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  X7 Z" `* g4 Z! a: f+ C2 H
0x00, 0xFF);5 d9 ?* X" S* H  t! o
( T: O5 e7 e; z, R
/* Enable synchronization of RX and TX sections */ 6 n7 Q2 h5 Y( c' \
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 |9 b) P% W0 M$ hMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);) N8 E$ X7 }1 z* Z1 M
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 ?& e; P0 l+ o) i8 E
** Set the serializers, Currently only one serializer is set as$ M: _$ i. G0 `
** transmitter and one serializer as receiver.6 o7 R, ^6 g3 N1 W) z7 H: M
*/" D" N" [1 B! n! @; C+ j6 u
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 m/ I8 `0 u# t9 M  ^
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ l) v6 G/ g9 x7 b7 N
** Configure the McASP pins
; u7 C5 q5 q! ?) U0 O8 Y) q2 c** Input - Frame Sync, Clock and Serializer Rx# I) N+ B' ~3 ^7 Y
** Output - Serializer Tx is connected to the input of the codec 7 N  w$ h8 V  X- }: Z7 |' {; w* W
*/" \9 c$ K9 e+ q( k. p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 C! K, o- v8 u/ eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 J# d5 V5 _% a2 `6 ], H0 L
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" r. `9 G# o" ~3 V3 B
| MCASP_PIN_ACLKX4 [* E: F! R4 X4 b' v+ H
| MCASP_PIN_AHCLKX
5 w9 X8 g2 t1 l, w& [% \5 N| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, v, l5 q2 q8 g+ y6 m; o& B
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 e+ T2 T& M& L' K6 C
| MCASP_TX_CLKFAIL
) C  f+ T- T; C5 `  l& _! b| MCASP_TX_SYNCERROR) V( w, p, c. b7 n7 p9 k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 D) }; a% H' v" p) p# Z
| MCASP_RX_CLKFAIL
/ l* ^$ H% f5 n4 F1 Z9 u' S4 }# u| MCASP_RX_SYNCERROR
* i5 S  t1 h" N" ]4 Y| MCASP_RX_OVERRUN);; [! k- r: S) j3 s/ c4 e3 G
}
static void I2SDataTxRxActivate(void)
# }: E6 A% y5 ^1 L# z' r7 C- e{* h, v7 A$ `+ F+ `
/* Start the clocks */$ d+ g. W9 Q; x$ o& ~9 i4 }
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 [3 Z+ J2 b' a7 E
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- K$ a+ S8 n& SEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 z; O+ l5 o3 N  O* `# O- sEDMA3_TRIG_MODE_EVENT);/ N$ R5 n4 h( Y! n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + ?, X, N9 q  ?, P) y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */. C! q( U/ e9 f3 q; j
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 T" Z9 v: H! d8 t5 s5 R
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( x- f$ K% C; x0 R4 r  T+ k( r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// j  y9 o. }% C
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 c& V7 `$ _# z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 M) f6 b: u/ k( H: E: q
}
3 ?  r; D5 A+ s; r5 @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

+ h% m# O8 ~" N7 ]4 I/ l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-31 16:17 , Processed in 0.039116 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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