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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11359|回复: 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,
, `* w# _$ n; }5 o- I  Z9 k! Linput mcasp_ahclkx,6 G  K: a7 A; J. `  D
input mcasp_aclkx,- Y, G: C* m4 ?, P
input axr0,
: N! [0 q9 A5 ~9 }' C% v6 ^( S; o( k( Y- N& t" T& A3 l
output mcasp_afsr,
5 a8 ]& M9 i/ T) m! uoutput mcasp_ahclkr,
  ]; I+ J% M5 h" p1 s$ Youtput mcasp_aclkr,
1 O3 b% {0 o+ z$ x+ g$ B& D* x3 voutput axr1,
6 Y2 F* Q) |3 N" Z( S# u
assign mcasp_afsr = mcasp_afsx;# b6 h3 g% h" y. l3 c
assign mcasp_aclkr = mcasp_aclkx;1 r7 L# I0 N/ b: x; U. G# A
assign mcasp_ahclkr = mcasp_ahclkx;! _8 I$ k9 ~7 l9 Z
assign axr1 = axr0;
1 ^, _' M2 N" ~( l1 K. k6 {

& J! O8 E3 q" W! _$ S! i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 M7 m" o5 \1 }9 B5 E8 {; k
static void McASPI2SConfigure(void). Y+ D; x$ l+ B4 @$ m' E
{* ?, \# `1 x1 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);# {2 }6 R4 m2 w1 F  Z: j- U6 z3 I
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) r& d* T, N. C, S" \' k; eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' ]/ Q. b* k, Q- Z  x0 J! B/ F' n6 nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 @3 X! n" t/ ]- X6 e" ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: T5 V5 b! [+ y
MCASP_RX_MODE_DMA);
7 ~) P" N2 [( lMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( C3 @! E" {$ m* w$ V9 ZMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& T3 K: I3 j! x- C0 P# f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
3 W6 }4 P  Q8 K9 F$ \+ \MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( N/ T: x7 r2 R7 Z* w. U- @
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# Y& @3 ~8 j3 E& UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! M0 Z& W% L1 Q1 D4 zMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 v. A3 I" B& f- ~6 N4 BMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 Y  Y; y9 a% m, {: S
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) q4 o$ ^% h& b4 `0 @8 T
0x00, 0xFF);
/* configure the clock for transmitter */* I) i& A8 d7 N- q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 K7 K/ l, r1 g# x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; k6 P5 D2 I. a+ F
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 J8 k- x4 f6 U; r( f# f# t
0x00, 0xFF);
& x' U* {" F/ I$ G$ J# N/ l9 d2 q# r5 A/ @$ o- f0 }' Y! Z4 F4 [# N
/* Enable synchronization of RX and TX sections */
# y0 b  P% j- k6 _; RMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. q$ ~: {) @. p7 L; X2 |; uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ x9 z/ \0 R) rMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 i: u8 a2 U* n& u** Set the serializers, Currently only one serializer is set as; e6 r0 F6 t& `! T4 ~+ v
** transmitter and one serializer as receiver.
4 b! H( i1 F, G" g*/
7 I+ u1 m* `  w. t$ a1 bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( y  r8 {6 [  S' \. W5 e2 Y. |! y) O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: }  _: s. T. y4 f) p  }** Configure the McASP pins " p8 {  K$ i. C+ F. p, _
** Input - Frame Sync, Clock and Serializer Rx
3 E3 z7 R6 K+ v3 Z9 Q/ }** Output - Serializer Tx is connected to the input of the codec
6 s, F5 m: H) x- B" }*/* {$ D9 H! }# h% l2 S/ p1 w0 x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% m2 @5 M1 F& ~3 ^+ [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" e# r' T9 e1 X6 oMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 |9 V, B9 @& j. q/ f4 D* n
| MCASP_PIN_ACLKX
1 L& {% T& N7 C3 K% {: Y8 L, i0 D| MCASP_PIN_AHCLKX
4 L6 S1 e; n. l$ f| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' i6 i" F  G0 k9 @: J
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" K2 t( y# R, v5 Z. E6 H| MCASP_TX_CLKFAIL
7 P4 U- n9 j1 h* g: r+ n; X| MCASP_TX_SYNCERROR
# i  T" j7 U8 n1 w/ w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " [3 l" W: `: ]8 V
| MCASP_RX_CLKFAIL
! k+ q8 R& s0 l& x& b& C. J! r| MCASP_RX_SYNCERROR
& H, _) b; Y' _) H4 _| MCASP_RX_OVERRUN);
. e8 J4 R8 r) F7 q}
static void I2SDataTxRxActivate(void)
" @9 ~  k! M' C0 J! L/ d2 }{
" B( g1 U8 y- b5 e2 F( w8 W6 F/* Start the clocks */
3 d- d3 A+ `3 U. FMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- i8 c7 r6 d  l1 D: p% J: S% {
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 a3 y& X6 F( U) b8 \  OEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 _" b5 m9 `, e' `& I/ e9 GEDMA3_TRIG_MODE_EVENT);
6 [5 m" O: t: u& D5 ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ x9 I- y. C( \, z$ o
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ A; u' V6 i) n( r) f
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% T/ P& u  @$ z2 X* {; ]( OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ x# h& g4 I7 @" H4 M' Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: ~7 r2 j; `; P2 d) H- ?1 t/ NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ a" f5 H$ ?  S' f; {: f& @8 z; j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# F/ D0 k- L- ?2 x}
5 X- G/ C! A# W+ o7 d- G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
4 W' M! v. j( q% O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 07:12 , Processed in 0.039957 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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