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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1209

积分

金牌会员

Rank: 6Rank: 6

积分
1209
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,( s0 s' L" A6 c! v: a
input mcasp_ahclkx,6 X  q0 m3 q) _6 Z( g
input mcasp_aclkx,
( |; ]* J& ?/ K! Iinput axr0,
  m% p: T7 }# }3 G; S  ^" S
( s7 x, I: K! `9 M' m# woutput mcasp_afsr,  o  X3 E3 p/ Y0 ~
output mcasp_ahclkr,0 d5 x1 D! b  F, d! ], `4 @
output mcasp_aclkr,
  [* K$ J# U( K6 Q  t2 routput axr1,0 o$ `1 o2 P1 T8 \; U% Y5 u
assign mcasp_afsr = mcasp_afsx;
3 \4 `( x/ d; M& m& J& i% vassign mcasp_aclkr = mcasp_aclkx;* i. R5 j& ^9 b* n& V6 ]
assign mcasp_ahclkr = mcasp_ahclkx;7 w: E6 }6 ?& c# y' j
assign axr1 = axr0;
/ q$ w1 q3 k. Z' R' S" k  q
# ~, b0 Y9 Q! B- ~: U0 s& H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; B. v: \7 C& j! a1 \8 C
static void McASPI2SConfigure(void)
6 T# y- ^6 k$ E9 _  t0 v8 j{
/ s( \4 h6 V/ }- i) dMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 I! J5 B, ~$ H8 F, F  A8 L4 ^McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) q- L: G% v6 ^3 cMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, u' q/ a3 Q5 F* k3 o7 |7 B; P5 P
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. ~! I$ @, |8 j/ k3 QMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  B9 M: U" D3 k% \$ w& g' g
MCASP_RX_MODE_DMA);
0 h# ~+ W/ [. ]8 C% NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' _9 }. o8 m  `) o' wMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- g7 Z- \# \- ]1 ]/ v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" i/ S. a+ u% Q" K  G( k+ |$ }8 qMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, H0 {7 w. e9 @; z" ?; I
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* ~: T) K% D: P% v( W2 V; p8 DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ j$ H3 D0 P' y/ a6 [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" `- p/ X  P$ p' }. L$ wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 h- T% [  Z# a1 NMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% {; ]& u5 l/ J" B/ H: @0x00, 0xFF);
/* configure the clock for transmitter */
. k+ s- D  `) PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) F& S# r8 `; B: l& c1 [! E
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& V) [3 Z6 n" D0 q  Y  `# ZMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- |! w  u+ f  q/ N0 u0x00, 0xFF);
0 ?' w# _$ U1 \5 I
. l2 k) Q: s6 B( k( }- {: t$ g/* Enable synchronization of RX and TX sections */
2 x" U! V& F( H: j, r# yMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 D8 i7 {4 `5 e# l$ v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  B/ ]: f: a3 D+ ^" X0 {3 Y! I+ _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: d$ m5 y. o# b! G2 R** Set the serializers, Currently only one serializer is set as
/ b+ ]# j/ E! `5 A5 U9 ?! ^- E- I** transmitter and one serializer as receiver.
  N0 k8 t$ a$ I! h*/
. Q! \  c$ w+ V1 @McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% V1 q1 @2 Y: F3 ~$ ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*; A0 @: F6 r5 G) r, X8 f  V
** Configure the McASP pins
, t- J4 m2 M( n** Input - Frame Sync, Clock and Serializer Rx* P! \' d; d( \. u
** Output - Serializer Tx is connected to the input of the codec
: H1 ^6 l8 Q- }*/( g% q1 h3 R2 Q- ]4 f! C# S) x# T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 b% o) \! v9 s: s6 h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" J. `, l' X* LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! G. }/ s0 r# \/ b/ B| MCASP_PIN_ACLKX0 T. q9 g# e/ p9 u! u. n
| MCASP_PIN_AHCLKX$ r" I' k! B8 l
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 Q& G3 q1 \8 k- e. bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . |1 P9 C- Z. o9 w6 e+ K4 l
| MCASP_TX_CLKFAIL $ q8 U% P$ A$ s) ]; w; ]0 a
| MCASP_TX_SYNCERROR# o. e( g2 n/ m
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  e# J, [, G( U" F2 f! L" g| MCASP_RX_CLKFAIL
4 f% Z0 ~' F( p" w0 D- R| MCASP_RX_SYNCERROR ' J* i. ?: I4 |1 H8 l
| MCASP_RX_OVERRUN);2 X1 t# P7 Y4 Y& K- [3 }" Y
}
static void I2SDataTxRxActivate(void)
* F4 o; F/ T  M9 s& f  _{
# j, i5 O( y' i# V* {/* Start the clocks */
" b( b7 q" h% u3 T5 [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 t1 x& J2 V* k& \$ WMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, C' N& U3 h+ G7 n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 h/ U6 ^/ S6 ]- M! P$ ?$ h
EDMA3_TRIG_MODE_EVENT);- I. s& v6 [; r" z9 D2 A1 X, Z( m. e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. d2 [3 t# y* K  \( W  C1 wEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( X- ^/ F! `, Y8 D0 OMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  U' |) ^9 K. y. p! HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- m; [9 P7 s9 @# e1 j9 j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 k: Y- b% r  i3 ^7 Q" d
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' R( g( Y$ v7 G; G% M6 A* o# fMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) `. o' }- E: P
}

; P% Q$ O( u3 V/ p; Z% ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. ^- L9 u3 b& m1 [; u/ D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-19 02:23 , Processed in 0.038549 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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