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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9399|回复: 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,) h, s. e9 f* d- j3 f
input mcasp_ahclkx,
, C0 }" {! D  N9 S  Oinput mcasp_aclkx,8 ]$ a0 Q  `, H
input axr0,$ G: f5 ?: w4 l7 H! `& K" r
% f- D! C" j" ]" T
output mcasp_afsr,( F0 ~; z1 w/ _
output mcasp_ahclkr,( d; S2 }  X" R, j
output mcasp_aclkr," F: s8 M7 l- o+ _7 R+ ^/ \7 ~
output axr1,6 _  t* Q  @+ P
assign mcasp_afsr = mcasp_afsx;4 O/ y, _1 P" M* Q
assign mcasp_aclkr = mcasp_aclkx;
' x1 R5 T" ]3 Massign mcasp_ahclkr = mcasp_ahclkx;$ b+ x% M' {- g# S, T7 W
assign axr1 = axr0;

; I( X+ [) t9 I5 {# e
. g7 @" {* Q) q  }% y  ~, z+ I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. c" X# R5 Y5 F8 H$ Q2 c7 S7 F
static void McASPI2SConfigure(void)
7 P$ _3 e7 M: N2 s# z2 F( ?* m{* J# R1 j2 [# ]  ^
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ I0 E7 W1 }* l3 x. W. j$ t: RMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 \6 A) o  j5 s' r4 YMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; p$ d* |: R+ T. r- H6 kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 _4 l# M7 s- Q7 g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- I5 D' W' b. Y9 k
MCASP_RX_MODE_DMA);
9 Q2 h4 K% z& o% M% x3 uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ X$ c4 Q" J3 X: [, S/ w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 F" z. A" ~# U9 r& W
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 n$ c. f% a+ L( uMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# c3 s3 _$ x2 ~) Z" J4 [; a1 TMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" p# Z; n! d& CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' ~; E3 y7 }( Z' X3 v8 t, C  c+ Q( S
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
# c( a2 N9 v8 I7 e4 T7 _4 @+ Z5 TMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 t* c% p( @- O) nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 r1 C$ x5 e! I; y0x00, 0xFF);
/* configure the clock for transmitter */
, j, Y, p, E. E" S6 ^) g7 q+ E2 NMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) W- h/ e4 O- k" p/ c; n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - q9 Z+ n4 i+ I" j8 l: g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, E+ D) v* ^( d  K4 E1 K4 b; F
0x00, 0xFF);* D5 }9 n  L- c# t/ v

+ T! D+ a' t2 t! e, h& R/* Enable synchronization of RX and TX sections */ + Q3 ^4 M* r0 U9 r( l, q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% E$ I* ^4 v" ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- E& k" R1 n. G( y8 o5 i
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 e$ L: G( E' z& ^  _5 [** Set the serializers, Currently only one serializer is set as
1 e& l; L9 l2 q+ R1 z2 l** transmitter and one serializer as receiver.' L: H( }$ e# G3 \% n8 _
*/
  r" Y. |* F/ P% ^McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# W" z9 S( @0 W" pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& L7 m  s7 X; g** Configure the McASP pins 3 \, ?8 D! `1 g& n
** Input - Frame Sync, Clock and Serializer Rx, z& e+ e2 H/ n$ }) r6 A
** Output - Serializer Tx is connected to the input of the codec , U' g3 H; j5 o" O% n( E5 V
*/3 M& b# T$ i4 l5 o  ~  T
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ H8 S+ b8 q) E- i' LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: L2 C: H% a9 E/ R% xMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. G0 T# A2 e* ?' K* f
| MCASP_PIN_ACLKX3 c& G5 v4 B9 t6 }9 ^
| MCASP_PIN_AHCLKX2 E. F- Z( h( i9 \/ E
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& I% \$ i% O, O# K6 h
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 C* t* a# m& T6 W: ?
| MCASP_TX_CLKFAIL
7 H9 z( D- N# ]2 c! y* m| MCASP_TX_SYNCERROR
" F2 @9 G+ L. o# V( R" G* C/ _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" `: }% M9 n/ n9 k+ j| MCASP_RX_CLKFAIL* L3 L7 g2 S7 S* f
| MCASP_RX_SYNCERROR
- `  \& p9 h3 H/ o. O| MCASP_RX_OVERRUN);9 b0 S( h! F. W* {  @$ N. v! s
}
static void I2SDataTxRxActivate(void)
/ f( R$ q# N9 X2 @4 x& N9 {/ C' ]# P{
' L4 e: q) C& C; y& q& L9 q4 j; m, x/* Start the clocks */
/ i% K$ Z' `# V$ q% IMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 l0 j. s  l) @, V8 s! _McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 Q4 }, W! l! L, a9 f# J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 L  Q# a9 S& d/ f5 z& A! d
EDMA3_TRIG_MODE_EVENT);% ?# E) n9 D  u& p9 m- ]! G' g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - f1 d* i+ ?$ v9 R. P, K, n! @
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! W/ \8 K( \9 {, h& j4 b- U0 }McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 x3 n2 {; ~0 f
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: z. u- |/ y; d( e# p% E- p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 v0 }' _7 E8 p8 N  ]McASPRxEnable(SOC_MCASP_0_CTRL_REGS);- l( \2 F& N7 i
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# w4 y, ]1 `! c, R, t  ~$ L}

" H5 c' L# Y; V5 s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- n' K1 \+ m7 P7 n5 e- V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-7 21:53 , Processed in 0.037502 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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