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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11188|回复: 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,
: P* {& @% B3 T# o7 N' X0 \input mcasp_ahclkx,
2 S, W5 G' I* s/ H4 j. pinput mcasp_aclkx,
- [. G1 P; v- s9 Ninput axr0,% Y4 i+ q/ k. _/ u" @2 R  w7 {5 M& [
* X/ e9 D6 J/ q! \3 }
output mcasp_afsr,( W) b2 K: C0 P/ V( }
output mcasp_ahclkr,, @; y$ P9 ]  u' W* o8 J4 [: g' L1 c
output mcasp_aclkr,3 `, b6 m( O7 ^+ v3 o
output axr1,# ]0 f2 r7 {% v# S4 D1 A4 [) P
assign mcasp_afsr = mcasp_afsx;  z/ n8 _7 |6 B* {1 Z8 R& ^
assign mcasp_aclkr = mcasp_aclkx;
% w8 ?4 V9 \  f: rassign mcasp_ahclkr = mcasp_ahclkx;
: `" G1 c) ?2 I: N# j) T" C% kassign axr1 = axr0;

; U0 N" `+ V3 d: X4 r1 K/ x4 U3 X, V* |, {* a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 \- }4 x, S/ Z. b) L
static void McASPI2SConfigure(void)0 U% k3 E- O8 D9 l$ N
{
5 ~: T# r2 r5 r0 [/ S" d, |McASPRxReset(SOC_MCASP_0_CTRL_REGS);
. p" d) y9 X9 B( _: A4 W; w: GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- f1 k. i5 A0 n
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ v3 H3 W4 D5 u" }' |4 l2 p5 qMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ A7 u8 I1 M& N+ n3 Y! S
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. l( X- m9 t% F4 L, u( ~
MCASP_RX_MODE_DMA);
$ p/ Y6 {: N9 g$ ]: }9 k5 T- A3 J8 HMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 J1 q  A2 w. ^5 U5 Y9 j7 ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* B4 ]( n( R7 T1 o3 lMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 n3 r) ^) P' t: j5 f2 oMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; r  y+ K8 G/ B8 z0 jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   }0 @/ U/ u. D- l0 g  S2 [
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! O' F/ c/ K$ p5 b! \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, p  G3 T3 ]9 G$ V: d; ^. V
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 f4 v8 J% q" L0 j- D/ f  V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) J# y9 R$ n& R+ q  [: d0x00, 0xFF);
/* configure the clock for transmitter */' \* X4 D, [2 n
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ ]/ J# n7 X* ]9 \
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); . \; L6 ^- I5 j
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" B! W; a5 u; y' h0x00, 0xFF);
* w" i/ J7 O  u8 P
  @' Y& r% z0 m+ f' w' R/* Enable synchronization of RX and TX sections */ ! P4 g+ n& }9 \6 L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' R- H$ ~. O3 I% }" ]9 FMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 [( ]7 T; ~) y( L# b
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! @+ y. @$ C8 z
** Set the serializers, Currently only one serializer is set as5 k0 T% I" c; B# E
** transmitter and one serializer as receiver.$ q0 t* K# p  [
*/% e$ a4 j5 w7 S$ z* \
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' h1 v4 d9 U8 Z5 @/ j9 g" y5 s
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# N+ P5 V0 y- M- [; _** Configure the McASP pins
0 M$ o$ }' M. R( V# t** Input - Frame Sync, Clock and Serializer Rx
6 y, z& o, I5 G3 C/ B6 T5 h** Output - Serializer Tx is connected to the input of the codec
; s8 C- l3 C3 F; O7 K*/
0 n+ w6 J: y0 ~, b% d4 GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' p4 ?: ~: O0 b& r) r
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ R& J( o/ I( P- M7 E( j
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 p, U2 u( E9 K+ O8 Y| MCASP_PIN_ACLKX
. `$ G. t& e3 f4 D) i| MCASP_PIN_AHCLKX
) Z( S1 ?5 p6 m# L1 C$ z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' f* }5 y4 ^: f3 U4 L" k* S! L$ Y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; ]  N$ g1 x- l% C, `1 }| MCASP_TX_CLKFAIL + B/ o' |4 N' d% [- }% m
| MCASP_TX_SYNCERROR8 W- U6 W/ q2 ?
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 a8 ?! e4 H0 e& T" @" j/ Q
| MCASP_RX_CLKFAIL  m8 _/ q9 q  E) ^6 }; k
| MCASP_RX_SYNCERROR
" F1 T( w: x' W# d: o* [: M| MCASP_RX_OVERRUN);+ ~8 g) k( f: W7 g2 A
}
static void I2SDataTxRxActivate(void)! O6 W2 J/ d* O& y1 l+ R
{* J* S- i& n* _/ [- h5 @3 H
/* Start the clocks */. g- w$ C' @& L$ K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- |; W" ?9 v% P( x# g/ l$ ~5 \McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 i. a& r( V/ P& x/ S: I+ W/ Z( yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ r# @* m8 G  p. o' P
EDMA3_TRIG_MODE_EVENT);
' q( f6 \- S3 G- O2 b+ p/ ?6 mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 t) e* \$ O5 n4 L0 @, C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ N! }/ h9 x8 b. ]
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 Z' U/ H/ Z5 t0 r( [McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 Z, e! }0 {6 C) K" A+ }; [
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; R! Y: j6 z7 }" |! ]* k1 M' {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 P* U) Y2 W0 C7 f7 H9 kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. }# v2 x! G5 ?: h3 l! S# F: h4 v}
7 I( U  C# u$ W1 P* [( l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 ~4 m3 ~+ g3 b, H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 18:09 , Processed in 0.039659 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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