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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10213|回复: 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,
5 D% i# W' X' q6 |input mcasp_ahclkx,! l! {8 m2 Z8 T4 i
input mcasp_aclkx,5 y3 m. k& J/ q
input axr0,
' N/ P! H2 k! e8 p5 R, m* y1 b& X  T- k- O) v/ A) j- |8 _
output mcasp_afsr,+ `/ B" p6 z2 j& g- t( v4 f
output mcasp_ahclkr,# N, M1 G/ k! J. H- |2 e
output mcasp_aclkr,& n& p" d4 X% {/ X5 M' h; R3 f
output axr1,6 O9 N  l- _3 v7 k3 F
assign mcasp_afsr = mcasp_afsx;) B9 t/ n1 f3 t( u" C# l( n+ Q; \
assign mcasp_aclkr = mcasp_aclkx;& K+ K! b( n; f$ z
assign mcasp_ahclkr = mcasp_ahclkx;
  E( u5 I! `! l" bassign axr1 = axr0;

7 V* d0 v, m7 c) T8 b# u  M2 w/ A0 u
$ K& ]+ B" C! Y( u  P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

" {  ~, ^1 J- m, ?
static void McASPI2SConfigure(void)8 ]! x" R6 Y" W* L
{
. K& O) j3 @& ]- }1 eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);* O8 i0 U! v! I* {6 r% M" ^8 X
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' u. K" k* l' \/ q6 AMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  N7 l) H, u0 ~% U; C  [2 n/ P! t8 yMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
  }! L) O' R6 O: KMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ a- }$ Q* C5 v* JMCASP_RX_MODE_DMA);2 @( _. A6 u- O
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 B4 W1 j7 x+ _5 L& [
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, T. A; @( K0 O" M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 F( E9 b* y: e& I: p
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! X1 |5 a' `* z' m3 Q# `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 L) G3 Q6 O# U0 @1 h3 j
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 z  L$ K9 \% \( aMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& E4 F3 _; J8 |* j, k
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 O& D( d$ W" T5 e. {3 ~# A. W" `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 v1 M/ {* S" c* o0x00, 0xFF);
/* configure the clock for transmitter */
* V$ Y* p' |0 V3 X$ |McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" E- I  V+ s- b3 j3 G2 xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( t% u6 U, V* x
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! F4 D$ ^: [/ x/ C& f
0x00, 0xFF);8 h& n' i, H6 O5 ^

& R( \7 L% l# A1 _- w! |: I+ w9 M0 {4 ?/* Enable synchronization of RX and TX sections */
% C, e, ?5 [1 n0 nMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 t" h% {: o! n
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ t$ b, `. k" eMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. O; Z5 N  j6 k. Y) h+ T
** Set the serializers, Currently only one serializer is set as
9 K( e% v% c: C" R** transmitter and one serializer as receiver.
* k4 @2 U. }; @*/+ J, ^$ @6 v5 _) l( O& d. D
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( X  D/ r. S( b; P
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, k" H2 R# q3 _+ H; P* V2 n" V
** Configure the McASP pins
2 I4 r- [) h/ a4 Z0 k** Input - Frame Sync, Clock and Serializer Rx
3 _4 H, ?! E: V% L** Output - Serializer Tx is connected to the input of the codec
/ z$ b# j, G: e1 ]- h' x* h" v( D*/- N( U) I; Z8 @5 l
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 ^" Z; e# C% n
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. d' r# f! [: H$ }8 Y; WMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 \7 W5 y+ ?. P/ y* `! W| MCASP_PIN_ACLKX7 `! j& L; \2 z( k" a3 M: l' J
| MCASP_PIN_AHCLKX" w! ?# L" [9 ^1 r* b
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& X. f$ h: m$ W" yMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 p+ ^) U6 h. Y; P| MCASP_TX_CLKFAIL
# V6 R, K0 s: Z* Z| MCASP_TX_SYNCERROR
" y4 U: ]$ ]' i9 h| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" v, a; d; V4 X& t  w* Z% }| MCASP_RX_CLKFAIL
% r- T$ J9 l1 s5 _; {% H& ^7 f( c| MCASP_RX_SYNCERROR
, p% l4 D8 F" H) G+ w1 q8 T| MCASP_RX_OVERRUN);
. Q0 ]$ T, C( C) E}
static void I2SDataTxRxActivate(void)
, M* v& ^7 D' p$ H$ _- ~! I& e{: N' u1 _3 V0 O1 \  {
/* Start the clocks */
5 h* s6 q; a, @8 l9 r  }+ N, ZMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  r" `! G/ u$ oMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 O; q5 V, b3 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, Q; m" L/ [" C1 {1 X
EDMA3_TRIG_MODE_EVENT);
- [( ^+ ]0 \7 c; I0 Q+ m) `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * G0 g4 L- h4 B2 R, _7 p0 ^1 h) Q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: I& E5 a- j( i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) l, J+ B/ c+ `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 L% S( k; K( v! ]0 ]; A5 Zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 ?6 Y0 b# j8 e- g& ^2 z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 O) b/ d* [. f. Z4 W7 yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ q4 h1 x4 f1 I" l
}

/ h& Q) W+ F  d( t3 Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 s4 c  A  s9 o9 \+ ~* S& \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 19:30 , Processed in 0.040469 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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