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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8592|回复: 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,
4 _% I: ?" I  [4 t- w6 oinput mcasp_ahclkx,, t6 x$ I) N+ w/ M2 k3 B
input mcasp_aclkx," m6 |7 ~9 }6 L& W
input axr0,8 L. j6 g, G# I" [
) }9 u) q& g/ Q! C  z
output mcasp_afsr,
! e' @2 L) [) Youtput mcasp_ahclkr,. X) E4 ^; H+ k1 n+ \/ y4 }
output mcasp_aclkr,1 T6 i5 K' C4 Z
output axr1,
7 k) G+ Y8 J0 V( h- A
assign mcasp_afsr = mcasp_afsx;
) Z, t! L0 P! Q( ^) u9 Eassign mcasp_aclkr = mcasp_aclkx;
) Z7 {. b8 V+ t# z7 Z0 uassign mcasp_ahclkr = mcasp_ahclkx;0 \* C3 I" u: n5 G+ [; Q9 K
assign axr1 = axr0;
& {2 F; \+ p4 y/ k# ^
7 r1 y8 d$ N2 c2 T. q: p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

: D4 D# \7 c+ f
static void McASPI2SConfigure(void)
. P6 \" U0 Y# q0 m  v) U{
$ D( `3 S9 {9 d  T9 E4 e- ]McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' F' \0 e6 U6 D! oMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ e( ~& U+ F0 b' z, g6 ~McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, F) ?% ~1 T+ ?" x( G1 ?6 c6 n7 |McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 P. X7 n3 H; g& _- Z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, e) E. L' ?# A  J  TMCASP_RX_MODE_DMA);2 L; y0 [' e  r7 ~3 l
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* I# |' j, N) u% A. a5 y8 l6 i- y; eMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) f/ R6 T: k1 L
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . e* s) N+ O7 k) |. }! G& M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: {. @% t9 r8 F- ^- ~
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 s1 X, Z( q! U0 {: g1 U
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
* M& V$ E# Q$ e: t: e1 IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
1 N. e2 L9 S4 T5 y% q& J9 S  eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; C4 ^# r6 U- uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 E; |7 c- k  v6 v0x00, 0xFF);
/* configure the clock for transmitter */
' j3 P- ?1 k, B& q/ |$ `2 J! \1 fMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 S4 J- S2 N; ^. J$ v$ q( B3 \3 M# ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 b% a( l4 {8 t' O5 aMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 R5 O0 u! G0 e5 O% {; @. e0x00, 0xFF);9 y; _8 L( x. ]3 |* O& e* [

+ d: S/ I5 r; j! }0 M/* Enable synchronization of RX and TX sections */ * k" f: ~1 V3 t2 f9 \6 s
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 [9 J' b0 m2 L: L" H
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% e- W& v7 y! W' w: C+ s  M, {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ \, P: U5 L* [- A
** Set the serializers, Currently only one serializer is set as4 C% U7 F3 E2 W- \1 \( A% b
** transmitter and one serializer as receiver.# |" g% o& a; O) K, N
*/
' D6 j" [( h$ D9 }0 O% SMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 R  s4 m4 p7 z% jMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 c! U# O# p" Q# V9 \* U% e; S
** Configure the McASP pins
* t+ J$ k) ]6 O** Input - Frame Sync, Clock and Serializer Rx
4 F+ z$ ^( x* ^  P7 i, U1 f4 ]8 d; _** Output - Serializer Tx is connected to the input of the codec + r; N  u% Y2 e5 @1 E/ I# \1 ^
*/- f: Y8 v* [0 b) Q  p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: U' m  c' x& b0 ^; w! W4 H* ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# p* ~/ l5 B: I& |McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 v7 N( h( e; X! w( J| MCASP_PIN_ACLKX$ U; s( u# Y# q/ |* E
| MCASP_PIN_AHCLKX4 j& E& M) l' r+ ~5 t
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP *// e! Y. D% ?8 Q& t4 [3 M0 @! c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; l1 M) V; z# R5 O# }| MCASP_TX_CLKFAIL
1 s% w) u& C$ d5 M| MCASP_TX_SYNCERROR, v5 q' r: m% H" a5 m8 `, g+ U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* _' a+ ]0 s# ^8 c| MCASP_RX_CLKFAIL/ ^' l' R9 ]) b$ o
| MCASP_RX_SYNCERROR / Q9 t' ]3 S6 w6 F
| MCASP_RX_OVERRUN);
7 C! r$ b! a- c" Q0 O! b: i}
static void I2SDataTxRxActivate(void)) _7 k' [' Y0 y, w' @. @7 [6 d
{: |+ ?: K  D+ t, j0 K, L
/* Start the clocks */; M6 b/ l/ e: r% x' Q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ g# D" Q0 {$ g! C  X% cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ e0 E0 T2 k) G) c% u/ E" G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ U( o/ G) ]* u* D0 ~$ b
EDMA3_TRIG_MODE_EVENT);- t  T8 s7 Z7 m+ ]6 C
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! o' h: f" M$ {: v. q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; U* h0 V3 k2 R% [6 U7 s/ \8 v( P1 ~
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. x4 t! \* ~' k4 x  m2 @2 \
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 @6 Q- a/ g& Wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; J/ {9 J; G  E, ~' v* jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);) Q3 v; P" ^: a9 S' E+ S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ x, p# `$ @$ |- A3 Q/ H, x
}
* i! P3 G; @- |" \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. E* L# g( ]) m) `* D) ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 09:59 , Processed in 0.036985 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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