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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 G$ c% F) ^' T+ g* Rinput mcasp_ahclkx,
& Y+ O* }! W4 L% W7 ^) x9 M" Pinput mcasp_aclkx,. w, y) j. N, [3 o8 F
input axr0,
: ^2 x' V+ j+ d. L- x
5 Q) h" D/ f$ t, p! j/ xoutput mcasp_afsr,' o5 l8 y. c: L, g1 u# `" r9 h+ |
output mcasp_ahclkr,, c3 h+ G8 t1 E2 G  k( y
output mcasp_aclkr,
0 ~% B0 H- ^- ~- joutput axr1,
+ w! O5 X9 X) B( H8 }7 v
assign mcasp_afsr = mcasp_afsx;8 J7 }# w9 n) v) Z
assign mcasp_aclkr = mcasp_aclkx;
) P1 o& y( e9 m- [- Vassign mcasp_ahclkr = mcasp_ahclkx;5 D" b& k6 D5 _
assign axr1 = axr0;
8 R2 O7 Z" y  l- f

2 l7 r4 _2 Z4 c& z) i( {( q& O
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# {5 q& n  I; l+ Q4 a6 c  q2 {
static void McASPI2SConfigure(void)& d' U6 z2 K/ a! [$ E9 n+ F7 ~' E
{5 b  O# ^- X/ v* L1 I4 P
McASPRxReset(SOC_MCASP_0_CTRL_REGS);3 P. o& O2 q0 w- U2 R
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  L9 x# L- }+ E: T- w6 r) [+ T
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ G+ @% G1 }- C% q. z2 Y- ^, vMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 V8 s& @6 G2 ~0 iMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! l- g. @" l+ J& j: p7 W8 P
MCASP_RX_MODE_DMA);
3 @1 o6 `' Z* t7 a5 j& x0 QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- w& u+ h& r  d6 M* iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- H4 o# I* U/ y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# U, p& R& o/ n5 S6 I8 WMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( x7 L8 Y9 w$ n: v, ^
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 x( c( H5 e! |& O
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */5 @* _$ S3 m6 h* N% j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 L! o7 u3 D5 U5 M5 W  A$ @
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 [) d( r( C% q2 P: L
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 x' Z. s3 M0 Y( X0x00, 0xFF);
/* configure the clock for transmitter */
% Q2 w# g/ |! _( Z0 h4 xMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( F) E5 X1 o7 }. ]* q+ q$ u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! i9 @# l, i7 Z2 {1 ^2 u: B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 G! s+ t& x& K4 k  R' Q! {0x00, 0xFF);
; Y- x; O2 \; N* W  u! c
; p4 D2 ?4 l1 E) p. o& i/* Enable synchronization of RX and TX sections */
  t" Q3 W0 z" `4 _- ]0 Q: zMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  x. S% v0 I/ J$ [  N+ E! G5 \. CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. f  @5 D7 v# P+ W/ F  k: DMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 T, M& d4 ^  E, Q# N  y
** Set the serializers, Currently only one serializer is set as8 B6 L+ C% l$ l1 J1 f' y4 N0 J
** transmitter and one serializer as receiver.9 M; \# T! a- s! m2 {& N
*/' q! D0 o$ i- X! y  D, n) L
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
- X5 n, [# I0 t" P2 C3 K' TMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* |$ p$ A1 b5 X** Configure the McASP pins
+ t. ?4 x1 X" S: A** Input - Frame Sync, Clock and Serializer Rx+ ?8 b8 Z  l  `+ A8 Q. Q& \
** Output - Serializer Tx is connected to the input of the codec 5 ]& |' z  N7 S/ m
*/
) k7 T5 |, O7 ^1 P# Y; |8 E8 X$ OMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 c& y" l5 g/ g7 y3 x4 z+ KMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 k/ P; P8 J. ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. t- W, O( k; B) y! }- a| MCASP_PIN_ACLKX: Q& i6 C* }! C! v# }* x+ t
| MCASP_PIN_AHCLKX
9 F& N" \. D" R# ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
2 K% }6 u0 ]" O  i1 A( ~2 QMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) p; A; B/ r) r* I9 b2 K
| MCASP_TX_CLKFAIL
7 P4 d! ~- {! x. j( m2 y| MCASP_TX_SYNCERROR/ @( Q! G& d. y9 ?5 @2 ~& u& m4 E
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- C! d  h* Q" h6 Z: \0 x- ~. O| MCASP_RX_CLKFAIL3 _4 e+ C3 h1 R: M2 `. |
| MCASP_RX_SYNCERROR & m5 W- R3 M5 F& w4 ?
| MCASP_RX_OVERRUN);8 W) _. ^" `/ s  X2 Y/ @' w. f
}
static void I2SDataTxRxActivate(void)
/ D! e$ }% g* g! Z$ L{
" c' F! J- }3 h8 ~/* Start the clocks */" \7 e: A/ A$ v" n0 x# ~
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* _. Y- }+ E4 ?1 ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 E$ F4 ^5 v' b8 s) u" ]+ U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* B6 U7 r: I9 O( U7 t3 U4 _
EDMA3_TRIG_MODE_EVENT);, c% p$ e+ G0 l* p( b/ c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( G$ T$ e3 ?1 _6 x7 C; B7 X. B6 y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& l- b7 h3 _- K' p0 U3 g
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 e7 h: W* T2 f! v5 Y$ [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# k+ {& G. E$ ~' s6 H( Wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) z: i( s6 q6 c2 a. E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  k! P5 F6 ~8 }1 m. Z  V7 d# s* J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
7 w7 t, \) \' m}
# h8 L  h" s' ]
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

) P# d+ a) T; C2 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 06:02 , Processed in 0.040889 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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