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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13161|回复: 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,) U3 S& \8 }. u9 l, f6 {) ^
input mcasp_ahclkx,
, a: X4 K7 A) _& rinput mcasp_aclkx,5 B! E  `' ~  I4 k5 [' ?) ~
input axr0,
2 j, h9 P# z! Y! @4 A
! Q8 n0 a/ j7 c1 B0 toutput mcasp_afsr,& }1 E0 y. s6 g
output mcasp_ahclkr,$ J0 Q: @3 R! ]3 W" H6 q" [( O
output mcasp_aclkr,3 ?# Y6 b' `" S1 ^4 R
output axr1,
! V( H8 B9 A" \( ?( Y$ u) g7 _
assign mcasp_afsr = mcasp_afsx;  v) z0 g6 ~. R2 P# a4 B
assign mcasp_aclkr = mcasp_aclkx;
5 {& U. m5 C4 I' r  ]6 ~9 oassign mcasp_ahclkr = mcasp_ahclkx;; a7 o0 {5 z7 G! T
assign axr1 = axr0;

6 N3 U& P% g9 P: l5 q+ t  c
" q) w! g. }; y- g& ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& l0 I1 f! u- ~( z* F8 O$ }* U
static void McASPI2SConfigure(void)# \# S8 ?# r& E- \: s+ Z1 r! p( R
{& |, l. I6 v* S! |8 v0 m( o6 x
McASPRxReset(SOC_MCASP_0_CTRL_REGS);. q6 M0 ~. b2 I# {" K, l' u8 @" j
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' i5 i) ?  D: H, I/ }McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- I: P- S! ~/ O3 v( w2 d* W
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" p$ z, P) W9 B2 HMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ @' X/ J3 x( _) {* @
MCASP_RX_MODE_DMA);( V5 \3 U3 h2 Q+ m/ a! o" X  N9 N
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 n/ M7 t' G' E' v- }8 \  ^% i& t
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  u" y: z# |# c: r0 NMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
$ s6 `( u; x: m5 u' BMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' z$ S# X4 I* n- {& n5 q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( O& b' p% q1 S9 \2 C1 H: w% ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, {  |9 ]7 ~& B, `  j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- c5 e5 M6 U6 x
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( F% \6 ]. L" U$ X2 D, A" sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ E! |: i  [8 S% _9 w, h
0x00, 0xFF);
/* configure the clock for transmitter */* R/ k6 W. w7 j5 a9 M0 p
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% b& L" S$ U, q8 ^6 ?' jMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ r" l7 J9 P+ p: O
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 l" ~' g% `  T2 u0x00, 0xFF);6 a2 B8 N% N, C0 L$ ^

3 W, b+ A2 }4 r7 u3 w/ G0 C/* Enable synchronization of RX and TX sections */
: ]& F* h8 C; \3 p7 N' ZMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" j) ]/ B# d: v" _8 G! l- S1 r2 F3 DMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 s$ {, a9 t0 @8 O. zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 S( p$ o3 T) j5 d5 ~; m% V! M$ f** Set the serializers, Currently only one serializer is set as
4 M2 ^# ?0 Z0 \8 P- e, I** transmitter and one serializer as receiver.
" t  w3 [5 D" V, A! z9 Q8 `*/2 m1 A/ h& f2 v: R
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& }/ P: u! s& U; P: CMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) d( G' B" Z$ j9 m: Y8 ^7 E** Configure the McASP pins
/ m* ~: |& N8 U7 E6 J- g** Input - Frame Sync, Clock and Serializer Rx( b' n& X* b9 n  A% J! E5 ]
** Output - Serializer Tx is connected to the input of the codec
1 t# j+ L9 a" Z9 l*/4 E. v% I8 ?: p' G
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 n/ _5 P; l" |0 c$ J* M& o# [% M
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 ^& v% z8 j$ Z# y" G0 X9 o
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- F6 K, Y; {  i; ?8 T| MCASP_PIN_ACLKX
- ^$ K  z( A8 G9 N( g, c+ j5 c| MCASP_PIN_AHCLKX
0 H8 h% t0 u. v* D' ^5 k  F| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) z+ G# \6 _4 ZMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ L2 d- Z2 i" \6 D9 M) x6 v+ L, v| MCASP_TX_CLKFAIL   b' P; b& Q5 a" v5 U- P
| MCASP_TX_SYNCERROR) h4 [3 A3 ?* R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 8 Q9 V$ [; B, U8 R8 J2 M: F1 J9 q6 ]
| MCASP_RX_CLKFAIL
/ \0 j: ^# P) t% P8 G: J' `) F| MCASP_RX_SYNCERROR
7 `  q+ }# o7 E+ W1 c2 G| MCASP_RX_OVERRUN);) S9 r2 H- z. X9 e/ c' |% z2 b0 o
}
static void I2SDataTxRxActivate(void)
' j4 T4 u0 S" t4 _( A" @7 n! f{) L) ]; S  K1 V4 m
/* Start the clocks */% D$ v* B8 I) }& [6 ?& J; d! Y6 I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ H5 R0 b- h# n* n2 GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 p2 Z& |1 |& x% p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. e- M+ {( _$ e# V! O1 W$ |EDMA3_TRIG_MODE_EVENT);
' E( p" D/ [( I2 A) R1 i: P. _4 G$ p& zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + D1 F, H5 i. {1 d
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( L+ j% \4 r3 ], L$ s8 }) E) B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 c. K5 z7 L$ t2 Z6 PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( ]* Y8 A8 N; p. Z8 C) m! _& h, N& |! }
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- U# ?6 Q% X7 j5 h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& E2 k9 L8 y8 S0 S% pMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 g  I* _" F: H}
$ Q( k- m' h$ Z& Q* S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- a; {8 F# g  P. q- t" B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-9-5 06:39 , Processed in 0.040673 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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