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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
; @. O% K# T0 i; }2 N, K! ~% uinput mcasp_ahclkx,+ w0 g6 J7 k& y% m  p2 _
input mcasp_aclkx,
2 e  c: h* V$ h, M  finput axr0,6 r, f) w1 g% b8 T+ O: q; u% s

5 h+ \. ^$ w+ {& c% u$ n# koutput mcasp_afsr,
. f7 c( S5 M6 h, n* x% {output mcasp_ahclkr,
+ U& w4 H+ _. ~2 t0 @% B( R9 M! Koutput mcasp_aclkr,6 _- j; b! K: i$ M
output axr1,
' t+ B, U' w8 h1 F: j$ f
assign mcasp_afsr = mcasp_afsx;
  r" V7 ?$ {9 e/ ^" l5 w9 hassign mcasp_aclkr = mcasp_aclkx;
; H( d6 r. ^# b! ^/ o9 Zassign mcasp_ahclkr = mcasp_ahclkx;
- R4 K6 W, ?$ q6 R! \, lassign axr1 = axr0;
5 x" ?8 K0 ~( `% i2 y% |" {

$ O/ |: t2 @$ y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 {9 y: ?5 j$ z
static void McASPI2SConfigure(void)
( y8 X4 @9 _6 ]* v{. W0 D( }, N" f, V* z9 o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 G; D- }% ~5 q. aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ U0 k/ F1 D0 ]4 _. g& l2 gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! W6 y9 j) S* v' j9 i' t
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) R( }- O+ \4 \2 n  s8 ]% j- t' LMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 S! R  Y. Q6 cMCASP_RX_MODE_DMA);
* [' f8 g% O& HMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% ]8 e7 K7 N( N2 K3 BMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// @0 t. a& r2 g! ]6 Q" N
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- ]6 i: t/ t( X$ s( TMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) u9 g5 }- H( d/ h9 x; Y# QMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- F, F5 w8 i" H" a+ h  g2 FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  l. C. J# N( c" ~1 o  k# O% Q3 s
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 X* x/ @2 A* ^) S) t( f
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 b( Q; c, V* @: Z: hMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' ]& y- ^6 A/ z0x00, 0xFF);
/* configure the clock for transmitter */( v! z+ i8 f0 @" W% [- [
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 C* M" j8 n/ q/ F( p: `3 a, q" J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 i8 l' J9 E0 p) q) n8 C4 x- r6 p5 m$ I
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 v; @, }: e. @* O  P' S) _
0x00, 0xFF);
% x1 E! I) ~! c! V
7 s: U- x$ k, w. t/* Enable synchronization of RX and TX sections */
, N7 p$ y1 O, F3 dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
5 Q6 d8 ~8 v/ y# i" lMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 l. t9 o) S. \! P' r8 L" @+ k3 k3 sMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 H7 Q$ C' i+ ?* ^' Q* G** Set the serializers, Currently only one serializer is set as0 [4 q8 a" B) J7 N; a& d( {$ M  G
** transmitter and one serializer as receiver.
& c% P; U1 R* Y9 P* b5 }8 l5 |- c*/
! U4 ]$ K( n2 }# U0 P) J" lMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) h4 W% K8 @, {! F0 HMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( ~" I; j) ^& [; `** Configure the McASP pins 5 j( a" K) ~: {$ w; i3 s
** Input - Frame Sync, Clock and Serializer Rx2 \  w5 A0 b2 S1 b/ F+ U
** Output - Serializer Tx is connected to the input of the codec ) e& q0 j; [  r1 V$ q  S" v0 F
*/
; v  J9 D( \1 ^$ m8 JMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- s* ^8 S( O% a9 @- C$ _5 ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 b' g( s8 x% G$ C6 A2 j; z3 LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" R' [$ N+ ]# T! w
| MCASP_PIN_ACLKX0 a9 I8 C0 i: B9 G2 Q
| MCASP_PIN_AHCLKX
. l5 x" T, E& L: C; O| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
: w: J. i+ a! o, R8 k' r- GMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % d- z2 H2 p  D/ a% V
| MCASP_TX_CLKFAIL # U0 J! m' g( q/ l( Z6 S
| MCASP_TX_SYNCERROR. V& k1 ], w: V, g8 X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ ]- v  O$ H- v& J| MCASP_RX_CLKFAIL
- i& q2 ?- F8 D; M/ a9 w& W| MCASP_RX_SYNCERROR ; b: s7 T* e/ o% L+ Y% ?- i, B
| MCASP_RX_OVERRUN);1 _& _& Y8 w  R- V* c  M  V) o
}
static void I2SDataTxRxActivate(void)
$ w* O$ k6 }# a' _/ [{3 U2 \" H) Y1 P  _( A
/* Start the clocks */5 f! X$ k, W( |; T2 Q8 J* u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ E5 v( G' r4 z5 [4 a3 \: ?9 Z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& L' R  @# T) K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' M5 l0 ~- e3 O. p8 jEDMA3_TRIG_MODE_EVENT);" _/ }* u" v2 L, n0 p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% z; D6 |- B  w3 j6 C- rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 J7 d9 g0 J  R) n0 KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) D8 U; d$ M1 o, i3 [McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  `/ R$ R- P. q, l+ Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- q' E9 s- @+ x& OMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);* U2 A  S' D. X) |
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" S: M2 ^. ~% i# [: s}

6 f& Y$ d" B- Q3 v, x( K0 b3 p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! }+ d1 w+ T6 ?& _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-26 12:30 , Processed in 0.042247 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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