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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8331|回复: 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,
( z; g3 Z* N. I" n" v# G0 c6 L- Xinput mcasp_ahclkx,: |' k+ W; x  U6 c7 P" [( Y$ Z; o/ o
input mcasp_aclkx,: Q9 A" R9 e" q( B% M
input axr0,/ l/ ^* U+ q* u

- K7 Y& O  `. ooutput mcasp_afsr,
+ H5 q6 O+ B9 Uoutput mcasp_ahclkr,
! E! d% |7 u# z: {7 U1 poutput mcasp_aclkr,
9 N  z5 J! w3 Z  `output axr1,4 ^% _0 T" ]2 q% y1 ~3 e4 `
assign mcasp_afsr = mcasp_afsx;
5 u, Q" @* x4 T" |7 ]assign mcasp_aclkr = mcasp_aclkx;& j: O# M' D2 z) |
assign mcasp_ahclkr = mcasp_ahclkx;8 a( j& z, G8 ~( w0 \# v9 F
assign axr1 = axr0;

# |1 B. b  U# C* `% s# K0 Q( v2 S- Q, T) H# d- b5 Q$ j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 Q5 v) Y( `2 V/ b8 Y  r& o+ M! W
static void McASPI2SConfigure(void)
+ D9 [) d( C' g0 F' k1 d{+ q6 D. G: q4 Y7 r* V9 i
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
: w) v! ?" U' H7 r. @McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: ]$ z3 q+ h& MMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 q5 g. I! R$ i" ^8 {, Y2 W5 V. R3 ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* @, M3 g3 o8 Z1 l
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ R3 c8 A0 x' W% U/ k
MCASP_RX_MODE_DMA);
* h0 v# Z4 I- ]( nMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ f$ ^1 U9 [# x+ k5 O: ?6 [5 Z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 ~" k* n% x# |
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" y" Q( L! k/ a: _8 v( SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 \( ]3 P) k! `3 hMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 F9 \# k/ F1 i; \$ Y* _* C/ hMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; f; s. R# \5 V8 ?. j) p  p
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* M+ E2 ]" m- n1 K: ]! `
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ v/ L( e' g) C) C* o6 oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* G) i* q; w' M; v+ c3 |; n0x00, 0xFF);
/* configure the clock for transmitter */
8 E) {/ b) {- T+ j0 C" m8 i- gMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) c8 J% W! u9 L! i7 ~, cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& I8 H1 x7 X& C( f) a9 NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- @# p* o3 m; H( _6 o: e! J
0x00, 0xFF);
% n0 @4 [" l1 G: p# C) v* ^1 }, v+ J
/* Enable synchronization of RX and TX sections */
& j6 g& \% L7 h3 U! @  u- s$ VMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 s2 N+ Q9 }7 `$ p! m8 ^5 bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  X, O, Y! m6 ?3 D0 HMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- Z% P; R5 U8 ~9 o: Y. ^- `: M** Set the serializers, Currently only one serializer is set as0 T) h9 ], T" e
** transmitter and one serializer as receiver.
( e5 a7 M  H, _  |/ \4 e' Y# V' ?- t8 d) A*/
3 L8 i5 L: o4 X9 b+ _8 H: U0 \% VMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 q! }, J- C1 sMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, ~% ?+ c" A& `6 `* N" v5 [9 a
** Configure the McASP pins
) Q) ^1 J9 p7 t  M** Input - Frame Sync, Clock and Serializer Rx& e+ t" b! j+ I- B2 t1 \) f3 k
** Output - Serializer Tx is connected to the input of the codec
' E; B6 A0 X+ M/ K# G( v3 P*/
) M: V( c3 \8 E2 mMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 [/ ^9 d9 u' ]3 Q5 `9 nMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ n+ T! M# V* W* s2 V3 }9 fMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) A0 Y+ Y: N/ [4 _: y6 |% V| MCASP_PIN_ACLKX
& L1 T# ]( m/ f2 J& A| MCASP_PIN_AHCLKX
  M. @$ ~& h5 d) i& w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; x6 U0 l5 X) L2 J$ F( R* s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - g+ _( c% u2 n/ k: y" ]( q
| MCASP_TX_CLKFAIL 3 e0 H6 I% u5 i0 E: A& H+ D) J" m
| MCASP_TX_SYNCERROR
, N6 z! m- @; v7 \| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 c% q# A$ o) [5 @0 @
| MCASP_RX_CLKFAIL3 q' v! A3 p1 `2 U& e6 Q2 e6 s6 K
| MCASP_RX_SYNCERROR
4 e: n; B  _& K0 W| MCASP_RX_OVERRUN);0 M: u- V, j% \
}
static void I2SDataTxRxActivate(void)
. M6 x4 r6 h6 ~- h8 H{
8 F0 m0 X( ?* M/* Start the clocks *// R# ~2 h) k6 K0 W; \4 P% V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 }+ g4 T8 ?4 p; w& TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ [0 |4 B: U! i! _' k, rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& e! U( m4 I, j0 S) z! ~EDMA3_TRIG_MODE_EVENT);4 }; B8 @  a, X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 u/ {' T, `. ?6 C3 `- ~
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 D( l; _+ z: y8 i) L8 n. h" n. `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- F; @7 ~; g5 B
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 M9 J5 M) Z  Z! c+ Cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ n  m% R8 L1 p& EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! c! q' s* Z# |; g8 K" r0 ]McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* S) K. S) S" f
}

7 r# D7 W) i" v. N5 B, f$ H
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, C6 K) B' q1 ], T8 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-18 20:42 , Processed in 0.045863 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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