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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11472|回复: 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,7 L3 T$ B% ]5 D/ z1 ?
input mcasp_ahclkx,
8 v. `8 I2 F; Sinput mcasp_aclkx,, f4 N5 Q$ V; z" n4 i$ G! E. B
input axr0,! t# b3 Q/ N0 U$ ~6 M
0 ?+ R: c( u4 G2 [3 z! d
output mcasp_afsr,  |" W# e; x. J2 d- X
output mcasp_ahclkr,  {3 B, _+ Q$ L
output mcasp_aclkr,
% V8 a* }' ~2 o$ R, l7 ?output axr1,
6 r) M2 @  `; Y/ h8 v( |- ]" K+ _
assign mcasp_afsr = mcasp_afsx;$ I/ P8 Z" N4 B3 i5 T5 W2 m7 G
assign mcasp_aclkr = mcasp_aclkx;
: }% v5 h; Q, Bassign mcasp_ahclkr = mcasp_ahclkx;
8 K# E, k3 v  G7 E, F0 }assign axr1 = axr0;

" \5 I5 m5 e7 i2 i6 a# Y4 M2 Q$ P, C) p8 G. |' K. O: n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( s0 Y$ `) Z, y' C0 L8 t
static void McASPI2SConfigure(void)
! g: N# c2 M5 D' l7 u: t{
# K/ I% ~' W- j$ uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);+ P* t" q, l+ G
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& O& l5 `* D: D; {" w  j' Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 J3 v5 Z4 a' b' t; ]
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
$ D5 X% w, W: e. {0 r' O6 BMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% H( U$ X, d3 b3 t" J' L: x2 PMCASP_RX_MODE_DMA);& B4 k! s; e) _+ `/ y9 E8 [% v7 U
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 [+ p) l; O% j0 O
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 \2 _% l* z  @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" L0 L. F1 R! G6 FMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" Y  y2 K' `0 b# ?+ S* Z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) Q; V4 J1 ?! r% h; R' W! H$ m" H; y. CMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 f8 M2 O2 h$ c; p+ |# f' f- r3 yMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' |- `& f, J3 V, FMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& d$ x* n: [5 B. [7 B5 Z* GMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* s* `8 f- M# E; U8 \# g" S  w0x00, 0xFF);
/* configure the clock for transmitter */* o. W3 B2 u4 F, u2 R0 X8 C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* N9 r6 x, z3 c6 A8 q1 {& sMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% z$ k% X. B' w! i) d. Y3 \: C5 \3 d8 zMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
  g0 e- ?3 ?/ R( W, b0x00, 0xFF);+ v) ~% }0 h$ R, [/ O: Y. @% Q
" Y/ q+ j2 S6 k0 e
/* Enable synchronization of RX and TX sections */
4 G  f' O* H/ S9 r: D# p' `McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, |4 k- E, B' r" E& V
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, [/ b- l! \) C, S# I; t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, C( P+ h2 J* s0 c8 Q" H2 ~: I! Z2 V** Set the serializers, Currently only one serializer is set as
+ D" s5 f% f4 H, T$ H/ G7 L( o# h** transmitter and one serializer as receiver.3 p4 C9 {  x& a0 b
*/6 u+ g. U% b) @! G* d# b& m# G; z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 P/ y! Q% W+ `. F+ o* kMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) z% U$ y3 _3 ~6 |2 N% J** Configure the McASP pins ( w6 C* e* G& j2 H9 J9 p( c9 R& ]
** Input - Frame Sync, Clock and Serializer Rx+ ]- V) `$ D$ u2 _" r( l
** Output - Serializer Tx is connected to the input of the codec
, l3 L# n  \  C6 Z. Q; L* r$ l*// b2 U, g7 e" J' N% }$ s
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
& u4 n. x; {* EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# n, `  w  o+ ?( }" P4 o) RMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 ^. e6 A) H- z* M  ~  ]  ~6 V| MCASP_PIN_ACLKX
. q- b; v! O. o6 `4 I| MCASP_PIN_AHCLKX1 h; Q2 d4 I" k; ^5 n; E5 W7 F1 _
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# F7 j8 P, n# i$ b
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! A! l' M9 y7 Z# j
| MCASP_TX_CLKFAIL
1 c: C1 x. z9 O  I3 m| MCASP_TX_SYNCERROR5 |# z2 C8 G8 w. D9 j5 E" ?8 R5 K$ ~
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 ?( Y; ^! a4 f7 U4 z/ y5 i& }$ z5 v
| MCASP_RX_CLKFAIL
% r$ i6 P. Z- l. |( V% t( N| MCASP_RX_SYNCERROR
: t8 c2 @: ?: `8 _3 V| MCASP_RX_OVERRUN);
4 u+ a5 G- q  e4 _/ {  D( g}
static void I2SDataTxRxActivate(void)
% c; C7 Y" B' @{
7 U4 b+ p3 u- l) [/* Start the clocks */
  `$ x7 {! K# {# m; C1 F# C2 G; yMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% r7 h% s) m6 W* yMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 V9 h: I8 W* P% f/ t5 U
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 [7 n* ^7 z5 g' s( w0 d
EDMA3_TRIG_MODE_EVENT);
4 t5 x* \6 m/ n. y0 a" ?4 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' R5 {0 Y' v3 l" @8 }: j7 e2 ]! ]. g
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 ]5 L1 T5 C% M7 D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 t: L1 w9 E) h% k% n. o3 e8 V* w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, e4 }+ ~* C+ @! J5 U
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ A3 ~8 S- I! a/ P9 aMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: c  |) P+ f9 pMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);: A( _6 n# |8 ~( U1 T
}
; G1 ~( _: T9 ^% l0 m% ^7 l4 l% Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# ~' }% v, F. Z- L. ^, u2 [7 _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-6 06:47 , Processed in 0.046236 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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