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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1208

积分

金牌会员

Rank: 6Rank: 6

积分
1208
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,+ r3 W/ |/ K# m- C" K7 P
input mcasp_ahclkx,
, q9 ]4 ?8 [! f5 h1 g$ Yinput mcasp_aclkx,
1 A' @3 j% f  `$ M& u& einput axr0,8 Z- U- X9 u& ]/ X- R
/ [  t" o# M9 q9 b4 V
output mcasp_afsr,
8 c" Z+ t8 j& g( _0 koutput mcasp_ahclkr,
: r# w  Q" b# X) m4 k9 K) Joutput mcasp_aclkr,
9 N3 v9 y* D; ?6 Q0 k0 woutput axr1,; M9 I: d& j$ G7 F" F% ]
assign mcasp_afsr = mcasp_afsx;# M8 i5 F* t) p3 n: n
assign mcasp_aclkr = mcasp_aclkx;  U# N8 z7 X" B0 L2 e4 q# X
assign mcasp_ahclkr = mcasp_ahclkx;
+ v# P: W! @" C' J$ ^, nassign axr1 = axr0;

! w8 `# A: h' g7 C% o" W: Y, ?0 s5 x0 N# S& `; C$ q' [+ ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

: N/ \; i. q  L+ V' U! Q$ ~
static void McASPI2SConfigure(void)4 Y! {$ M$ H/ T$ k; M' U
{
- T& b# S- e% ~' `, C8 f. e% V& j% IMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ o0 \" W3 j% b; N0 LMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( q  P+ Y. V$ F: M- n, `/ A. i, W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' _1 l3 _: k2 ^# |+ |% s
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ l5 T9 F; f1 Q/ i; O# }( hMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. L# V: b  J$ a, OMCASP_RX_MODE_DMA);8 U. p/ w; W7 ]0 d7 N8 h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 m; M( }* Z+ [3 Y, k" OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- Y/ }. E( J; f7 W8 C* yMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' I) O8 k1 g5 Q; f2 ]* W! lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( a9 I6 l: V$ A+ Q; f
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. J* ]- y9 r9 ]9 ]7 Y& ~* b$ H: OMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( P+ ^+ X9 g, N+ O8 |McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  T7 F7 K" U7 B0 q- o9 dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 l6 j* M) f6 E! y$ ^
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# p& b; O' V% ]- q$ v. ~/ ]0x00, 0xFF);
/* configure the clock for transmitter */5 w, j, }# h" G0 s$ d7 G' H- s
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. T& L$ d( S8 p5 Q6 w; J1 d
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, E. k$ V8 I& Q" sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. @- }& t* N" S
0x00, 0xFF);
1 f# ~. y* F& f1 l; i# _/ o8 j. e# n3 C  F, h
/* Enable synchronization of RX and TX sections */ 5 t% `  s% u: Z. D" c& b
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) y+ E9 H: T- i% V8 J: }McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* X- Q0 p7 ~: G7 p$ v' U1 ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 A9 L0 M) Q& R/ c7 ^$ }% y4 d& }** Set the serializers, Currently only one serializer is set as
5 A$ o) v+ [' Z** transmitter and one serializer as receiver.
' D- N. Y' I3 B9 f*/: b. |: _0 q' m% r3 S! J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: E6 a) H8 d1 Y6 b, l7 M1 BMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 N8 f7 V1 W' s8 j6 h** Configure the McASP pins 4 [# n, U: {( c; M2 ]) `% K! D. e
** Input - Frame Sync, Clock and Serializer Rx
) r  D1 A  y4 K& w' J5 @** Output - Serializer Tx is connected to the input of the codec $ q2 U/ x6 Z6 a: t2 W
*/
$ P- a7 U( c4 B  n) d5 s- }* DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ V7 s- J& w+ f) R8 MMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 q' Q3 _/ A4 o
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: _, @, \: c! ?( R0 y1 F4 N
| MCASP_PIN_ACLKX) C* ?% \. z1 n' I, u/ @, z4 q$ x
| MCASP_PIN_AHCLKX
& F8 p' }. k. L) E- |. M| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 H9 u- Q1 \* f5 n( A4 y4 y. y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 e, E% @, a5 F1 H( H: I/ O" l6 B| MCASP_TX_CLKFAIL
% @/ `6 E  _8 l- u5 `1 L0 K" e| MCASP_TX_SYNCERROR
- S% i6 @3 D3 h; q& J- J, T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * u" D8 n1 t, _9 p* y( w
| MCASP_RX_CLKFAIL5 U) P' r, y$ w9 }0 J
| MCASP_RX_SYNCERROR   T  u% x! Q+ ^$ |
| MCASP_RX_OVERRUN);
! O3 @/ u' t) g9 _& Q* N}
static void I2SDataTxRxActivate(void)0 p6 A+ }/ F0 y9 E2 i. @  \
{% k+ x; Q, o4 h! N' m9 ]. k0 J
/* Start the clocks */
/ b6 K  c4 _' ~3 Q7 u- `& KMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 M" R: L! T; W, a. }$ `) K5 _9 i. Z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& L$ e( N; {7 X0 p6 @$ M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' M3 N* K2 s7 W2 V. h
EDMA3_TRIG_MODE_EVENT);
1 q# O& T- ]$ Z5 f& lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: v( e: R7 W7 y5 z  GEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  [' c6 y4 J! p! Z3 M$ VMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 Q' Q  E/ `: J4 n( E& {* X" b
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ w, e# h2 {2 \- |# Q  S' Jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& `' L% n( e8 ]! V/ {+ c6 `, {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 X5 ?* f0 h2 S3 a$ q, R. l, H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: g- g- ^; A- ]6 G3 e}

( D" s* J! T* L. t0 C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 A& V5 P/ s6 H# Q" _" [0 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-7 20:47 , Processed in 0.036189 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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