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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
0 \0 c' F7 M) _1 _input mcasp_ahclkx,+ H+ K- x: [  m1 z- K
input mcasp_aclkx,4 g( _; n, w4 }8 n
input axr0,2 t4 N9 B; k  L+ ~, r( L& R
5 ^$ `; l' p" A3 G2 F; L
output mcasp_afsr,; ]9 N" N# c, n. z3 g1 I5 N  `
output mcasp_ahclkr,* L; ~, h# z: |8 Y8 q1 \
output mcasp_aclkr,
( w- h. j' T9 V4 X/ ]  _output axr1,1 Q+ _* m3 m& K* g4 o' {& I9 x  Q
assign mcasp_afsr = mcasp_afsx;! s5 ?& z; j8 [: \8 p1 }
assign mcasp_aclkr = mcasp_aclkx;6 K1 F* e: D- v" B6 g- w' ^
assign mcasp_ahclkr = mcasp_ahclkx;7 a2 f2 `+ G. Q' i: g
assign axr1 = axr0;
+ L3 o- R- G" c$ a

# f. p  i  u1 Y/ }% r, v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! [% ]+ ]0 e1 N2 G, O8 v% o: f
static void McASPI2SConfigure(void)$ C) y# c9 I9 Q- i' u
{
9 Y& r; K3 x: P/ `McASPRxReset(SOC_MCASP_0_CTRL_REGS);; O# U" y0 s. @: {
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- n: b. h- H" A+ t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 @3 o, Q: H$ v$ g: R# K# a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# h4 g! Z1 d( u+ E4 _' N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* x" [0 }! h3 O! B! T0 P% y9 V7 SMCASP_RX_MODE_DMA);7 b1 V' j. u9 B0 L' }4 Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ i/ w9 P# c7 @3 x6 V" m+ c( ~MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 _; E! r0 G9 L  Q) ?( A2 j1 {
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! t- `. z# ~8 x# X
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# S; `) w6 n7 e0 M. J2 }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- c  c' [+ o$ z2 BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ F/ x4 h, T, K- _' k  G  O0 D
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- T1 i7 I  i! |/ S" K* T5 TMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 C! n1 r4 V. C( y- b$ ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 B7 z- L0 S. c" b  c# c0x00, 0xFF);
/* configure the clock for transmitter */3 a+ ^+ m( B1 v' J" }. u% u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- S- c3 b* B  u; X# p
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  h" D% x& r! H, u6 g0 B4 VMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' I' T/ T# F6 X1 m  U4 P. C0x00, 0xFF);
+ [4 m$ N  W- h1 u' A: [- D$ W; u! t, U8 k
/* Enable synchronization of RX and TX sections */ 8 Z0 p; U- W, i* r, B$ n8 P( n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) r  S. ^5 b% n4 LMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 N  v8 {, j) a- f7 l0 Z) h5 d( IMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ m1 S$ [# C. o/ Z' `; y. K
** Set the serializers, Currently only one serializer is set as. u! D" i0 z  }; j" V
** transmitter and one serializer as receiver.8 V; t; g* D; K, [+ k
*/
# R- b) u) }+ p, _% R  j7 H  ], ?2 ^, KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ W$ B0 S! k" ^; jMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 p5 O# b- J8 {4 _! B
** Configure the McASP pins # S5 ?6 E$ V; k4 a. T/ C
** Input - Frame Sync, Clock and Serializer Rx
6 c4 t1 ~" j' M1 A$ v** Output - Serializer Tx is connected to the input of the codec
( P' C+ E+ L) ~6 t*/. B# \7 x6 u; ^6 D4 a5 D
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# v/ I5 ^& f- m5 C+ s, eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. L2 \& m+ E( x2 w
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' b# g  ]2 f1 o7 M5 n: P& g6 ~! P
| MCASP_PIN_ACLKX
& Q' c; s. z  e; p| MCASP_PIN_AHCLKX: @0 [) Z! U  b: [3 b
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% w$ b2 d% W( k2 S7 @' v$ b
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - A: Z' o+ K- e7 L5 W. J
| MCASP_TX_CLKFAIL ' D5 l" y' H1 F0 M) h; c1 y
| MCASP_TX_SYNCERROR* c0 ]5 j  |& A4 a9 E/ k& B4 x
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 P& l6 z/ R) |5 _" Y  V| MCASP_RX_CLKFAIL. f. r- a1 o  u1 {
| MCASP_RX_SYNCERROR ) y0 K" ?# d* V9 @& \  \
| MCASP_RX_OVERRUN);
9 M! a9 h5 O- Q; N}
static void I2SDataTxRxActivate(void)3 J" n. B" h) m, Y8 y, u1 z
{
5 ?7 D2 {! [, H$ j3 r4 c# `9 R/* Start the clocks */
2 V. l2 C( |& ?3 NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 P" {* C4 p) h5 pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 M& V9 i5 ^2 o; jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' e8 X" r# t: OEDMA3_TRIG_MODE_EVENT);" h" K% F" @! N- \1 E" r+ b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 O' f5 Q$ Q- Q0 d0 z, W
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  R: u9 O* S: ~9 S2 VMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 S' ~- b8 n; K5 F  r) KMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ q+ P! @7 H$ N2 x* nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' `" U$ d5 p" T3 M0 k
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 r1 l4 u, x2 l8 K2 HMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);' S, }1 J9 `; a* S7 n5 R( j
}
4 ]. ]6 O# G( p2 K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* b" s  y, w* ?6 h1 e/ G5 G; x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 15:19 , Processed in 0.036806 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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