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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9291|回复: 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,
) Z# a9 l$ ?5 b- Finput mcasp_ahclkx,
+ j+ Z) _; I  i$ m* minput mcasp_aclkx,
4 z* Z7 Q0 R4 p  Ginput axr0,) i0 p6 C! U: C( L, V
: R0 W" F  a- S# s; U0 w
output mcasp_afsr,
7 {. f7 K/ E8 W; W% l1 joutput mcasp_ahclkr,& l( c; ^5 r( h' T( D, Y
output mcasp_aclkr,
/ g) i- g. Q1 C) r% x3 I+ Routput axr1,+ R- t) B( \% p  L+ \+ K# D
assign mcasp_afsr = mcasp_afsx;
9 c+ q1 P2 j, C& m9 w  Gassign mcasp_aclkr = mcasp_aclkx;
. h# G, O. p* g9 ^8 qassign mcasp_ahclkr = mcasp_ahclkx;- ?- T5 B" _! M, C
assign axr1 = axr0;

3 N3 l4 @0 o' J: C$ R3 B
! ]$ m6 t, m* x* r+ q* {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 n9 B3 l* x1 _
static void McASPI2SConfigure(void)
) D3 V9 D& S) V" B0 ?* b  B  \1 r/ t{
! Y" N. q! S5 \6 E' nMcASPRxReset(SOC_MCASP_0_CTRL_REGS);5 `( L( e$ g, _/ a; j
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 Z6 I/ j0 S- v: Q% q& H) QMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 p( C3 ?' h# e) ^( R4 [9 f
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" t: O" k4 s8 W( G7 ~7 S0 jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 V, T" g# F' p3 l3 G
MCASP_RX_MODE_DMA);8 r8 C- Z5 K' F: N. B
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 r/ ^9 Z: A9 o* a2 t* }. r/ nMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 k8 n. ]; o  X/ w  w( }( f3 P0 wMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 O, D5 v% I6 D5 D/ TMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 J4 p% L4 L, u* A/ u, H' }4 ]3 z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # \) K5 Z: w" \  {" R$ ~5 E" a( m
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) S* ]; l, O) `) ^4 r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* U" U3 a0 Y- ]3 X5 vMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - ?; u# r: A  `9 U& `( k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* K! t; O, k$ D
0x00, 0xFF);
/* configure the clock for transmitter */
. e; l, |' W; N0 j5 _5 R9 i# pMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, q/ v8 |9 h+ N& f+ b6 r# u( aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 W; H" u' |8 F+ s2 t, qMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 B; \& F% d) \$ p" V& q
0x00, 0xFF);3 g' X2 K5 z3 \8 p8 t

' L% r/ j5 [: g9 N) W) U/* Enable synchronization of RX and TX sections */
0 d* [0 B# O0 y- O4 NMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' e8 Z7 y8 o7 K2 U8 U& ~McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 S7 P2 F& g& V6 f. \
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% A, J' U- [$ P" ~0 U. ^** Set the serializers, Currently only one serializer is set as8 H$ ]- z% O3 M
** transmitter and one serializer as receiver.! T" ]5 @3 `) Q/ S
*// Q. L/ K5 r* C& c! N  z1 s
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# j  S$ e( @: Q* c7 v; J5 J0 m
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# y0 ~* {0 }+ |; @: U* T
** Configure the McASP pins / m; O+ f' X( c
** Input - Frame Sync, Clock and Serializer Rx( s2 ~# \+ |. E
** Output - Serializer Tx is connected to the input of the codec
7 g7 j1 |% I4 ~( |4 u; C7 W5 s% |  \*/$ ^; Z5 ~5 ]% J+ _5 }
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);; K) X8 K, w6 ]/ \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) L) O: B& ^2 x) u2 U# L6 c4 yMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ j$ c; F, N' C( i) z| MCASP_PIN_ACLKX5 u% c; F! T2 ]# H! [! A% ]' a
| MCASP_PIN_AHCLKX, D( t- e8 b3 l+ I% J
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! D( ^+ Z2 Q  RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 p' Y  B; [( @| MCASP_TX_CLKFAIL 2 U) C# T% e4 V# k
| MCASP_TX_SYNCERROR3 ?& ?+ h6 ]0 T' _- @4 f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! m" A: O& b! A$ l! f9 B: M& N
| MCASP_RX_CLKFAIL
0 `3 x& B8 m& P; D2 Y( |7 |! W$ @| MCASP_RX_SYNCERROR
+ u; v0 p0 y* s# D( ?| MCASP_RX_OVERRUN);
) {/ n- z; ~, E" c4 M6 ^}
static void I2SDataTxRxActivate(void). D# q* z4 [$ ?/ f
{) y+ q! D1 p8 f1 W2 x3 b
/* Start the clocks */; U. O! V; l: p* H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, x: x) k4 V  z" |& p) x8 R. A5 M
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* p- l* H8 C$ Z6 Z+ j$ Q* v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- X# g2 ^( h- A2 G4 R' vEDMA3_TRIG_MODE_EVENT);
: ~* B, s* p+ k2 ?8 J/ I; OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ o. V' _3 x" X" t% b6 PEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; {7 W0 M1 a3 S6 w7 e7 g
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. h7 g9 H9 S- }5 A
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' J9 }  h: F. o! Qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 w2 P6 ~$ A  N  j6 O: S+ p8 zMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 K, l/ {3 X/ Y* {! JMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( V) V) K  T9 ]6 m4 z}
8 L. v* D% D0 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' m6 f2 `% H1 C  l' `+ E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 08:08 , Processed in 0.036842 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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