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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8349|回复: 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,
8 B" o" G, ~9 Z! A5 F* x' _$ y$ Hinput mcasp_ahclkx,
3 k' j0 w& \; ^! W6 Minput mcasp_aclkx,
( R* M# N- H$ N2 _# einput axr0,1 d7 z' J9 c) ]% H  ]3 [
/ I4 h9 M6 s4 Y( A1 y/ I3 S
output mcasp_afsr,
. S6 V9 L0 E2 C; Eoutput mcasp_ahclkr,3 y0 y) B5 \- Z1 O9 u; [, c
output mcasp_aclkr,- b" K7 j2 \! Q6 k
output axr1,
- {/ X6 I- x! Q/ [( Y4 D7 x0 C
assign mcasp_afsr = mcasp_afsx;
2 @. S" k- Q9 p8 m0 C7 m" yassign mcasp_aclkr = mcasp_aclkx;
! y  j+ h5 ~; A5 K) bassign mcasp_ahclkr = mcasp_ahclkx;4 ]7 G* C6 L; X! F/ X( O: x
assign axr1 = axr0;
1 n6 d9 _2 v& k* [
4 k$ `$ ]7 M, f4 I, J$ Z1 e9 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 c2 k  [" u7 z7 x8 j
static void McASPI2SConfigure(void)
: O4 W7 [8 o" ^& q, T{( s, X8 N8 k9 K; s" E
McASPRxReset(SOC_MCASP_0_CTRL_REGS);: |, L1 p4 S3 v$ P4 x# k" V
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  Y! J( ^7 B# J# \8 d7 D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; j- R$ i0 E& H2 I
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& }# [6 {# c% k; ]7 j+ ?
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 A/ }  d6 p" aMCASP_RX_MODE_DMA);
2 y0 B9 G/ D: i  W! m7 i5 c: ^2 CMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 H7 ~, l0 l8 v$ l7 n7 ~6 nMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 K7 s, r! \* }: f% u+ z2 dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 D- z$ X" @4 G6 h
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: b& I& M! u+ @2 x
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 Q& i" i# @, A
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 B; H6 o' |8 `! g- N
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. Z+ a& S- i/ u: ~! U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . Z2 O( Q# w) m* F8 K
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& C! `! k4 \: X0x00, 0xFF);
/* configure the clock for transmitter */
1 r% T2 V8 L# D8 h8 A) _) n+ vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. v& o+ C8 [  R( t4 QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 V) M/ a3 s0 V' rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 }/ p8 U, p1 y: H0 E5 c, G0x00, 0xFF);
$ @: A! k9 o2 G) Y5 l7 ^$ p6 Z" p2 |: [9 U" `0 p1 X
/* Enable synchronization of RX and TX sections */ $ m; F- S7 T7 O( y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  }- S9 F6 R8 }$ _( \McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 T- T7 q- G9 p8 a
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 `" x7 q5 J9 D" W% S( I/ O" o** Set the serializers, Currently only one serializer is set as
9 O% A# f7 [1 _9 c# r. Q** transmitter and one serializer as receiver.$ S5 m2 O6 w4 O2 E* q2 [+ b# C: Y
*/
. T2 |6 \! \! j' i  C; bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 }4 f: \6 z& S& Y1 }& f4 }, yMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 J% \# s. r6 f4 z, p7 W7 V
** Configure the McASP pins % k! J0 N" P3 E. h! b
** Input - Frame Sync, Clock and Serializer Rx
% C- |. M8 X# @0 K# [** Output - Serializer Tx is connected to the input of the codec 4 x: M; ]+ k2 i' y& j5 O# }
*/
: Z# q/ D& Y$ q- s+ @McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 b+ Q4 l. ]! {2 k& tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# G8 w. r7 x3 X2 XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' P) p% _7 {# R, g( t' j& D
| MCASP_PIN_ACLKX- C. s( n! ~7 P" @9 o3 @
| MCASP_PIN_AHCLKX
& h; r* z6 n# P. A( U| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& e# `( E2 V0 R) @9 Q* H; R4 tMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: b2 ]; @- R/ l. D4 ~+ j  M7 X8 E| MCASP_TX_CLKFAIL
/ x6 S" v7 r8 P* {  x| MCASP_TX_SYNCERROR
3 ^4 K% @% ~( q' h3 n; V| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# G- g+ }  }/ C7 s: T| MCASP_RX_CLKFAIL
# P$ m) M' f+ ^) F+ Q| MCASP_RX_SYNCERROR - D3 E, g$ ~! O! {" n1 X5 ^
| MCASP_RX_OVERRUN);; K: q& k  f# X0 G/ v+ M
}
static void I2SDataTxRxActivate(void)
2 g$ p" u0 A/ y( T- k/ d{  Y9 w7 W; B( ~% m; `9 Y
/* Start the clocks */
& h* X" n2 R* UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- U7 A: |9 N% \% q; H/ E& `! S( [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ s: E8 E& i) T- W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 E. k0 \5 c) W& @$ K4 {EDMA3_TRIG_MODE_EVENT);0 o! e( ~" j; Z, W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' O1 S# a0 v# N; k1 e; L" k; s, fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 P1 p3 `: a) c9 b1 O8 t* hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* \" A7 i. a. h
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ k, d# r- H2 K5 x% J# wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */) o- N9 |$ m3 w' [) r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, g3 ?  Y! c0 Q+ rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% k$ I% A& T- g' p9 V}

* U- C6 U0 `4 c" C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ H$ ^' K% }- ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 21:23 , Processed in 0.037354 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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