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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 7991|回复: 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,$ S# R& f& \% q
input mcasp_ahclkx,
* R) {+ a. }" L% Pinput mcasp_aclkx,* c5 Z" ]2 p& ?, u
input axr0,
) W9 \: X) H  i) C( B. c9 i7 {' Q" {* _$ T
output mcasp_afsr,
  |4 g. A8 u& c6 \+ p5 i0 Xoutput mcasp_ahclkr,8 q% x# `7 ~5 @$ p/ Q# G
output mcasp_aclkr,
, C! V7 r# ?- L' t* R( _' Routput axr1,
9 M0 C8 C9 ?( M. o" x
assign mcasp_afsr = mcasp_afsx;' L9 }% g/ G7 F+ i3 X0 [0 M
assign mcasp_aclkr = mcasp_aclkx;$ |; c+ a, E( o- ]. f& }7 @
assign mcasp_ahclkr = mcasp_ahclkx;
% n% W$ |3 W+ L/ A6 Uassign axr1 = axr0;
7 f1 ~; A5 w) u* i6 R

% J. s. g# p' m# ~1 i( K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: r; |. ~3 C7 L4 K. z
static void McASPI2SConfigure(void). c- X% [3 e1 u" k3 w! Z! |
{" l- A. Y( P. g1 @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);2 o8 o" V/ N3 x. K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ @/ j! o: k$ t1 c( h2 G) P3 I+ gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);% x) M8 G. l; b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 K4 p8 L" E+ @5 p/ Y5 }& g3 V
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 Z; m2 w) s% F/ f9 @$ tMCASP_RX_MODE_DMA);
, _: k( S  P% A7 M) S' M8 sMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 U, v8 \5 z5 s) AMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ i7 E' S# a' [5 c0 C) v9 s4 W3 j) LMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- W' S( N* L( jMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ x+ w2 d/ H# w. M6 \
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 b% l2 w, V  i; a$ E$ S/ qMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; q# w! c, g$ ^4 @: d& `6 w
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 `3 n, I/ s) s0 }+ C+ S/ i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 X: Y4 i3 U0 SMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( \/ L6 L7 G/ ^1 g6 [0x00, 0xFF);
/* configure the clock for transmitter */, j4 y5 J+ c3 [. [- x
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) H  p' _( A; T# y. {7 WMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - @7 ]7 H6 h& o1 C# t5 w' I$ J# V, h! b
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' Z, T* e& b8 \7 n# @; ]0x00, 0xFF);
  k7 ^. b, ^/ P5 ~- |* i% X
6 m/ O) D8 ]8 G) y4 T7 K  v/* Enable synchronization of RX and TX sections */ : O/ x% V6 F- b0 Z! I
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. G8 M  C' Y( E) q6 ]McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- D2 C8 {0 A5 X+ @8 |
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! n; h' x9 U0 l; @" G$ B' v
** Set the serializers, Currently only one serializer is set as9 r( ~0 r# ~, S- C' r( M- \8 o
** transmitter and one serializer as receiver./ C, f: |- d& a1 U
*/
% ^$ B7 m7 h) A1 YMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  d. k- S- w5 s% ~2 i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% {" ^! m$ R1 }4 _) q" e& V& I** Configure the McASP pins / g; U8 C% u2 J5 l
** Input - Frame Sync, Clock and Serializer Rx" a5 N6 l; R# h) V: {& E
** Output - Serializer Tx is connected to the input of the codec
+ J+ l4 u& F: Y1 B" a/ w! [) \( i9 b*/( }! o' I2 I. ?7 A( M* ~
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 g; t( v+ T! `- G6 W
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 d9 n. z) }$ a, E3 l0 ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% i3 q. z( ~: r( E
| MCASP_PIN_ACLKX
# a8 W7 h* x3 t  X: ]/ Z8 ?| MCASP_PIN_AHCLKX
  J! x* u" J9 s. f& W* V9 D$ j* b( ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  X# |9 _( N+ W) t. V/ `- v
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 V2 b9 o. l1 [% a1 j* q3 s; S
| MCASP_TX_CLKFAIL
( u; g, L  S" Q; t6 I) E( ^. K* o! `| MCASP_TX_SYNCERROR
' U0 s6 _0 i- v. f- p9 }| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ v  N5 L3 T) v| MCASP_RX_CLKFAIL& i+ E) P# r! t9 T! M3 W
| MCASP_RX_SYNCERROR ! s$ S) q" R" u
| MCASP_RX_OVERRUN);* n  T/ U, Q7 U7 @8 s$ e
}
static void I2SDataTxRxActivate(void)
, ]( ]7 l  E: r{
3 }0 h9 V4 x$ q) @! k7 }/* Start the clocks */
( T3 f! e+ @  t# C% O5 zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 n/ A$ w. P! h6 H( F/ ^6 v2 X- N
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 _2 y& N& Y3 G# y% y& E+ {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# V' S; Q5 U! `9 ?1 ~EDMA3_TRIG_MODE_EVENT);1 J) C$ O0 M5 o  ], P: d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " M7 q  T1 L7 t1 N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! |) X  E1 r# @# S0 v
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 H: ^+ F$ d9 F8 o. j  ]4 W. mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 C) i4 x" h) T  D7 hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 Q- L  s' q3 k0 F  N- W9 I+ [
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);3 c( i2 L5 z( ^! @8 H6 O6 K. }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- |5 l5 b6 F4 R* K3 D  h  W' {( A}
2 \( i0 |# ?* _
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 c9 U  }* _$ r4 N. v: t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-18 20:13 , Processed in 0.036347 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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