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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9777|回复: 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 D+ ]2 i# M6 p6 Q" z+ Ainput mcasp_ahclkx,
" X  l2 I; ~0 Z$ L3 W! Minput mcasp_aclkx,( ?! ~9 I/ I! j; C- z
input axr0,
5 F/ k3 l6 D+ J2 d; P$ k' t% m: {* s8 o; [
output mcasp_afsr,
( r7 z) c4 |$ J! X6 Y1 Qoutput mcasp_ahclkr,
5 ^4 _/ G0 [4 D+ k7 B/ uoutput mcasp_aclkr,
4 O  ?" b: `" Z. N. Y5 |" B( f  Joutput axr1,
" m+ Y1 W* d$ |+ D! I
assign mcasp_afsr = mcasp_afsx;. Q5 D8 |" y5 N
assign mcasp_aclkr = mcasp_aclkx;
5 R& j# e7 |7 Massign mcasp_ahclkr = mcasp_ahclkx;
# h9 Q" _3 s$ U) Bassign axr1 = axr0;

; P+ V' g, j  G, q( a( L" g3 @. k: G* t) s5 ?, A  s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

- Y" ^) h! K5 L0 Y
static void McASPI2SConfigure(void)4 L9 l7 \. l% C  T' E( |
{% I& D" T5 F! t* c  |6 o4 r
McASPRxReset(SOC_MCASP_0_CTRL_REGS);8 H. O. F5 ]" [8 I4 B
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 p( x) x  j+ H; b- R9 p7 l5 [
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& x  l; k8 I  L5 O" w0 m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 L% a" }4 k5 z0 T6 w2 MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: M! \  E. u1 Z/ n3 ^MCASP_RX_MODE_DMA);
+ d; ~* x0 L, C$ a, ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 J1 p3 r  ^& V( F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' A" ^% I( D$ q: N
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : r  Y( x6 [1 {& m, k6 P1 I) m+ H7 I
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: j" G: {/ M) Q" W1 x
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 o0 J) G- |) s* k( z. S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ i- H6 G( S4 J- ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; V2 y' \% G/ p5 `, ^4 W
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- C1 O( C- U. n& |) g2 tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 u3 |7 F' Y( f1 _) }$ f0x00, 0xFF);
/* configure the clock for transmitter */" |. ?! Z9 y0 b) v4 w5 A- h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 j2 @" R/ Z8 ]- u! PMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) V: c# K0 |0 l; [3 d; G5 ]8 xMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& b& U' s, K- ?0x00, 0xFF);
2 o7 W$ Q) s  S6 p0 w9 y& ]+ S5 I( ^, N: i6 t$ W
/* Enable synchronization of RX and TX sections */
+ X& o- @. y9 _4 G6 QMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. z3 C& t2 n* t8 _- N9 rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& M0 k( e1 g0 c9 B6 u2 [! A. AMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 O' E. }4 j8 O5 j" @% t** Set the serializers, Currently only one serializer is set as
$ P! Q( v6 i& {# q: C4 D** transmitter and one serializer as receiver.
/ x" ~, O5 x. Z  R+ u# G8 q, I*/- Z8 f7 i- ~7 `1 F0 Z* \7 x: s
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! ]6 ~' b$ C7 N# B0 s  }' D  iMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*/ \8 z6 R( \) E7 X& B
** Configure the McASP pins 1 X6 B3 o5 \, q# m# v3 Q; f
** Input - Frame Sync, Clock and Serializer Rx. G$ S5 `, Y! l' J
** Output - Serializer Tx is connected to the input of the codec
0 K# \5 F' ]$ X; U+ H- J*/2 ]/ w. t3 u4 i( e6 V& I9 }
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);0 l+ A* n# I7 u' H) ?, t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: ]  P; r$ R, i, K: L+ `
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 X% H3 x0 ~# y5 i) I- t2 a
| MCASP_PIN_ACLKX
3 H- i% P, L7 c6 j( e5 ^| MCASP_PIN_AHCLKX
$ c# Y, s) @7 a1 T7 || MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 r* s! [, m4 ?( i: `* oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 |0 k' q7 V* H" o5 N% u+ I
| MCASP_TX_CLKFAIL
# w% i' C* l* ?+ P$ }) K* `| MCASP_TX_SYNCERROR
; O& A1 y+ l( X( ~2 A- |% [| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 Q4 f9 O% W3 x: `" U
| MCASP_RX_CLKFAIL
5 u) J1 T8 U. K( I! T( M5 x| MCASP_RX_SYNCERROR / z7 g- H! D9 k/ z5 y" A! W
| MCASP_RX_OVERRUN);
/ K5 J; a" a/ A}
static void I2SDataTxRxActivate(void)' U. F+ D: O* h- N2 z& z+ L& r
{" U) Q8 O) D1 T
/* Start the clocks */
5 @  l* o; W0 a: O: uMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; G( R# \( h' Y; W. D
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 U" J) Y- ]$ b3 A* m. h# ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* a0 O  o6 r5 H! x, Q4 CEDMA3_TRIG_MODE_EVENT);
, L6 |( v! Z0 S: l  M9 N" W6 kEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 g# O4 {1 o. \  Q9 v
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) M$ D9 w! u- r2 ]0 E/ p' h5 J) qMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; _( N" H, ~6 G% BMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, M. I% d- U1 g* o* _
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */' q( l$ X# [5 o
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);( W$ U9 R0 ?/ V4 G6 \5 l6 q) A1 R
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ h, q  [8 [; Q3 G1 T: M! c}

2 _9 w, Y9 v: ?1 m: ~2 i
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 e" z! D- f' _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 22:33 , Processed in 0.040632 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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