MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
( h, d/ e3 `  ?% R- e, uinput mcasp_ahclkx,& X, c! k. X- z) g% H3 o2 c
input mcasp_aclkx," l3 L" U% p0 a2 L% B
input axr0,9 b- V0 l8 S$ e6 ~

3 y+ m5 t( |2 J8 j" ioutput mcasp_afsr,
1 m% v; w: O0 C+ Toutput mcasp_ahclkr," u& P$ n8 E: X0 P: u3 G. n
output mcasp_aclkr,
" s2 B, H& c# C9 v) xoutput axr1,
/ L9 W/ o( ]/ P" o
assign mcasp_afsr = mcasp_afsx;3 j+ O) t* M; j2 G+ z2 c; B$ E
assign mcasp_aclkr = mcasp_aclkx;( N# J; C8 o( D/ K2 [: r. }8 t- `
assign mcasp_ahclkr = mcasp_ahclkx;9 C. T4 E) [1 \# D7 _
assign axr1 = axr0;

6 ~; |8 F4 l! s% }
. t) M3 N) E5 `8 @5 ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ M7 a) W! `0 B4 W# T" f
static void McASPI2SConfigure(void)( u0 Q$ }* k- A- r
{
0 x0 p* D& _5 \6 U5 FMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 q0 t9 G8 n" V# Y6 cMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 n" w. n$ G' c  L
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% O2 w8 g( y. U7 ^4 ~. K! XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; _. N& I, B" ?  {' YMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ [: i; @0 T3 RMCASP_RX_MODE_DMA);2 Q9 `0 c1 X$ R7 I5 @) \2 z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) K. g4 j4 Y) ~( ~& V8 TMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# F1 d  ^& t9 K% t+ Q$ _5 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 y/ d% I, Z5 Y! o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: Q! {) M7 t1 v/ NMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 m$ L/ l( H; m; ?
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& p& a1 B0 }& I* E
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* X+ [/ P6 g  l0 TMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 K$ |0 Q- f" U/ }5 d& Z7 fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( j; i( z; d* Z0x00, 0xFF);
/* configure the clock for transmitter */
  m0 H* ]/ @( y8 ?0 E' ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& `3 a) c, c" x6 F) Q, Z5 b. y- M
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: y! s' e( t+ f9 _3 Y1 m2 gMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 d7 N$ y, `& j$ @
0x00, 0xFF);
8 P9 L* k+ W$ i0 m3 x# E4 N  Z$ i
, L; A) A& S9 C; t' f/* Enable synchronization of RX and TX sections */
1 X; o% {5 }/ [" h$ l. iMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- L( Z' t( f6 m: j  M6 K. rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 Q6 l' Q; u" C- B/ ], P
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 s% [% ]4 y& r% G
** Set the serializers, Currently only one serializer is set as7 E" z3 ^; S- ]) ]: Q# p
** transmitter and one serializer as receiver." J8 R7 v: Y0 z2 s9 C6 I
*/
, R' \! F# u0 N: j6 `$ [2 o' aMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% Z5 y; T) m) \8 L( x) r5 l, ]
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# y# W7 c/ d! ^; m" J9 g7 A
** Configure the McASP pins
3 M. c7 n3 d8 y  t* k2 o** Input - Frame Sync, Clock and Serializer Rx
8 i" I/ @. V( c' y" p** Output - Serializer Tx is connected to the input of the codec # M- A* A7 r" U& \- I% Z. v
*/
. X* K5 o8 R* m9 m  v6 Q4 aMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ l$ J" q1 y% a" q8 ]7 L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# N& [  R3 q4 [! c; ]9 X
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX; i. n; e- ~! [0 |* A
| MCASP_PIN_ACLKX1 @: Z9 W7 Q" K; G# a) h
| MCASP_PIN_AHCLKX7 _) p6 s% ^% A; o0 O
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. C! q6 m. z4 R8 F
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 a" y6 ]3 \; X| MCASP_TX_CLKFAIL
( ?' ^8 w6 U5 f- }5 q2 X6 O| MCASP_TX_SYNCERROR
5 y0 E" @2 J6 f: o+ J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: c; f$ ]# L8 ^% U0 f6 y' R% R5 O3 @| MCASP_RX_CLKFAIL! m- Y* v( Z8 {9 _) U5 D
| MCASP_RX_SYNCERROR - [& A' W5 `$ Q4 k% ]% J) K, n
| MCASP_RX_OVERRUN);6 s1 G7 \" K' m) }
}
static void I2SDataTxRxActivate(void)' f+ Q. T6 e  Q+ D7 e
{
7 H( X6 P  A# G, L* i. v" v/* Start the clocks */
; L4 s7 h* ]7 P8 u6 S# kMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 z% @7 {3 y" J& vMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 f8 R( E; j) M) s6 S" m7 }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 @0 F6 T- ?( m, D) W5 u
EDMA3_TRIG_MODE_EVENT);
: u# Z* \2 v' e  o' [. L9 z, p8 x7 VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& X" r5 h2 d. s; TEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ @- y! `6 L2 [9 D) }3 i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);/ w0 x% L6 F0 @7 Z* o# v" S# l! z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 e. g% D4 I; d9 S6 nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* y6 t+ W# [  w) g) \3 q  Y/ mMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ @! I) t6 n# {0 y4 ~
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' g% D$ t2 X/ P' j! }& I3 j}

6 K4 o2 @7 i4 c1 a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 o- [* D9 h( o3 `- c) _6 s) A2 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-22 08:23 , Processed in 0.040409 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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