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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10329|回复: 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,$ I! G  H1 F9 d
input mcasp_ahclkx,* h) q  j0 R1 w& X# `; y! O6 q
input mcasp_aclkx,
" B7 j! t7 P  D+ P0 N- U' p6 vinput axr0," N8 O; b0 q- I, a

  A6 O& A5 W6 T1 I) D' L( K% qoutput mcasp_afsr,: S4 I% V1 E( i# z! i
output mcasp_ahclkr,3 h  R9 C. r! ~
output mcasp_aclkr,
% P) W0 |( @! R. V( \' X, |% O8 routput axr1,* S" l/ u# S- B. ~
assign mcasp_afsr = mcasp_afsx;  K: C) X9 F: W9 j
assign mcasp_aclkr = mcasp_aclkx;
* Y% `! ?5 p( v: j' g0 uassign mcasp_ahclkr = mcasp_ahclkx;
. ^# O& J& A. Y% ?) V" jassign axr1 = axr0;

! ~. a/ X4 ~8 f+ g+ _1 [+ `# R. @7 J( \1 u5 h- l1 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( s- c$ i, n' J' f7 G
static void McASPI2SConfigure(void)! g- Y# H7 V! _4 M
{
' h0 g% q# T( H, V' ?4 e% g/ yMcASPRxReset(SOC_MCASP_0_CTRL_REGS);* K5 O2 J1 z( e2 ~3 G
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* u. f4 a( l! [4 S# T6 ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);/ ]+ j1 O; w+ Q) z: z1 y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 l0 l# b3 d7 N8 H, O% k* n( t" mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, K3 [% P" B' M0 c( T9 k" f5 l: GMCASP_RX_MODE_DMA);4 `4 Z; J0 v( s" I' j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. s4 l1 [, q( n5 Y! PMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 ^  W- ]. k; ?: j( \' CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 U" E# a- e' M9 r% s
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
, k( ]6 W% L% W' b5 {2 Y' S2 ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" Q- e" \; f. a% @6 @4 ~0 N  R# e+ {! aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( M/ y* f, l7 q* S' Z1 Q0 T2 Q; |
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 Q" K# ?' [4 \4 Q% [McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! Y" Y, h0 e( O& Q7 A) x5 r% `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 G! O9 W. K( i& O  z0x00, 0xFF);
/* configure the clock for transmitter */
$ u; C( ?2 w2 a8 k3 OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, f% d+ V* J- i9 e* Q7 Z1 d2 U9 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ x2 x. {3 y. M1 sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ d+ s* p, d$ }5 G4 r6 q8 t/ I0x00, 0xFF);, m3 l. P+ K, h; p9 |( J4 \% k

# l5 N; e  R' J. e) E/* Enable synchronization of RX and TX sections */ 9 s  {: G" b; p  h: }
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ t; q6 @0 n  ]McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);) u7 K- k  v1 R$ A
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! s: X+ s- v7 P: C; X  x** Set the serializers, Currently only one serializer is set as
2 t* N( s# @& Q# [7 S- U2 n% S3 N: O: a** transmitter and one serializer as receiver.8 i6 p! N0 E9 Y: O+ ~
*/
1 e4 M" D, V2 t5 `. M2 W8 KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 X1 v- x5 l6 m0 D6 k' i8 X4 i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 _; S, h: ^' d: J0 z** Configure the McASP pins
, d' |% a  ?& ]3 L, |& I** Input - Frame Sync, Clock and Serializer Rx" `- L8 u  ?- W8 d
** Output - Serializer Tx is connected to the input of the codec 1 w5 W9 t! d# s" B8 n7 ~2 q5 N8 ~
*/
: F) _0 R! c; z& ], W/ ]McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 ~, n+ B1 ~& p8 Z# ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 n, t, [8 t* i3 ?$ `, n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& ?8 U& W( [, ^* z% o
| MCASP_PIN_ACLKX
. R. r8 b) @7 o' L+ c8 R| MCASP_PIN_AHCLKX
: F/ H+ a8 j: w! {8 ]' X- v| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( |6 A) y0 R6 r# o1 q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 E1 k( v/ l5 j/ M* t' q
| MCASP_TX_CLKFAIL ( T" h! j) U& s7 K& v# V$ n
| MCASP_TX_SYNCERROR
2 \+ B" k+ Y. d4 W# ]. n: h| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) V4 ~# p+ b$ O6 l/ N$ d* z6 v8 e! Y7 z| MCASP_RX_CLKFAIL
5 h. d* \3 ^4 P6 Y; f) V  z/ a$ H0 ?| MCASP_RX_SYNCERROR ( [' I; c: m- j! f4 M5 R5 b6 t( l& i: E
| MCASP_RX_OVERRUN);
  {, ^* d5 l$ h  H( S1 T" V2 W}
static void I2SDataTxRxActivate(void)
! D! B, O* H4 [' p6 u9 f# {* }5 K{
4 B* k6 J! [- w9 H0 E/* Start the clocks */" p' `  A7 G* u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) b. e- x) s% f8 J5 X1 SMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' h; j! x+ t; B3 t8 |6 a3 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
: X& u; f9 b; T5 [2 Y, sEDMA3_TRIG_MODE_EVENT);
. q0 O( j% l% C2 {- ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # R( }6 r6 M6 x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 a1 n$ ?+ O( w# }) @4 ?- m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 s3 o$ B4 |) U( ]5 K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) d7 s, V9 P. V9 rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 L) E' j9 G  `, LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ h1 t5 T% K5 o3 I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; x  R2 f2 _1 h0 K( N  E9 H" B
}
5 e& C# m8 s, n0 o* r/ R' Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# M. G! Q  t3 S: x: V4 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-4 00:17 , Processed in 0.040135 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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