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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8831|回复: 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,  N( @8 }+ I. h% j
input mcasp_ahclkx,) Z6 X: A3 Y/ v: g; N1 h; N  k
input mcasp_aclkx,
8 b, `7 I& k7 uinput axr0,
) h; x+ [1 l% c+ X2 m& g# ?- h* |6 r% v# b  s
output mcasp_afsr,0 ~3 i% g2 c- i  G$ Q
output mcasp_ahclkr,, ?0 Z) {3 F; e7 H( X2 x- L
output mcasp_aclkr,' M: L4 B3 z' d: n+ Y4 N# L" U
output axr1,. Z! s' u9 A! q$ D
assign mcasp_afsr = mcasp_afsx;
: k2 |4 K& c; Q9 i& x( [assign mcasp_aclkr = mcasp_aclkx;
0 t6 z; Z$ l  B4 i" v: y1 Bassign mcasp_ahclkr = mcasp_ahclkx;2 k- G3 @; v% w/ K% W: e3 Q9 C- ?
assign axr1 = axr0;
* F2 p, D  F" d$ Q* F
2 |" c- h2 u2 K0 P% S# y6 @0 U
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ V8 G$ M* w9 n7 `* y7 U+ b
static void McASPI2SConfigure(void)
) |0 Y* e. b. J+ G{
& k) x8 ?& h: u  f- J" m$ H' {% BMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  k: g' M  }$ ]/ N% h, T. N/ Z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, D1 ~3 F0 Z7 |4 {2 y' mMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; g# C4 f6 Z1 y/ X- h$ ?: s
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- W1 t4 u( U1 f8 _. dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# @/ S8 O/ k- q( m6 i: ]5 VMCASP_RX_MODE_DMA);9 s4 D2 i$ `1 w
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 S) C" U. z, kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" i. ^0 ?3 {0 M" Z( |# c
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 u" d1 b, E" [0 u  D* v
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% ~2 f% @* i+ c3 e. l* v/ s9 d: ?McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; Y% A% z  R2 L8 g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ z) \. ]# d4 b" O& M8 t
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ F4 L% m% q7 l0 e* X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 J3 R" K0 p) X; B2 z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 z& g0 s2 D- }. U0 t2 @5 b; t0x00, 0xFF);
/* configure the clock for transmitter */
6 l3 S/ ?9 D  y/ a# c$ eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 [- \- ]$ F* z) m8 [
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( C+ J. ~; Z! m& e2 ~& _. B  r! W
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 s( v. a- j" `; ~% S9 h3 A+ i0x00, 0xFF);0 n8 s: C9 }, }, M% {8 W
4 O% M" {# t5 k$ V
/* Enable synchronization of RX and TX sections */ 5 x- n# K; ~! l8 j
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& _' R5 [4 s, ]8 w1 ]4 z! m( f5 uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 M9 Z4 }) h: q8 h. b4 {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, Z1 z) \' s. h# [1 U** Set the serializers, Currently only one serializer is set as
0 k% y- A. S9 A/ V** transmitter and one serializer as receiver.8 @" q/ k5 h, g1 Y
*/4 s' ~7 x" J2 ~( M1 c6 }
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% h2 S3 X  j: f2 l% O$ ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& \' g8 q; Y, m; y  K( m& v  C4 o
** Configure the McASP pins   f- ~5 z2 b2 ?$ F! u0 @
** Input - Frame Sync, Clock and Serializer Rx
. M6 d5 T7 F7 N5 U; b9 _. N** Output - Serializer Tx is connected to the input of the codec
  E6 x. I  t/ }*/3 u$ {5 _# q/ ~
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ e  g6 @+ `) _4 EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 K: P& o6 E4 x3 u- c7 ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* C' t: e( A& j% t
| MCASP_PIN_ACLKX
- p2 e- h0 ^. b& D2 U| MCASP_PIN_AHCLKX2 B6 s4 M# g6 V- o5 F7 x+ M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" N7 [/ m! K6 x% \
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# I! P! Q0 k- g* y1 n/ o5 N: M+ b! }| MCASP_TX_CLKFAIL
# f; N+ q4 z5 y5 a% X7 W7 N| MCASP_TX_SYNCERROR, c) n: s& ?" d) q# }
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & V, l8 h6 q; X, a8 b; y
| MCASP_RX_CLKFAIL
; j0 r6 @$ |# f| MCASP_RX_SYNCERROR ! u$ d/ U% j/ U" ]
| MCASP_RX_OVERRUN);
1 q+ O' B1 R8 U4 q! ~' Z0 r}
static void I2SDataTxRxActivate(void)
- `$ I+ k( ~$ H! C4 C{- m/ X. V  O: Z, n9 l
/* Start the clocks */; u& \4 G, P) |/ `/ o" S- ~; J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 y/ \/ b: V' Y/ o7 ?/ F% x) |2 K
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. T/ a, A7 W* F5 z; T' u: J) DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! W& x0 L* w) mEDMA3_TRIG_MODE_EVENT);) T' g  M5 x6 N+ l7 Q: z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 6 D; e0 J5 L0 A  l6 u7 j$ w* g
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" w% d1 J: o( Z+ [4 J" C. KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( q; h8 f7 C) t" P4 J  K# ?McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 y+ b2 d* o( W4 j3 o- o8 gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" A) u/ o/ ~0 ]6 _, y7 j
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, g$ l- b& {  R" j* p# xMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ |" j3 q7 L$ Z6 W3 l}

4 x5 x" O, C! l$ R3 t" q) M0 A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) f( A0 P7 M4 d9 L) M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 01:07 , Processed in 0.037177 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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