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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10410|回复: 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,
+ t7 a8 u- n/ `" `! X. xinput mcasp_ahclkx,. }$ s. l* G8 }. J2 v. R  j" E
input mcasp_aclkx,0 Z, d+ u5 k# \% U) V& D. g
input axr0,- s% U8 o3 W/ @2 X) X% o

( @5 v( F- I, [2 t, y& ~5 I, Zoutput mcasp_afsr,1 ?# `4 w* o. g) J: [! G
output mcasp_ahclkr,
" Y8 }! H, W4 D" Voutput mcasp_aclkr,
% A/ b7 z$ A/ K( n0 Z: k# \$ Poutput axr1,
* h# D; K7 `$ x4 c" k
assign mcasp_afsr = mcasp_afsx;
3 |" [  d4 b/ J3 M( d2 [% `assign mcasp_aclkr = mcasp_aclkx;
& X( E- }' A8 _! `assign mcasp_ahclkr = mcasp_ahclkx;2 @+ ~1 x. w" [4 t, I
assign axr1 = axr0;
! |5 Y8 q3 k  f; J9 R2 }7 k
6 e- j1 {& X9 d9 L% r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( A9 V2 p# T1 M8 O
static void McASPI2SConfigure(void)
9 p* s* {% g- |( H{; s5 B  z' S' E) I1 g7 z# T
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 W" v9 O1 s/ C8 [  PMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 g: |# w9 _. C% U
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ K3 Q2 X+ r/ S! ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 i( A* K; M4 M' X1 L1 yMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" F6 n" r. E  l$ L" D- ~# G- v9 VMCASP_RX_MODE_DMA);
$ f7 f. R. ]  T% s. oMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) _8 x8 m3 i! ~2 T- N
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */% @$ N- T; J7 \+ y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # Z) \9 p% Y( \8 _5 M+ U& O
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: c+ A0 w0 D7 a4 FMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ l' ]& b3 g0 P2 CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. ~1 m; S8 N- c$ g7 K3 d' Z& M
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' b6 u: C% S% V7 S5 m7 iMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
9 s0 h" @3 B7 \5 z$ ~McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 _4 P/ v7 _. |& F( C) ~0x00, 0xFF);
/* configure the clock for transmitter */& f0 y: H" W$ m: ?; j
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% c% Z' e$ v6 y& cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 H* ^6 N: Y! e2 R! L  oMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* t3 I" P4 G3 Z, C  Q; |2 ^0x00, 0xFF);
' e0 i6 I# B8 X
4 \7 h$ i% _$ ]4 v$ O4 y: t/* Enable synchronization of RX and TX sections */
% s4 _0 ?4 x6 h8 ?# ]+ @: `7 L5 xMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
6 A% `; b# M/ p# ?# m" tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 F7 U" ^- v( `, R) z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& n% z- C1 p' G& R' N" D' [** Set the serializers, Currently only one serializer is set as
+ V; v% z+ ]' T+ _8 c** transmitter and one serializer as receiver.
3 ^0 h1 _' m; s& C! h*/! c+ ~# N  P8 b! ]; R  [
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 i" ~8 V) w3 D; a
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ j. z2 M2 l. s6 _& T2 F
** Configure the McASP pins . f6 b3 r4 x  V- o5 R
** Input - Frame Sync, Clock and Serializer Rx
! K# K! P5 `2 a** Output - Serializer Tx is connected to the input of the codec
* z% o1 Z- a4 Y; C6 y*/
3 ~+ W5 A; Z* d) F: h5 ^' A5 vMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 u% N. O1 `: M& I7 IMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
3 U& [& s& L3 a: q/ G1 i4 XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 a1 W1 P( l7 K2 u3 k, ?
| MCASP_PIN_ACLKX, H6 N+ G1 ?5 j6 C. w
| MCASP_PIN_AHCLKX
& ^- o( A/ K3 U: r| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) D' t# S' R, B* _+ }+ Y. n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  L+ z$ J; F. ?7 ?9 o, G| MCASP_TX_CLKFAIL & J& b+ L, H" n* N
| MCASP_TX_SYNCERROR
/ h3 n' _) a8 l% z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  |9 r) H4 Z9 E% O' x  W| MCASP_RX_CLKFAIL
: Z3 W! O  Z: }' e& q; m| MCASP_RX_SYNCERROR
3 }1 N/ o5 ^5 M5 i| MCASP_RX_OVERRUN);
" P% m) j0 z7 u2 y! Y}
static void I2SDataTxRxActivate(void)) V; d+ e$ s9 U, K. X( N. ^
{: g1 j; y1 f4 }) c- t/ j
/* Start the clocks */
2 N5 F6 z4 q3 ]- r# WMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# g: x) W- j% F( V5 n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& F' K! I2 Z7 Q" @8 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, m7 U! m5 i! t; ~4 h' r
EDMA3_TRIG_MODE_EVENT);
4 G: d8 K5 R. d' K9 ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ t$ i7 q4 l" l/ Y, s) R+ m. |EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! n) ?' g& t/ _0 g( H' [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 I: ~9 ~+ C/ i+ I" z0 K0 ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// H" u: H) G8 T% W
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 S7 Y6 D+ C! `( F" m7 m; F! }. @McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 i# N% @# v& b4 D. @
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 R$ Z& F6 ]1 V5 l* H& h" m/ E$ m}

, g" M" R) u; f( M% T' q4 v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 Z% ?7 d; c5 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-6 01:53 , Processed in 0.039497 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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