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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
( m) t4 }! L" g1 o3 p) finput mcasp_ahclkx,
+ t; M: q9 p% n# finput mcasp_aclkx,
" u( l5 N- K& m$ einput axr0,& Q; S8 l$ H, Y& x

' U5 S4 E$ {* ~4 voutput mcasp_afsr,! M4 [! C+ ?6 f! b3 K
output mcasp_ahclkr,2 @" S, e. f, e0 K/ G
output mcasp_aclkr,
6 u% h; \, E4 O3 Z* E4 d% Noutput axr1,
& n( `) @  S) F; S
assign mcasp_afsr = mcasp_afsx;& o- i, q( Y) I# v( A& t" M, E+ p
assign mcasp_aclkr = mcasp_aclkx;! r, T2 O- M1 i+ T. x$ n
assign mcasp_ahclkr = mcasp_ahclkx;- x( u! w3 `9 n2 |# X
assign axr1 = axr0;
0 v2 X+ b1 m0 E+ J" m9 d6 o7 Y
1 e( |2 V4 v' i/ p! p; J" U5 d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ U$ D5 l3 ]  ?# R
static void McASPI2SConfigure(void)9 `8 ~7 F1 W8 ~7 p$ o: O" v
{
) A# f( Q$ {. E' y. o1 n* X9 CMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 ]) [& {3 Q. E7 Y) ]# \
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. O9 g$ m8 h2 f) i! F' [McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) t4 b) o2 B! cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) E3 `+ m8 c2 v' p- D
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. H9 @/ s; s' }
MCASP_RX_MODE_DMA);+ \1 N! ^# m7 E0 [" c3 }
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ y. h, S6 Z/ B: P2 m& O* G
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- P& Q/ S- A* ~0 w1 x- BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # ~' M$ C8 q* A% V; x. U
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! d9 b) @8 `/ i* J' [
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' ]& i3 K# \, e/ y. g( V' W8 IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# r; ]; y' D* W7 {" D" Y! C7 aMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 q/ T. z, [6 J2 B# r$ ~$ x3 m
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) @$ l. W% t* m% Y  [4 p
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ f4 }+ d+ p6 a; V! n+ ^% t
0x00, 0xFF);
/* configure the clock for transmitter */5 r, p9 q2 t5 ^7 a* I% j" \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# R) o2 i; P' @* G  E
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / e# Z9 c6 @. g3 ?$ v1 i, ~5 N
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 a! _9 K! z# W& X4 y9 Z0x00, 0xFF);3 l1 h' Q- c8 D4 S7 E- b5 s1 H

2 g- ~1 |( _8 s% M/* Enable synchronization of RX and TX sections */
& P' _2 G7 r8 G$ E% OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 L; A- f" r6 M! Y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& D6 @) f, b9 V/ E: k
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: D' y5 s' J% b- ~* J7 g3 U, ?** Set the serializers, Currently only one serializer is set as- W: u' o7 T5 I: L' a1 }8 C# B
** transmitter and one serializer as receiver./ b. A9 T6 _  G4 |
*/
5 H/ |, w# D# J" a9 PMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: j6 {% ]3 q- E9 FMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*. I* y5 v, {6 r& A
** Configure the McASP pins 2 m* n, l% ?8 ^  _1 I8 c* \
** Input - Frame Sync, Clock and Serializer Rx
5 i& `( a* ~$ |0 g** Output - Serializer Tx is connected to the input of the codec
! I3 z! ?- t" x*/
( c1 O5 t3 Q/ d  w0 h$ H" T) O/ _McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* q) I3 l3 r: B1 Y( @5 }4 ~; l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
; [1 j" B6 }8 @5 VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 G& i( Y) c. k- A- T| MCASP_PIN_ACLKX( S  g+ W3 f2 ^) ?" X: E5 c3 o
| MCASP_PIN_AHCLKX
- u! B$ f5 Y$ ~| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 q% o, x5 b% h* [. H
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - v; K! b( B# v0 z# _
| MCASP_TX_CLKFAIL
8 S- v7 @* g% i6 a! }( K| MCASP_TX_SYNCERROR
1 A8 L, R& L9 ]" o| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ r9 Y. t# v: `0 u. D+ Z| MCASP_RX_CLKFAIL
, g) M6 k) e2 o6 ?. m5 T- W| MCASP_RX_SYNCERROR
# }) j5 a7 k' M; H! U- _! ?* f2 Y| MCASP_RX_OVERRUN);5 z) q4 l* c3 {1 R
}
static void I2SDataTxRxActivate(void)
, G$ g6 f& F7 ^% V' l- k$ E{* s6 Y: |1 w# [2 O4 i5 r( T$ N9 d
/* Start the clocks */) F1 R: K2 ]5 n4 B: ?) e' e1 C) \0 {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! U7 E9 M! ^6 |4 w6 T  \/ sMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 ?( q+ C4 K$ F* p+ T: hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ s% B. H' r' G
EDMA3_TRIG_MODE_EVENT);
; L. {7 |+ g( e7 J9 |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   }- F7 b$ B$ p" b- e
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 F7 G3 b4 ]( y" i# _
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ K# }' V& P, y8 m0 W6 tMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 V; Q+ N  s, \7 B# H( |+ a- b+ awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 `: _) j; |$ l5 h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 o8 {! K3 l( a& x; C- VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
3 ?3 _6 a) ~5 ]# |}
) K2 n' U" f6 d1 c! M8 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 R( n: u. {9 l  X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-5 05:58 , Processed in 0.040603 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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