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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8908|回复: 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,: \0 d) S3 q- a: z- @
input mcasp_ahclkx,/ x9 G! j3 n/ L% g; n1 _5 o
input mcasp_aclkx,
/ q6 h9 f% X2 l7 G, h. f0 F) Qinput axr0,: E8 r3 G3 K% u' z  ]
+ y+ K; ]4 E9 A- M. I
output mcasp_afsr,
; W$ d2 W8 b" u8 \output mcasp_ahclkr,
- ~- @/ O% t: i% |output mcasp_aclkr,1 }0 n' J. F: U7 J
output axr1,/ y8 {) S% ~) D+ l. B% X
assign mcasp_afsr = mcasp_afsx;
4 J' d1 v  G" l0 v0 J" massign mcasp_aclkr = mcasp_aclkx;/ X' z4 a$ r- P. S7 f; F% [5 b
assign mcasp_ahclkr = mcasp_ahclkx;
; Y0 P- U" p. n  D1 Q, }assign axr1 = axr0;
3 O& w4 H) m5 X3 s( l8 y

' U, k& [/ O( H6 `. [8 l# `* n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 r. A$ ?+ j9 N; N/ [# F4 E
static void McASPI2SConfigure(void)( k, N/ u8 X) A4 Z* I. v
{2 L: L, b% c, Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);3 b6 a* h2 G+ F. V" o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 t1 ^1 f3 z" N+ Y. [1 z( H3 l4 |6 VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 Q# u. _: S2 T# V! x, r: n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 d% P" p4 w$ R, CMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# @0 H* o. }& f8 gMCASP_RX_MODE_DMA);
2 B2 A8 \8 H- c6 \; LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 ]$ l3 f. d5 A+ p2 ~MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 N% U2 l* @( L) B+ q4 V) ]McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 }( E. f. c7 Y, D7 n7 W& i" I/ u  j
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# N4 c# k1 Q& \0 M9 ^" }- F1 ^McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: y0 l( @$ J! F7 fMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 H/ [- y# z# D  t" d/ Q, z4 L- L. S: kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ \2 O: c  |* }3 dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. n- b# w5 @, sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 c$ q; W2 ?+ d
0x00, 0xFF);
/* configure the clock for transmitter */' W- X3 G. V$ b6 Z) h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ i, c0 c/ ?5 R: v8 i8 _
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. h, C' r. [2 e. D$ KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 W/ {6 Z% ?8 D# _4 D
0x00, 0xFF);/ P# Z) f' N. s2 F* C3 D' A

, g3 |5 V- @! O. l: a: Y" v* i/* Enable synchronization of RX and TX sections */
$ F, F; q- i. ^% P* nMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; {% K+ `) ?- G- s! _8 Y  r* q4 T
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 v( s8 t( ?+ N0 B4 |+ x0 O$ XMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% _: L0 W. d+ c8 G! |
** Set the serializers, Currently only one serializer is set as
8 ^3 n* W. J: ^6 W: w7 }, T; G9 D! n5 e** transmitter and one serializer as receiver.
, K  o; Z( F/ ]- B*/
+ y- P' h; d/ c! j- R4 [6 bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: K% o+ p+ O; t! @
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 D. P) K2 s3 }
** Configure the McASP pins
% P( d. I, h0 X" g1 k% b** Input - Frame Sync, Clock and Serializer Rx
" s5 j  P0 \( E$ `, F4 W** Output - Serializer Tx is connected to the input of the codec 2 m7 J# m# V% o
*/& ?& n4 t* J6 ~! ~% @8 Q7 h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 J5 X9 D! D, u% HMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- o$ w( @# }* S4 H( g6 a- _$ D
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 r2 ]8 r9 m* C& {# ^0 i- g| MCASP_PIN_ACLKX; k1 m4 I" K; l2 c
| MCASP_PIN_AHCLKX1 e* o$ K" e/ Z4 \" C4 |- d, I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# O& K# e& \* z+ B; d5 Y& L  t
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / p% F* \# {! G
| MCASP_TX_CLKFAIL ; {7 w# N# \2 F2 z
| MCASP_TX_SYNCERROR
1 {: Q! _6 S/ {" b4 p1 d* q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 E! c" K& s5 C6 Z5 w& N
| MCASP_RX_CLKFAIL; V+ T3 U/ J- w4 Y% k
| MCASP_RX_SYNCERROR & R0 e5 ?* B7 w9 q/ e8 T, F
| MCASP_RX_OVERRUN);2 d. k/ ~' ]# W( A/ E  h
}
static void I2SDataTxRxActivate(void)
0 w; |' _& X3 e9 k{
" u7 c, Q9 t6 W# _4 L: ~/ ^  e& d/* Start the clocks */
; j$ g0 [7 F& u7 \2 J( sMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" O* e9 r  Z" R& AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) K2 H' `2 x. r6 G  mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 G' `; \% b5 f9 e, `* D7 }EDMA3_TRIG_MODE_EVENT);
1 W9 |5 I8 M. I" u, EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 l! }6 i- f8 U, N$ y4 c
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) ?9 L* ?' a+ ]; m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 o( d7 l/ L' R8 {& GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" L, W$ _0 p, A7 hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# S; t7 P$ F% h3 E- h: D, E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 y' R. W- \- t( v* @' j8 I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 \/ C, Y# [$ G}

: q) x# a% z! U0 f% A7 X, A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& |9 W% W. g" @  J! z+ p) T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 23:28 , Processed in 0.042127 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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