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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,: x& c4 B) U, G& p0 Y: u
input mcasp_ahclkx,
3 k0 e: x! n& L( F2 binput mcasp_aclkx,1 s5 X: l* q% V7 p5 V7 ^; R3 b
input axr0,
7 ~9 D3 C  G2 }* M, M0 k
6 X! e: F' o4 l2 i( _output mcasp_afsr,
4 R) r+ D- J0 C' ioutput mcasp_ahclkr,
" E$ G* ~" c  ?& \( Woutput mcasp_aclkr,
- G) G7 A+ f0 w; k! {9 c4 C9 Aoutput axr1,  s8 M/ ]( a& j" j8 K* @
assign mcasp_afsr = mcasp_afsx;
) }- @* M% o' t+ {$ |assign mcasp_aclkr = mcasp_aclkx;
0 B2 X0 `, J/ Z: u7 |; yassign mcasp_ahclkr = mcasp_ahclkx;% Z: Q/ Z, H4 ^* [# ~' i
assign axr1 = axr0;

3 ]# Y) o* E- j; c2 ~$ @4 u( X& {. v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 G- X- `: n/ v9 r" F- N
static void McASPI2SConfigure(void)0 z+ d. e5 m0 ^5 {" O% a
{
) x: U& M+ S0 T2 yMcASPRxReset(SOC_MCASP_0_CTRL_REGS);( M  t' Z& x1 c. k6 `! r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 x* k' p, b- U# R7 i2 o
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 A* g, R' @3 K4 o$ X6 ^. {" {
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 I) C) s7 I9 @. W
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  t- \4 v4 }0 W/ s8 e6 Q, w
MCASP_RX_MODE_DMA);8 Y" y" n" J- a: B& T! F# m. r% B
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: x6 x7 ]- ^4 l7 A+ ^
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 i1 \9 y# Q# i6 E$ RMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 q2 {3 L* {4 X3 B; i1 {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 r! `: Y, X! w0 @1 _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 F! t; ~; Y2 ^- C' ?* g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* m- F; D! }: h+ ?6 x) Y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) X7 C( T7 ^: p2 k! u& zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / U" m; E/ Q! i; o3 }3 c2 |
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. @7 ]3 ^; Z9 j) z, e8 N  ~/ l0x00, 0xFF);
/* configure the clock for transmitter */
$ a& h3 V7 J3 M% y* \' P$ T- M7 OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 \2 I8 b9 r/ t1 ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 C$ E, U5 \. yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# A  s# e" \( \% R! [- E
0x00, 0xFF);
& s. x7 W# R/ |. v! I6 ]' ?2 g' u, n$ L  V/ F
/* Enable synchronization of RX and TX sections */
% j5 d4 R! }. JMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 k1 y0 A. {" z+ i8 T) D" s5 q7 xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% P' D, l/ S" [: [% r+ F; x
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 e6 G6 B$ Y& [$ G* C
** Set the serializers, Currently only one serializer is set as
( [* W+ f9 o6 T; w5 K" L** transmitter and one serializer as receiver.8 Z, p6 x, M  Z
*/
2 A' Q; v* B9 o/ U% r3 ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) e7 C# h8 z3 M7 l. ~! r  lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, s. N& v0 ^7 M" j( P7 A( Y- X+ i  o
** Configure the McASP pins " o) G8 }( P. Q) n- g& Z0 S9 \9 T
** Input - Frame Sync, Clock and Serializer Rx
1 c5 ~6 l0 G6 z) C** Output - Serializer Tx is connected to the input of the codec 6 z/ K6 f) W4 a7 D4 w: M, e
*/9 `8 `) a, \! ~0 S. G9 e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 s: }+ h6 Y- }0 P: }8 P  \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 B0 v% Q% p, e; W# {' b6 T: ^7 `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 y! D& K; b1 F0 g
| MCASP_PIN_ACLKX
" z- o  T' H3 ^; v/ |7 k| MCASP_PIN_AHCLKX
( }- `' o9 s' J! \1 b9 Z: j| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 C5 K7 i4 {5 p
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; n' c& r6 W6 p( E+ a, B| MCASP_TX_CLKFAIL ) A& O4 u; ], K4 C
| MCASP_TX_SYNCERROR+ i5 ^; l9 r% C4 ?8 e7 g7 Y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ f( |  _' Z! t: M| MCASP_RX_CLKFAIL
% d& H: L% H  O" G( C; S| MCASP_RX_SYNCERROR 7 ~" b- c" l5 A/ Q9 B
| MCASP_RX_OVERRUN);
# k; `9 S! o" F$ U+ m( m9 R}
static void I2SDataTxRxActivate(void)* ?  {+ a3 L. a4 o1 i
{. T+ {' I* @" |( b. h6 V
/* Start the clocks */6 Y/ P3 C, T: b% A! L
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ I9 F6 a( ?! ^' }6 l# @" F9 ^, jMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */% [' T7 t* ^, j1 ^! u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# j$ a2 V: q. P, m) z7 }7 j' P
EDMA3_TRIG_MODE_EVENT);
# I. I4 m: D7 H2 Y: iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: b/ G* x- i$ Z7 R3 ]9 S2 v; rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 v  N$ T# `: u' R3 [McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. H" f+ n; X) h+ d
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% A0 O5 v# y8 h$ f  p7 Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 e- U. W5 R- ]8 R" G, ^
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 K8 w! N5 G; `/ ^: bMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);& S; k' \, ?: P1 t  }( A" h
}
& D3 t1 j& `3 R! S# i
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 x% s( l( q  k6 a$ S; N8 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 04:14 , Processed in 0.040388 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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