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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
7 F# I1 \1 K/ G8 Ainput mcasp_ahclkx,
1 S8 ~. `- C+ a" x3 K) Kinput mcasp_aclkx,
5 d9 D8 t' b8 U8 W5 _4 ]- Tinput axr0,
# E7 \  u1 @% z, z' J/ ?4 E) Z4 z2 L, s! C8 i8 _: D5 c7 G
output mcasp_afsr,
1 s) V- n7 n; P& W! j' O' boutput mcasp_ahclkr,
6 d- D: R0 M% voutput mcasp_aclkr,
3 _  C- N/ Z  }0 Doutput axr1,
# D8 L8 F6 I8 E8 J2 N- s) @
assign mcasp_afsr = mcasp_afsx;
( r: a( u! b: j! @, ]+ k- O) g5 g: tassign mcasp_aclkr = mcasp_aclkx;7 d1 Y( J: R) w8 U' K
assign mcasp_ahclkr = mcasp_ahclkx;; J2 T2 J# p+ g' ^8 p
assign axr1 = axr0;
3 ^, ?/ Y2 C3 ]( ?4 Y6 F
# x- W, _6 `& O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 R+ O# y/ ^8 W/ U2 L  b4 Q# Y
static void McASPI2SConfigure(void)
. j2 Q' a6 @# k. e8 c/ R{4 T+ g0 J5 J  O( O5 Q, S8 b: a0 K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);8 P% v% ?+ p/ ]: Z$ _+ W
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ a/ t1 W4 x! E0 b" K& mMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 E5 _* \' |8 f: e. T2 ?8 eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" r3 `$ g$ Q$ |. y) f% xMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& C7 Z. p8 r3 c% O; x  y
MCASP_RX_MODE_DMA);8 w. d& ]$ x, W; T! B0 x
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 E  E7 k' n- C/ ~6 k( K, ]
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// ~0 T) l4 d3 T. G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % f# U7 V* g& i4 m  j& u) m4 C
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) ]9 I! P. N* B0 c: q* jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
6 M3 I/ ~: K9 MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' C+ ^; D5 p8 {' v9 x
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) ?" i; q1 I+ W5 ]# IMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); % i2 q" g6 \, ~% |
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
, E2 h3 h3 a" t! ]0x00, 0xFF);
/* configure the clock for transmitter */" [" J/ c  f# M2 F
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; O2 w4 J! s7 F# Y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, _0 q8 ^, R2 ~" Y+ ~McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" Q! c/ _+ b% s! o0x00, 0xFF);
* K2 R! y) C$ L5 i; S! ^0 p5 p8 r0 L7 a& B6 ~6 e
/* Enable synchronization of RX and TX sections */ 7 n1 u( _, L* C1 b& [# G! p0 @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ ~7 V9 _) j, {& u
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) U8 U# t; ~5 R0 m! _- h; ]McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  X7 K% n& V3 V5 @* n** Set the serializers, Currently only one serializer is set as% e2 }& N( |5 s6 A5 f- b
** transmitter and one serializer as receiver.
# a6 E4 _* U+ f2 p# S*/
( y* T* A1 i5 U  f0 D' j3 WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ `! ?2 T9 R9 p' H2 F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ J# C# K- \5 |' S
** Configure the McASP pins " E3 x. H- A, J, d6 T5 r, q( I1 g
** Input - Frame Sync, Clock and Serializer Rx/ |4 C" b' K! G" D. ?* J( m3 v! I
** Output - Serializer Tx is connected to the input of the codec
) [% s! z2 c: {* z*/" _3 P. O2 y" r7 W) H- w1 J$ p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* v' p8 r  S- M! t6 n+ l1 L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 c2 h& u0 D: G7 Y% e
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) ]( ~6 K. `0 g1 f| MCASP_PIN_ACLKX
: f: \! r. S4 U5 b, I8 q| MCASP_PIN_AHCLKX
, G$ E, c6 K% l| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) H9 |6 G% M6 U% }. y$ |McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 s( o  i& l& H7 M| MCASP_TX_CLKFAIL
3 b( }! T; `) }$ t1 E3 Q$ Z| MCASP_TX_SYNCERROR
# B( E9 @7 @+ a- J* k2 V| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) n- l# j  z2 R| MCASP_RX_CLKFAIL
7 y6 u1 g6 L( T; R9 _| MCASP_RX_SYNCERROR ! u* i5 m# x* M
| MCASP_RX_OVERRUN);
( w5 j% H+ X5 y" p$ p$ x  {}
static void I2SDataTxRxActivate(void)
8 Q2 _9 H. a: E+ ]{
  C( u7 y* W* E2 H+ X2 w/* Start the clocks */
! C9 f: |9 {" C/ uMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ v- v' j. c/ p& x. y' D2 j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* D  c. w' g  o' I5 a8 A1 b6 m$ _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  z/ }/ e' N* T: x8 }' V4 OEDMA3_TRIG_MODE_EVENT);% D, Y; O! S; O% [: j. e9 C- C& l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ `  e+ T- n' j, G( v
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 P( Q+ D+ ~* v. a  z5 \* C) n
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) Y4 g1 f$ u# S& E( l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) |! O/ q" w# V
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; b' O6 O$ X2 s. w2 ]: H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( _! m; q* K2 _, ?" X8 S- zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);# m1 D2 L0 L, h( \( f3 }
}

- Q' h/ s* V* F* j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% q& t- `  t% [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 01:46 , Processed in 0.039532 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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