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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 K- _' Q" P+ v- X: t
input mcasp_ahclkx,4 \( @+ Z+ Y1 [$ I; T
input mcasp_aclkx,
; }1 W! G+ ]3 o$ a1 Tinput axr0,, P$ s! e; g4 O; F

( u, D! c- r$ }9 G6 ?output mcasp_afsr,
) ?5 m  b3 f( D) Routput mcasp_ahclkr,
4 o) O/ h$ a  H  c# uoutput mcasp_aclkr,
: E: z2 x& J$ ^8 X- h$ ^( Aoutput axr1,
& f' ~& a# u. P+ x4 T( u
assign mcasp_afsr = mcasp_afsx;0 K' K- e: t( q
assign mcasp_aclkr = mcasp_aclkx;
& K& }/ K, p' E5 U. fassign mcasp_ahclkr = mcasp_ahclkx;- [) W- _$ ~1 I% e
assign axr1 = axr0;

' O* {2 ~/ F( ~) p5 a( z" t5 T! ~) {( Q: M' e! h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

! b& X6 A, T) c! P' k' g0 n: M
static void McASPI2SConfigure(void)
$ u" k  ~: K4 e. q7 s6 t9 D{
9 O! r( V6 e5 A. SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 k1 k( _9 M0 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */2 ^5 f) X$ k+ ]+ A/ j
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" X! O& }' E/ B2 H+ M1 ~& dMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 Y# L& ]" F# w% H0 @3 C( Y' @! ~
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: b2 O$ G2 ~! F7 f, k, vMCASP_RX_MODE_DMA);8 u$ R: ^+ \" y- y- x8 B: r
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& H# {9 a' y. K3 x8 J/ `6 l
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 d4 {  F0 @6 `/ q: U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 j6 [9 U% R, c3 a9 W4 }& W
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 r' j3 J9 t$ p9 P% OMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; f; _. ]" @9 ]" m$ S7 |9 r* j& X0 R0 W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 C) v( V; c7 E; b0 yMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 L: _; j# ^! p
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 {; \3 K7 K: p- @4 `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 Q1 N8 Z, L9 u  K' K0x00, 0xFF);
/* configure the clock for transmitter */. l$ m! u$ ?' ?: G  v6 L
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) I* u% ^. o# q9 O2 z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 N$ h6 t6 ]' ^, G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 t4 H+ N. H  ^4 }- x1 L4 b6 r
0x00, 0xFF);
' ]4 T& s" A; @- o' W; f% F( l, K3 \# X* _) m3 g: ]
/* Enable synchronization of RX and TX sections */
! E( t+ G8 a' PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- |: z8 s3 ^+ i1 CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ j/ D( A6 S$ m- n+ s$ g
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( T' \& D/ L6 K9 |6 T* z" }
** Set the serializers, Currently only one serializer is set as$ I+ A; ]! O; d' W4 X) K% H+ i" b
** transmitter and one serializer as receiver.
! t6 _( A# o5 N2 ]: F- z) D& _' u*/
" W0 I* M! w+ M6 x9 I* wMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' v) F7 s+ {/ u* w& S& `
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ f, s" v/ c7 G; A
** Configure the McASP pins
0 [( }% k) M  @  U/ `0 R# B** Input - Frame Sync, Clock and Serializer Rx9 s1 ?: C1 g3 M* L- B! `
** Output - Serializer Tx is connected to the input of the codec
* I! w9 K9 t6 i, C& G, H$ L*/
- V3 d& P2 F% S* Q' QMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 b, {  N8 K; I
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 [7 L+ h. ~, i; F  \  d: p8 h0 o# m/ bMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: m  E, b( C* y* H5 L' t! L| MCASP_PIN_ACLKX; B$ c! C8 c8 ]
| MCASP_PIN_AHCLKX
2 B" p3 f7 \8 _| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 d' m0 Z& N' b4 ^3 V3 U3 sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 I: h$ Q, B5 @. m* @- v" N| MCASP_TX_CLKFAIL
" P" p2 x3 }# g2 b| MCASP_TX_SYNCERROR2 |2 u) c0 f5 i0 H
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* s% x1 |$ E8 I8 w| MCASP_RX_CLKFAIL
' X" f4 u+ [; n* m8 Q, Y+ D$ \| MCASP_RX_SYNCERROR / F% \* E) L( v+ O1 x
| MCASP_RX_OVERRUN);& y% h6 q8 ~) T8 M" w
}
static void I2SDataTxRxActivate(void)/ H9 l$ V7 B8 E2 N; q) o* m
{  n5 r8 G$ L- H1 a9 ^' `$ J
/* Start the clocks */
! N4 O3 {( V" b5 g$ u6 E: ]+ |( }$ LMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 C4 S9 h* S$ N$ x( ^! }6 p& s) C
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ S. t+ M$ l. ?, h5 i# \5 y# MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 g" t7 m, o, T  e& h2 a- GEDMA3_TRIG_MODE_EVENT);: _7 e. l" ?  f- }- T0 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 T* D6 H3 R; T' t( IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( `0 Z+ E+ q" x/ ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 F: d2 F' b% F( yMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% [& ?, J0 Y) _0 {6 Qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ L. t/ L$ ?# [& C9 j
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: [  d6 I; {) p* oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" g9 \7 P* ?, z6 M+ v+ s) R$ h}
2 J" j2 E. V2 w" x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 i! ^; N* H3 S/ Q; n* M) q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 21:32 , Processed in 0.037207 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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