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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8320|回复: 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,, a! m* p6 Z$ i
input mcasp_ahclkx,
3 _4 p; Q6 x2 L( V3 ~input mcasp_aclkx,
+ ^) p3 b: P9 S8 iinput axr0,
& s0 t  o2 w8 o$ v
2 X3 P  n1 e, v5 n9 H( toutput mcasp_afsr,+ I3 N0 U  H7 h' K5 g( U- B9 K
output mcasp_ahclkr,5 a+ x. d0 D+ j, _9 g+ w/ a
output mcasp_aclkr,1 F; c2 O3 D. F4 P. ]
output axr1,
) k: i8 N) \9 y6 F
assign mcasp_afsr = mcasp_afsx;
" q) i/ d. h2 j; ?2 ~1 eassign mcasp_aclkr = mcasp_aclkx;9 s& I; ?( B& y1 S7 i
assign mcasp_ahclkr = mcasp_ahclkx;
2 D, k" r! z& [' f2 J( D, d9 x9 g2 hassign axr1 = axr0;

, a* D. U( x+ g0 V: Y9 b' K; G/ U& v0 x# _9 o5 D2 X7 s$ f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 H" Y1 ]6 j, h- O1 \
static void McASPI2SConfigure(void)
# O9 {, L! n2 D- i# s5 i# M" L8 X{
- K1 a' |, `5 H; tMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 W; {3 z7 G* k$ M8 Z8 Y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
- t& h1 y- E0 k0 KMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. I# W* {+ t* f! e8 UMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 @% ^- n8 u9 k
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- }. t. N2 b8 p  L& g; G" I
MCASP_RX_MODE_DMA);
: ?! x4 x5 W8 @& zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 M2 n- P. H9 _# `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 i. c: b; g6 j8 C- ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. Z0 H! m- H7 _  I) M& vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);. `- v" T" O; q; e- }! @8 n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: \: _8 C  }: WMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 f5 n; h2 e  n: @: Y: V) x/ U& g
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' g8 T4 b$ o5 B- a/ ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 N2 o* E/ t! n& ^7 ~9 O! gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ o" _( b* H0 _# V" X
0x00, 0xFF);
/* configure the clock for transmitter */7 O3 O# U" [. k& ~  \& C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) \2 m; M. O) f4 h8 H+ VMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 K$ J$ p( x' c7 a* r) W
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. c' u$ l2 I9 j; T$ |3 ^0x00, 0xFF);
7 c- d5 k% E# O4 x+ l9 z% V2 [  V  u$ B  j8 v
/* Enable synchronization of RX and TX sections */ 5 A: ?' Y$ s& _' U: n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) j+ x9 L7 \% gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% R% e5 m4 m$ J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 `9 K- W3 i8 A- O) [3 Q** Set the serializers, Currently only one serializer is set as- R% y! T! f% }5 ~
** transmitter and one serializer as receiver.
  q$ t5 r' X6 A+ m, ]0 s+ s*/' @" ^. k: v' A; T1 H+ X' O1 o, I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 ~4 D  M7 g! R+ hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 F* P7 J# w- w0 B, n** Configure the McASP pins 3 y8 H2 |; ^; d4 }
** Input - Frame Sync, Clock and Serializer Rx
, E' a2 w* r( {% Y$ {9 T5 m** Output - Serializer Tx is connected to the input of the codec
: \) h, f4 x' N*/: {9 {$ Z( S& v0 y- b8 p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- b- @2 O; b* _2 D; f' N+ T
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ k- w- _$ @7 K4 H/ I" v" p, n4 J3 nMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# W* }/ U! |1 J" O  E$ C
| MCASP_PIN_ACLKX
' G' R9 a0 _* r' O& @( @; q| MCASP_PIN_AHCLKX8 l! S+ t$ f- J$ ]* v3 o2 ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ [1 K& h" N- t% j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / }: F; A( \4 K) f$ i& t; r' s( K
| MCASP_TX_CLKFAIL
3 \' y3 l' ~. B0 o# _( ?5 x| MCASP_TX_SYNCERROR
: j+ E8 r0 ?+ L! d( f2 f| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + H$ P" E0 V8 t" C6 E9 S
| MCASP_RX_CLKFAIL
# C6 Z  b. f  z/ |& r. E; j$ c2 `" q9 M  X| MCASP_RX_SYNCERROR
/ B! U4 H# R3 r  L, X  || MCASP_RX_OVERRUN);) q3 _, j, H1 _. C4 f$ K  s
}
static void I2SDataTxRxActivate(void), K3 p5 d. F7 V3 y
{
2 }' c7 v+ }8 H  x/ X7 b/* Start the clocks */
5 }: ]" w4 }, T  e* fMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# Q1 J& p' t7 s: E3 X- o
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ O: w' j/ K) Z$ U. o! ]( o9 Y: A4 L
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* h  ~: w! M3 E! Z( sEDMA3_TRIG_MODE_EVENT);3 p4 t0 z+ \) q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 l  e  T2 z0 {5 _1 \5 I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, d5 u: e8 N1 m  W9 t: u% G
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ `. P  Q2 g6 H6 O
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// ]$ l+ S" C4 D* @/ N2 x
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* V7 e( u4 h; e) d) J0 S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" G5 g( N& |; G& c! xMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);% s* F8 k4 W6 i6 H0 X% i) {1 h9 n
}

) ^7 e# `! C( `# A1 e4 Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- `3 N# w8 m  e$ d9 h4 e5 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-17 22:59 , Processed in 0.038349 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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