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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12553|回复: 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,! [5 m( e5 g( a; e0 D
input mcasp_ahclkx,
+ b# g' j  T8 ~3 @5 F- D4 X  yinput mcasp_aclkx,& |# p' m2 k1 d
input axr0,- c* M' }0 T4 l9 _
9 B5 t& L8 C, X) a, [
output mcasp_afsr,
* N  {/ m$ b# loutput mcasp_ahclkr,
1 W( i7 _; q6 j4 i, youtput mcasp_aclkr,1 O' j- B; h; x3 T+ }: \+ [
output axr1,; c8 g! ~3 Q' J* S, Z9 r; ]
assign mcasp_afsr = mcasp_afsx;
7 a4 t3 a$ ]$ ]; x- @& t9 x$ Rassign mcasp_aclkr = mcasp_aclkx;
4 G2 E7 o8 d) d9 C9 z% e6 |3 rassign mcasp_ahclkr = mcasp_ahclkx;
- v$ Y$ e4 \; F1 q5 a' Yassign axr1 = axr0;

0 }7 n' p/ h, ^4 T9 z* e+ I) C3 _+ P" a; Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' m7 d& k1 [+ ?1 {7 D+ J$ O7 r
static void McASPI2SConfigure(void)
( h! s; D: W; m9 k0 g# b  n{8 T! S  g( l' I, h7 f
McASPRxReset(SOC_MCASP_0_CTRL_REGS);% s7 z. j& p: t# O3 U2 V
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& N8 s6 V$ W3 h' M# Q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; U" b( m' J2 X& h) uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* |2 }! x2 q2 W6 B0 K. ~8 nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- A& I1 {; f6 jMCASP_RX_MODE_DMA);+ x) w0 w8 g0 z' L! z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! Y4 z3 S; B, z9 _2 d. ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// }- U0 {0 Z3 D! H0 q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 g$ E! h; t! G% GMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, l- U6 M2 [, |
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% Y1 ^. j9 E0 O, ]7 iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 I1 `+ ]& M) z& |/ v+ H* {( MMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 _, J, I2 e' @0 R+ y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # X" O  E# Q) J5 E1 F  r" K
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. p( Z: X& ^0 W6 _& f0x00, 0xFF);
/* configure the clock for transmitter */2 c4 Y9 A$ J6 ~% q  E. v4 c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 ]0 j/ n) U( \
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) `  Z7 B0 x( y! g+ zMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 @. R* j" e: D/ A
0x00, 0xFF);
7 ]- H3 J  p9 a! T8 ?8 p
% K) T$ R' G: c& \  n/* Enable synchronization of RX and TX sections */ 9 [- Q9 l. Q& w% @; a- V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" h" H2 P9 g) y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 e3 v5 k5 K- l3 K1 h
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- i  a; F/ |0 J; R) g& ^2 {2 ~
** Set the serializers, Currently only one serializer is set as7 n! L2 P: ^% U* P! M; n# E4 c
** transmitter and one serializer as receiver.
4 F& D) ?- R) ^8 [) c*/
" |, o. ^& f) n# \# c. I2 V& ]7 G3 uMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. N7 x. ]) d7 [1 E5 q7 m! f1 o
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, H# ~  l( r1 C** Configure the McASP pins - V) C2 v  N" z7 m6 x
** Input - Frame Sync, Clock and Serializer Rx
7 M3 x) g- y( T5 m5 {2 R7 U** Output - Serializer Tx is connected to the input of the codec - N/ l$ S$ r9 m, E# p/ D/ [
*/9 ]& _  `7 _8 M2 X" R5 L' B, k* J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! y" V: _. K8 y. oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ d8 X: _' O# b- r+ p; X
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 J3 D1 q0 T0 t" C
| MCASP_PIN_ACLKX1 K/ K- V8 w9 }/ ~/ H9 b
| MCASP_PIN_AHCLKX
; j) n9 _8 }2 C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 G) z- ?8 p7 s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
* z9 i6 a) {0 R6 |: s8 ^+ h| MCASP_TX_CLKFAIL ! d5 y" h$ v; w" C
| MCASP_TX_SYNCERROR
* _; I2 a3 K, c- O6 |( b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 U- S6 F" `5 f! M4 l$ [) X; i
| MCASP_RX_CLKFAIL
1 [0 M/ X$ c2 C' r1 j! y5 w* Q| MCASP_RX_SYNCERROR
) R8 F& z& n( k$ r, B$ H" a/ H| MCASP_RX_OVERRUN);9 z2 K$ a1 o+ @7 {, ?
}
static void I2SDataTxRxActivate(void)+ J; S& z! z; s% P! P% z
{3 Q7 x. P0 n) s
/* Start the clocks */
5 G; R% N( B0 d0 ]! cMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# W  z; i/ y0 R# ^5 P0 d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 ^' g8 y% ?& M; }- J& T3 ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, \: L* r" U) L9 O. g2 jEDMA3_TRIG_MODE_EVENT);
" h+ J0 ?  T; n$ y, pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   n  n/ e( b; Z  O! P; O* T* u' Y4 G) T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 N; ?4 ?, I/ l% N( `* vMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 u6 q+ m6 v- k% P9 }) Y( I, w4 m; SMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */- S1 {# Z" P- Y: w2 q+ F+ ~
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 }; `6 ]" n. H# y
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);: `, i' z6 k5 m
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 a* ], I* |( }! H/ O
}

* u. p7 B6 X  A7 Z0 G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 @6 p& s2 B. @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-7 20:00 , Processed in 0.038673 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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