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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
' q% [! L* A$ R6 R) X7 z% Ginput mcasp_ahclkx,
' o; |% @. C& X: Oinput mcasp_aclkx,4 d# Y, X3 S& l( N6 W9 H3 O* \
input axr0,
: d4 I! ?/ p& ]) k- l. R! ^' `- G: |1 e' H2 |  m* ?
output mcasp_afsr,) g/ B6 ?5 n/ Y7 Z4 S
output mcasp_ahclkr,' Z: l! s! _4 w( f# A
output mcasp_aclkr,/ l2 @! N0 O) ^* l5 @& b# I
output axr1,
, \6 Y+ y# a& [$ g8 V
assign mcasp_afsr = mcasp_afsx;
% M% y+ N, L: tassign mcasp_aclkr = mcasp_aclkx;
9 S3 \) U& ~/ v9 T+ Q% massign mcasp_ahclkr = mcasp_ahclkx;
: }  ^( y6 d3 x# |( J! J( G0 Kassign axr1 = axr0;

5 X$ K% S+ B, ]  r# O
: x- E# l7 C* A( A
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 x2 s3 l# W& c5 ~+ i
static void McASPI2SConfigure(void)  _2 }2 V4 `5 ]5 b( T' E3 Z- w
{# P( K4 ~" c/ I, z& b% y' C  f1 M
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! y* I& C+ F% ^8 C, A4 fMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# x" y; l9 v8 J0 |  Q( c. m3 {" G$ UMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- f% `8 Q4 D0 ]7 H  w6 ^8 d! \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( ?1 v. `0 N+ ]1 y1 x' _McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 r; A& e9 ?$ a: O- O5 eMCASP_RX_MODE_DMA);" B* H' ?$ y5 M/ V5 q
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 {2 W6 N) t) Q; R3 D# a+ n
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* E! n5 o' C6 A( A) [3 L+ a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 e) y# l3 ]$ O% a: X
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 ?, T) {0 n6 C- `' `% Z3 y/ g9 _McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ g5 p' i6 m+ c# S* g( bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, z, u7 T% j' W9 w' T& GMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ t) k5 `# c8 @, m3 D
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' x& x5 T. ~# B7 h& fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ s9 i& N' U$ Z+ G. O( B- g* S0x00, 0xFF);
/* configure the clock for transmitter */6 s  b: f# Z  M2 k2 s; F( Y
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 U& a+ @6 T" G. V( }2 c- Y2 [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ u1 \) x- a2 K+ ~3 ?* |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 ?  ?! T, g3 k) t/ ?' y- x0x00, 0xFF);
: V" H3 M$ S8 `# p8 O' g( J
  Z" G0 ]2 A9 t! N, H/* Enable synchronization of RX and TX sections */ 8 e3 f) C% Z% E% I, e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) s* k2 f. K( fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
8 J  K6 v  e0 u- ^McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- `" v' Q% O8 D$ h9 r5 c' T; t** Set the serializers, Currently only one serializer is set as% V* I2 l( W0 X( Q5 J
** transmitter and one serializer as receiver.  t" X5 h, Z  v$ B/ b4 ^, }$ I
*/
) f! M7 _  Q1 I, u3 pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) N6 ^; L# j9 E* w+ RMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 W1 t8 x( g% \- S( S9 t% Z  S1 J** Configure the McASP pins & @5 ^0 I0 I( @# {9 I/ e
** Input - Frame Sync, Clock and Serializer Rx" ]; G# s$ F; T7 y* R2 g, d
** Output - Serializer Tx is connected to the input of the codec
: r8 I8 g$ q& O) h! x& z1 G1 E*/; n* Y/ j" f$ O& B
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 U3 R* N8 z& V
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) U3 H& v8 S5 p$ KMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 d, o+ T0 u9 ~' |7 ]0 n4 ?| MCASP_PIN_ACLKX4 w) Z9 \% Z4 i2 x! _5 Q
| MCASP_PIN_AHCLKX; A* Z' f8 }2 X; Q& s
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- b5 J% ]( U2 i
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 |2 Z" \: R' g7 K) f| MCASP_TX_CLKFAIL 2 j4 e; u; Y/ N% n  U
| MCASP_TX_SYNCERROR
. d+ F4 l2 f( {9 a0 o( M# w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 D5 W, v. H4 q1 H9 s) g, n4 h| MCASP_RX_CLKFAIL: p" y* q% D( k  N/ j/ u1 h: T
| MCASP_RX_SYNCERROR
# ?; X" }' p# e. d; l| MCASP_RX_OVERRUN);& P- m5 K* v( n+ r
}
static void I2SDataTxRxActivate(void)
& I4 i7 X: q' D{- O. q' q0 Y; s; C& l" R0 |( l
/* Start the clocks */
" Z. X5 L9 j: v- |( f0 _( q5 ^. XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 f2 V( Q& ]( G, GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) {5 q2 K1 h3 P% [' tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% k, `7 s  h; o  I! k
EDMA3_TRIG_MODE_EVENT);
, I8 p2 l/ A+ H& dEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! t! I; J, q+ q( y  U" BEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 Y$ X* b; h" V0 l8 n. w' x/ ]" K
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);2 N2 s3 {4 d0 b6 s7 g
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: u4 K6 V5 F5 twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- f* o) `, @' Q. R+ ?& W3 U
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( X' d: B9 `2 f+ D: K2 o; z% yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ f% I) @) ~! j9 I3 O- i
}

  J; h$ ?+ e* M! I$ g9 M$ a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: N9 ~0 w# c1 Q9 j$ J9 t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 13:44 , Processed in 0.040407 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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