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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 b/ V. d, q% J3 j& M3 o. ^7 G$ Winput mcasp_ahclkx,
0 b1 Q, Y: a! }' K$ Sinput mcasp_aclkx,
+ [% R3 ]/ g; J8 ?1 @& xinput axr0,5 P, J$ }7 F% W6 g

9 n8 {6 T- F$ Q3 Z: f( W; Uoutput mcasp_afsr,! n2 b  C# S9 _( g- X$ C  p
output mcasp_ahclkr,
$ t, t/ |. w/ v" Z2 r- u! Woutput mcasp_aclkr,, J: P$ A+ H3 j! p* |
output axr1,
. Y8 C, S) A* T, B6 {5 @* f* }
assign mcasp_afsr = mcasp_afsx;& j% D" C$ ~3 O- M# T
assign mcasp_aclkr = mcasp_aclkx;
4 k9 h% n- h+ d) H8 H+ U# p+ uassign mcasp_ahclkr = mcasp_ahclkx;+ {+ ^+ R9 x3 Y6 s& C
assign axr1 = axr0;
# M$ r  j4 D2 T# e
6 ^2 v+ \8 ]+ `3 Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ @# V+ T5 D' z. @2 Y9 i2 B% F
static void McASPI2SConfigure(void)4 L1 C* e, e: Z
{
8 X1 o( g% P  z, O/ QMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 U, q6 |/ b4 P5 G% G) V; A
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, e: e& z! N) s$ z+ C0 y1 TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 t0 g) W9 ^+ c8 f) HMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 j# D/ A' H9 s8 ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  z0 d" h+ E* yMCASP_RX_MODE_DMA);
9 M( Y, W8 F0 O- a# S7 BMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. C. k/ q  {. RMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; s& A# c* Z) e' Q& ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 B% P5 @9 W0 D0 A% H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ {: W# r7 @, q5 Y  y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , g+ L0 U+ p2 v3 E$ o2 ]1 }! D+ f" b* g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
6 }" e7 `4 [6 ~1 q5 ?4 N! RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: n7 G8 ]0 E* n6 l: L5 v  {# SMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 R" B0 b# E2 b$ p2 {  }
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& Q+ \8 l7 q! R7 I/ w; h, D
0x00, 0xFF);
/* configure the clock for transmitter *// h! J8 x& ?) W% i
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 f9 Y( K7 u+ u) A5 g# I$ e& WMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ }7 g2 R$ [7 a% ?/ h, s2 nMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 L7 X! C  J8 D% g/ _2 ~, i
0x00, 0xFF);9 g6 V. M4 S+ x
, F. k" q% w, G0 ?% ~5 M
/* Enable synchronization of RX and TX sections */ # B( {8 v- O, `/ J7 E5 V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. p+ g8 l5 j1 R; s6 r% o( sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- I% H7 v$ K9 l1 L2 w7 KMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ N! E& X0 {! y/ G2 U) V' V) A4 x7 b** Set the serializers, Currently only one serializer is set as
+ O# X* j2 k# i** transmitter and one serializer as receiver.3 @) s2 j- ]% X5 [  a2 e/ j
*/" n3 |3 }8 X: ?; t) l' J$ ^
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% w8 C/ V0 x% ]" S5 W
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: e& g; K5 u/ C4 m) M* I) ~
** Configure the McASP pins ! G5 w- h3 [( H9 ^
** Input - Frame Sync, Clock and Serializer Rx
$ E( k6 h% a7 O( H) |** Output - Serializer Tx is connected to the input of the codec 1 I6 V' ~* Q" d  x; A
*/
$ J4 s- f7 l( E+ P; oMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);; p  @9 X/ g# b" G% A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ V% E$ L: m- Q# B9 y" }5 v1 D' `, q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 o4 y0 d4 m7 r- p8 t2 M2 R2 f| MCASP_PIN_ACLKX
) A- Y$ k. g+ Z/ o+ d" ?| MCASP_PIN_AHCLKX
; V3 t' e8 x$ O3 f9 ?7 ?% ~$ F& @| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' J. i' H/ k: j5 i  v/ [8 a) R
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: X4 V- j2 R; G" ^| MCASP_TX_CLKFAIL 9 w1 d5 c* O' Z) e' T; K0 v- |2 C
| MCASP_TX_SYNCERROR
3 A! X9 q* E3 L4 p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 }9 M/ M2 j! d6 w3 B. w* i| MCASP_RX_CLKFAIL* ?, u7 Y3 j3 p1 J0 A
| MCASP_RX_SYNCERROR , ]8 P. z1 B' h; A9 `
| MCASP_RX_OVERRUN);
% ^* Q1 x6 g. v( G5 r}
static void I2SDataTxRxActivate(void)
6 V$ s* V, _- m: g7 ?{
& m$ B: h# S3 k# ~: H: M" D/* Start the clocks */! Q/ ?* R+ {2 o; l5 A/ i5 G0 N1 T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" P1 W% ]: o/ \& N3 oMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 B( W# r2 N' m: `; J/ [& s" r$ uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& x% G& o5 Y+ L; G2 V+ g/ [
EDMA3_TRIG_MODE_EVENT);# I; l% \$ B5 w* M# _6 D9 q" `# ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( L/ |! e" t% n2 w! f! z3 n1 q% x7 Z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! p/ o* ~/ b$ ^' Q3 W9 MMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 U1 H5 g/ @& m- h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" T+ t& y7 N) r" `1 A  iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' R# c( g1 J/ v% y6 Y0 ]McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, t" m) G$ A3 k' ^5 E% FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);6 L: U1 s# Y- n
}

1 d; g# X; U5 }  C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 h4 t1 q# ?( k3 }; {% ]# d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-28 17:19 , Processed in 0.041672 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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