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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 H& F( l$ m! {4 _! F' Pinput mcasp_ahclkx,/ \7 n  S# O5 o+ W! |9 `1 y  I* j
input mcasp_aclkx,
# v6 \4 O$ d; E+ P3 {% _4 J6 p5 ainput axr0,% J  O! O( h  [3 E% i6 m; A, C
& d) H2 k5 ]7 u+ b6 Q
output mcasp_afsr,  k( m& [! ?' P  K0 }4 N# c
output mcasp_ahclkr,, ^# O+ w8 H. M. {
output mcasp_aclkr,
/ v, B+ k# ?% j, e' M# f& Noutput axr1,
! ^) P- ^4 N7 I' O, n
assign mcasp_afsr = mcasp_afsx;
6 [- ~3 m- c' I7 o3 i; ?& C% Iassign mcasp_aclkr = mcasp_aclkx;
9 b: ~8 y4 ^- i! U0 Kassign mcasp_ahclkr = mcasp_ahclkx;
  \5 {+ \% u9 e' nassign axr1 = axr0;
8 l+ j, T* ?8 N1 l# H

$ P. @: @; F0 X. B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 M9 ~7 A: F( R0 e) G8 ~1 ^
static void McASPI2SConfigure(void)
( A" b# ?/ i# V{
' Z( k# J( {4 `1 j8 qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' \, _3 [0 F& p5 wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) y$ t& Z2 U6 M) E: f3 A% ?& ~0 R
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 f* i( E3 C. q8 j& {& ?
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 A' [! Q# |1 D( N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 ^8 {! t) s1 w* R
MCASP_RX_MODE_DMA);
$ p& j. y. Q6 a8 d$ z4 FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 c/ n; @4 |% {, s" @1 ?& F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 V7 m1 d" K$ C! C7 B2 M/ |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% t; x% ~( k; N* mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 {  V$ x( [; u& b1 i
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 S- S' ~0 B3 c( O- W; [$ S6 O* _MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. B) U. S1 }5 }1 g- ^8 @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);' e7 @! P7 P7 i5 g' N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( u  w3 a/ k/ u' K, ]
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 ^% \4 U. q2 A4 P' e0x00, 0xFF);
/* configure the clock for transmitter */! a) {) T4 z9 k; j9 v1 W
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 R4 W3 b5 B( f4 b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 d$ d3 `! q7 a: n9 V2 k1 xMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* ]7 s7 q/ {1 \
0x00, 0xFF);" Z6 U& @% Z8 U# V
* ~+ Y  d! W' q2 v0 a
/* Enable synchronization of RX and TX sections */
  t9 s; {/ F; LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& p% d1 U% {1 o) G$ TMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 O+ p& F( n5 [/ R. m' Y& X
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 g4 ~# l- Q: U% H7 p' z** Set the serializers, Currently only one serializer is set as
8 b( d9 K% c4 F8 G: R) v** transmitter and one serializer as receiver.
7 ~8 q  m. ~8 [0 M2 c" J*/6 O; r: |! n" R+ s9 _* Z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& D6 B- I6 p5 t* P2 B) ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ N& s& K2 Z* l3 k; K$ V% I: i
** Configure the McASP pins
& g6 s3 m4 L7 l& f+ l** Input - Frame Sync, Clock and Serializer Rx
5 k, d: f$ s9 M# x** Output - Serializer Tx is connected to the input of the codec 8 v4 o* Z/ k( g' _  e4 X
*/
" ~2 y1 F: C+ o5 m2 H& v: SMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);. X2 z: H% [  i! H, `! T9 Y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: H! i9 X+ N; j& S8 l- MMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ v( f% c* L% R- @0 y
| MCASP_PIN_ACLKX( n; J2 ]* q. }* J' v
| MCASP_PIN_AHCLKX7 v4 i. w2 s# |, }5 K6 }
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* |. i. V6 K) c" G) t" uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 g- s& c' d! W) l; Y| MCASP_TX_CLKFAIL ' q/ |+ S0 U& L8 |
| MCASP_TX_SYNCERROR% r- @% Q9 X% n" _8 @1 B
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # {, F6 B, r3 Q
| MCASP_RX_CLKFAIL5 t& }" G) x; o' I5 u4 [+ x+ l& [
| MCASP_RX_SYNCERROR
) {$ |7 o- g: _; g/ b1 J% k| MCASP_RX_OVERRUN);, c* O3 h- e! M% r( b$ |( C' u
}
static void I2SDataTxRxActivate(void)
7 @3 E" c4 j2 I8 ]! [% \0 O  i{
' ^8 K5 e" W9 ^) ?: y+ x/* Start the clocks */
. _0 B0 w7 @. i3 _' cMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 N3 X1 a% c6 _- e. lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) ~5 g. K: U2 \* j" ], pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 p0 w4 w2 n1 w" dEDMA3_TRIG_MODE_EVENT);! F7 h0 I8 a+ y  k, d$ r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 T$ N8 v7 d5 F  _% fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 \% F* Q. D. `8 A# K  o
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 I9 a, g; N3 }& X. s1 T( ~McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 F  n6 ^+ q- \5 [' Zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% Y- T9 J% I6 S" H5 p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; z% [! g3 i6 G2 P% \5 yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);# F5 H( l5 @8 i+ [% V4 J
}
) E( c$ u) ^" |# l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ ^% G+ M6 Y+ D5 p6 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-12 15:29 , Processed in 0.053499 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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