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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10289|回复: 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,
6 [: A! e- e; I* X6 N/ G3 z. @input mcasp_ahclkx,9 b% w/ q# g* ]' ^
input mcasp_aclkx,
) j  D6 }) Z7 k) m1 q) finput axr0,4 K. D3 N% j! ?$ o: J

% q7 I( _( [# }% Q# d# zoutput mcasp_afsr,( A7 y) c3 o% i4 }& o# e! |
output mcasp_ahclkr,
4 B5 k( V( V! x2 z! O) H; c, toutput mcasp_aclkr,
; s) [/ L/ y+ Y+ m3 c3 g/ o& @output axr1,
7 M" l2 H5 U1 e% x0 o
assign mcasp_afsr = mcasp_afsx;
/ |0 C. M! _" w% h% C0 Qassign mcasp_aclkr = mcasp_aclkx;$ [4 u# {9 @# L) X* X
assign mcasp_ahclkr = mcasp_ahclkx;
' X. I, f6 A. R0 I$ zassign axr1 = axr0;
2 L' Y2 _5 n2 t
* K$ h* Z, x2 {! n, X" i2 E- [( I2 f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% m2 v: M) s: }" J. |% q$ i$ e
static void McASPI2SConfigure(void)6 D" E3 O( f* `. d. f
{) c% s7 g3 z. E/ f" x1 w# I& Q
McASPRxReset(SOC_MCASP_0_CTRL_REGS);; P/ h5 U1 d6 o( l4 K6 p9 {' Q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) G: b  n& K7 D! ^
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* g& ^8 p% T; i7 E( ?: |6 |
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" {( z% s0 F) X! a( @, l9 t  T
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( g# R% z4 _$ p+ i( D* H0 ?
MCASP_RX_MODE_DMA);+ E7 a# z- a' D5 t9 [+ q; V" \
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 y( q# F$ n" }" B, F2 a) K3 S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 }7 @2 g1 _# Q% f8 Y0 Q5 D; y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ F3 a" U" T( p! V3 _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ |( k0 W; X4 ^2 u$ u! q+ aMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% W3 C9 ]+ v$ \& N2 Z9 s2 g4 IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) w# H, ^9 B/ B. ]& G* ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# f( D) Q! S1 ?1 d3 W! E: C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 h7 ^- V9 i. hMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: m1 l: ]; A8 K; s2 y( S  |( }$ E+ i0x00, 0xFF);
/* configure the clock for transmitter */
" O- D  M# Q& D0 [, XMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ Y* H# k  {  A) t( J4 QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- g# O8 |0 F) A) ~McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 D, w$ |7 P2 z5 M" B) N& J. d0x00, 0xFF);1 J% J7 _1 b" g1 ?* e+ a
, U2 ^( n$ p$ J0 \9 C5 g
/* Enable synchronization of RX and TX sections */ $ M1 ]4 N; R; H/ X, K5 T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- k' Q& K# Q6 h' V) S0 a! t7 ^  rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 _! e1 G3 U/ d2 N; W
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( F) V. {1 x4 O; U' q2 k0 K9 ?
** Set the serializers, Currently only one serializer is set as: Y9 S7 _+ ~# `1 @7 \
** transmitter and one serializer as receiver.
) Y- ^& U0 \" |/ L4 n. X: E*/0 o' T) \3 s5 U( k4 y6 P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 W+ \3 E" W3 N& f5 R4 |' VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ F+ v: d7 J: z: {+ m6 j& R
** Configure the McASP pins 5 Q9 L2 d$ m4 k; C; E2 P
** Input - Frame Sync, Clock and Serializer Rx
: o1 r* C5 Q4 C** Output - Serializer Tx is connected to the input of the codec + l( A! [( }6 k
*/5 }9 H  \/ F$ h; j3 z7 |1 \0 E
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) D8 Z: \9 @& U1 j
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
3 i2 C% Q! s" t! T# D1 ^& s5 {. S. mMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# {- R& B' t% }6 ?
| MCASP_PIN_ACLKX1 m; `3 j$ J4 K6 l
| MCASP_PIN_AHCLKX
1 ~% B3 r5 \3 P5 y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% k! b1 v1 i# Q  f
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" c2 p. V7 p! o2 J| MCASP_TX_CLKFAIL , N; e' W& E, d. M. K& r: ~2 R
| MCASP_TX_SYNCERROR# e& Z4 S' a! `- D
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " ]# @" m7 q8 ?+ u. }; x) h+ |9 n
| MCASP_RX_CLKFAIL
! \* g2 R& _; ~| MCASP_RX_SYNCERROR 8 p5 S+ \* V0 A1 N1 ]8 a8 S' c  X0 I
| MCASP_RX_OVERRUN);7 [, {+ B" f7 R$ D6 m, @& V
}
static void I2SDataTxRxActivate(void)
$ R# |" e, F! q% p$ D{! c- A' W7 g3 [' M  y+ t6 E3 l2 q. o2 k/ J
/* Start the clocks */
/ C2 k6 I$ H1 ^0 y* Q8 e, dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 c, I0 n+ \+ V( s5 _  a- oMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, @* w- j1 @4 |7 G( x$ ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 G5 ~& A" @% z
EDMA3_TRIG_MODE_EVENT);; `% C5 w/ J" ?0 a$ n% j5 P; N7 S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 r0 t  S7 ?! U+ m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( H3 v% w  K; a  T! `  n: ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 ^' `4 }/ @5 ^5 l' k3 j7 h5 [McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 B3 E. _- D$ Z) U# e- Pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 K0 a! ^! C; e( R  b$ s3 ]5 h/ T0 d
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& B+ w/ N' I3 K: |McASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ G8 _0 u' L/ r/ m4 u$ [5 w& _: s/ H" `
}
8 `- A9 ?: C8 c- W' d# \$ Q6 Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" P: i5 O) x8 i* p$ q$ L9 J9 v5 i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 21:57 , Processed in 0.039773 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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