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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8373|回复: 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,
; _1 T  R+ I8 pinput mcasp_ahclkx,) Z7 |5 D. X$ ^, n4 g) O! u+ `3 ^
input mcasp_aclkx,; S" h  B( U+ g( u/ `: ?" _
input axr0,' R7 E0 d# V2 V$ d5 `* _1 p9 [6 r
* y' i7 `% U# N6 z8 @' u
output mcasp_afsr,
5 U: |8 i* @  soutput mcasp_ahclkr,
6 L. o5 K% u( E, u/ Q, J+ ^output mcasp_aclkr,
( ~6 O" x9 {+ W4 Noutput axr1,
- V% b- c9 K! f5 a6 @: W
assign mcasp_afsr = mcasp_afsx;
' @( _) A7 o# Q5 vassign mcasp_aclkr = mcasp_aclkx;
/ \* U0 n3 b; e' iassign mcasp_ahclkr = mcasp_ahclkx;
- |; E( K. A8 H% s1 I3 t9 Kassign axr1 = axr0;
' {& ]5 K7 Z3 H8 g
& j$ N. g1 l6 D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- l" k8 ~1 S% V" t7 a" k& C
static void McASPI2SConfigure(void)6 ^% ?% G8 n) R1 g  G
{
5 E# M  V9 H. Y) P+ IMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  k* [* L7 a6 j) C: H$ L# ^! ?3 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 j* o# A" a- N- OMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; K6 k" R5 k# w. z' B. N9 UMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# a% M; k! L9 n- U; g9 w$ }% q' AMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 }5 V4 W* ?* \4 i# L1 ^8 pMCASP_RX_MODE_DMA);5 l* j  M! h- B6 n
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 O+ E1 V8 e7 O' ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */4 b0 z* i+ X  {7 q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 A  M/ L# G: }& Y, m& a6 q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 J7 q" `* x* |1 ?! K2 o7 X
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, - |3 o) |& G0 {5 e8 J
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' E0 t: l# u. L3 w$ h% [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 z2 ]3 n% Z+ F: SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( F! _' x; d3 Q. o4 v& l1 I, X. f
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' A* r! h- c7 [! `2 x2 o0x00, 0xFF);
/* configure the clock for transmitter */" t* [% X% G4 v2 _+ H( Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 O& ?; v; _- I% U5 rMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  a3 u: f- J/ w7 g4 P0 f5 fMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! m3 _% U! t, d9 b# d% i; Z- m0x00, 0xFF);
. ^: F" D. B0 W" R2 |' b" J2 X/ @# _* @
/* Enable synchronization of RX and TX sections */
6 ]$ s4 v: z; U7 Y+ B* I* n7 |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( a/ h$ u) ]' H$ `
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% \% q( F3 T( S
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 w0 \6 P  T1 J" @  \** Set the serializers, Currently only one serializer is set as
+ T# x1 J0 R$ Y9 p** transmitter and one serializer as receiver.
6 \/ d, x; D1 ^, S/ F$ h+ N; {6 F# F*/  k4 u* i; ~3 U, u/ B9 P" }
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 Z# ]; W. ]2 d  d- |+ I8 m8 |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# I' k5 j  \8 W
** Configure the McASP pins ! |4 Z* X8 n5 |, }: D
** Input - Frame Sync, Clock and Serializer Rx
7 }: Q9 |* ]( z** Output - Serializer Tx is connected to the input of the codec 0 Y4 Z* g! }# |/ C
*/
' H2 s/ k5 N. L# g7 h3 gMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ @5 H+ y5 L- F5 m" X0 BMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. p+ d" |! F3 Q; K& Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! F: k' R* J: t+ i( p8 W| MCASP_PIN_ACLKX/ j. p1 f9 g7 w) \9 }
| MCASP_PIN_AHCLKX
' F- F4 g% e" q3 ]# I! U: h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) G& T' m( Q3 L8 f! t9 s) O
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 h: ?4 L0 @7 O: F# {# e* E" {
| MCASP_TX_CLKFAIL
3 i% Y/ N( `, d! Y3 @3 j| MCASP_TX_SYNCERROR
$ m; W7 q9 a' I0 t1 N, O8 p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" y0 V' R( n8 e* w| MCASP_RX_CLKFAIL$ L, T, i0 l- Y- U
| MCASP_RX_SYNCERROR 9 K; x+ }; _  z9 E5 b
| MCASP_RX_OVERRUN);
( `0 s& S8 T- W& G* N}
static void I2SDataTxRxActivate(void)0 k- ~0 _' }  N  A0 ~7 b6 H
{3 F) e0 @% k4 g  q1 r
/* Start the clocks */) W( q) @  m, v# M
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 g: _. p1 i/ `
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- B% n' n2 @+ M! R; OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 ~! c$ N; T' i
EDMA3_TRIG_MODE_EVENT);
5 h, _6 q; ?4 H3 yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- R8 L* q1 G: ^( p* aEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 F. s* A& W( i( gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# O* [" r+ F( P8 K( k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% X# G# K3 h2 O) o* p* r8 s' ^+ zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ M5 O  I, E6 Q6 Y' \
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 S2 e: }( w4 }& p( w9 S* {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; H! V. c& H& d2 h. K/ p0 ^
}

+ L3 U+ D6 a0 g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' M# e( H' s& S% s# v- @- E& M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-20 22:16 , Processed in 0.038860 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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