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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 ^' x6 Z" }% K
input mcasp_ahclkx,* H# }% \5 q9 n
input mcasp_aclkx,
7 {4 S4 a* e! `input axr0,5 t; a$ \1 z9 _( H2 j8 \+ q
/ D# D( I. t2 ?; {. ?7 J& k+ M
output mcasp_afsr,( c# |4 k/ q$ N; b! O1 z" b
output mcasp_ahclkr,
5 S4 B! a: G! q- \output mcasp_aclkr,
& `) G" V1 L7 t9 t. {7 l5 Routput axr1,
: I4 ?/ Q! M$ F) Q" _
assign mcasp_afsr = mcasp_afsx;5 J4 Q" D" _1 l! k# `/ F1 ?
assign mcasp_aclkr = mcasp_aclkx;
" A2 K: S1 P7 d- V/ a  r8 bassign mcasp_ahclkr = mcasp_ahclkx;
. b" c: p& ]. |9 Zassign axr1 = axr0;

' h) \2 ]* M6 n- I/ V& L) u& @7 H
9 H3 m; g; a9 J8 D9 P0 C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  E5 H4 I) d% Y8 U# m! H" p) d: j
static void McASPI2SConfigure(void)2 y- Q# T" ]5 |7 k0 z7 Q
{, c2 d' Q" _+ s' m
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 {4 B+ a. n: i) J8 \3 I, G7 CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 a& d' E: p0 z6 v0 K" QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* z0 |9 f0 c. ?& v0 L' J" fMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
0 b2 @5 t  x# H: K; I/ lMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  S; j3 l5 }, J* K0 F4 M  q) R4 @
MCASP_RX_MODE_DMA);0 t  H. l: N: M( `+ e
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 Z; R2 F! f) D, p: C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# @$ W( O- k" \" j& h6 M. j" oMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 X: j; @& s# J* }1 Z0 qMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- D7 @& I1 n3 n9 d3 Y; n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 M; ]- Z( ~, J  w& ~+ `* t* iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */6 |* x( c) M/ l+ ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 B1 K2 f  B7 o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( R' t2 A: w; yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& G& ~$ k) P8 s, z- E
0x00, 0xFF);
/* configure the clock for transmitter */
/ x% d1 \5 |; q4 ~. AMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* u" Y1 J9 {' I" L, c2 bMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - e( @. Y$ Y; q/ K% |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" o) R0 K: B2 `0x00, 0xFF);
. D5 q; p# l1 h; j) X
8 T& G0 r$ G7 ~4 |6 M9 e7 f1 i/* Enable synchronization of RX and TX sections */ " p. S& s2 V- b7 L! _# n3 N
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. m! H. u' Z# Y( K6 T1 y* jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) V# `4 H# |5 B5 m0 t. {; vMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- C; x+ j+ R: N. U( J7 F
** Set the serializers, Currently only one serializer is set as
9 t" R3 |7 d7 x** transmitter and one serializer as receiver.' z- Z, _) e% T$ \8 i$ E
*/
0 b6 O* t# p4 ~/ ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& F6 c, U$ C) n, h
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! z8 @* k$ f4 E; u+ g# x
** Configure the McASP pins
" b+ m4 d! o% S3 T** Input - Frame Sync, Clock and Serializer Rx: F. j' |- r+ j7 z; Z2 @& S
** Output - Serializer Tx is connected to the input of the codec
) d! m+ }; M% A. d: O' }*/9 _9 e* p% v, T3 E$ H' ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, U- L* a4 R* }3 \+ `, r6 t* c6 cMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. H) L2 v* K3 h: ^% Y; CMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 j2 d6 R4 [! S) l( I: \| MCASP_PIN_ACLKX9 ]( _2 H( |2 x4 Y/ z: K# U. ~
| MCASP_PIN_AHCLKX
/ Q; S/ ~, t, ~1 z& l7 m9 L5 `| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 S/ n5 M3 T* a- w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. S% d% m% V- ~# b+ i& k| MCASP_TX_CLKFAIL % q  Z  y- p6 U
| MCASP_TX_SYNCERROR
6 A3 `! J/ m4 z: u8 b9 ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) z+ Q4 Z& H+ @* A* l$ F| MCASP_RX_CLKFAIL
' [' b+ a* }; A( G2 G| MCASP_RX_SYNCERROR 9 U" n6 U- z& s/ A  S  f) P
| MCASP_RX_OVERRUN);
" f; q- g" _+ Q6 B! g% _}
static void I2SDataTxRxActivate(void)
. C# r" k% b; @! w{& c2 U# T2 N3 M
/* Start the clocks */
1 ^3 _, X# ^+ i! k4 W: |7 a$ ?  pMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);5 l& x0 n. ~; `' |* p; u" V7 x
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 L% X5 k6 C* i5 ]2 g$ _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; W5 ^6 O7 x$ }. D. u% hEDMA3_TRIG_MODE_EVENT);
- v8 w" @* `, D& E9 \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 F* ~8 g+ n3 S, J3 v; {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 B. Q! [  z( [! m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: J+ i# a4 u5 x. r0 ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- V) C2 ?% ^3 K  f4 }3 L' `
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% B2 X" L+ Y* D5 R
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. N7 @  a. d- ?" wMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. l) |- o  v4 W}
7 v8 ?0 `" k4 w9 z; G" k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ ]3 ~" ~  A5 W: c8 _) K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 16:04 , Processed in 0.038627 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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