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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8913|回复: 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,* l  X2 L0 A; b0 o3 M- r  r! O
input mcasp_ahclkx,
; D  u, j# h/ k/ o) Linput mcasp_aclkx,
/ G/ s3 J' n- h: q+ k, K: |input axr0,
! H- e7 R1 D% x7 k# _" u$ K- j1 d" Y
output mcasp_afsr,- J0 D( {8 h' M* w. e2 B. ?
output mcasp_ahclkr,5 R& a" m4 F) c. x7 v- j5 Y, g2 _
output mcasp_aclkr,
0 L6 ?2 I; H% }/ S5 a2 Noutput axr1,. `- {0 B+ }/ C; C+ r/ J3 l5 s
assign mcasp_afsr = mcasp_afsx;
0 l; j  \# t  l. S& Passign mcasp_aclkr = mcasp_aclkx;
- ?- w2 ]  O- ]+ D6 Y4 F2 \2 ?assign mcasp_ahclkr = mcasp_ahclkx;7 q, Y( S8 x$ b3 k  c
assign axr1 = axr0;
3 X, G( z1 x) M- _5 b- r4 W9 J

; m& G6 }& t1 x" b/ B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" K, w$ }2 x! y: T
static void McASPI2SConfigure(void)
- f# U+ q# ?+ {9 J4 H. z# C  s# s{
% v: m& i; @5 @  n. \McASPRxReset(SOC_MCASP_0_CTRL_REGS);
( s: V7 p9 n! Z$ ^8 t+ yMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) s- Q9 z, h* d
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);+ s0 c# Y; h+ X- f; ?( H
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 s2 }' o) r: CMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) A8 t) \+ c0 E, h2 ?: pMCASP_RX_MODE_DMA);
+ Q! ?+ V  y$ O) Z0 ]  B& j  _McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* J; F0 A- w2 K1 {7 T
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ ^5 }; V& ^: q  r) ?$ W5 BMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * D; `8 k+ R) G' p$ U& k
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. C8 s0 L- Z: ~" a; p+ Z3 i0 KMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) q+ F0 C# E1 P% Y' T
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# s1 K8 E! a8 L3 ?McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 }; ]6 Z2 U5 l. j8 E
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" f. }1 y" o* c5 l! N& bMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& c: F7 A. q3 U
0x00, 0xFF);
/* configure the clock for transmitter */. V  J1 [9 l' L+ X
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# t8 I5 Z2 K# H: {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / S/ K" v4 }, e1 \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& k8 J3 [: n% y) Q( J0x00, 0xFF);
2 B; F8 u1 v- p9 @8 A4 k+ E- d: y/ [% H$ t
/* Enable synchronization of RX and TX sections */
8 h# a: O+ b( [* j/ [& i! I# Y+ w* XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ X1 @+ Y) _4 vMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 h3 b- \# Z  G* T5 {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' z6 b* _, M6 I% X1 u
** Set the serializers, Currently only one serializer is set as) G- C  k: x# ^6 m& b' I
** transmitter and one serializer as receiver.
- Q) C5 \: E- ^* l*/  [- }  |& b5 O: r: b( H
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. f# x! M; i9 d9 v+ q$ T9 F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! K# g% }! @0 B8 [** Configure the McASP pins & s2 s+ `9 p7 ]8 e5 U1 X( T
** Input - Frame Sync, Clock and Serializer Rx
/ r8 L' _6 h. i; L** Output - Serializer Tx is connected to the input of the codec
& z9 ^3 z: |8 z0 Z# N+ H6 h*/
1 Y. ~" V8 U  v+ aMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 U. b5 g6 i7 c6 N0 L) `, m% z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 Q; P& p, x3 ^* T4 f3 K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, p2 {# |2 Q: _$ y. h2 N  n6 R7 E
| MCASP_PIN_ACLKX
( ^" ], W& t8 O  |9 |5 Z8 J| MCASP_PIN_AHCLKX; g& G4 s. p" z1 z. M+ P3 v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 ]' I1 q  G$ y( }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 X% e0 o/ H5 G4 G' P8 p  C
| MCASP_TX_CLKFAIL
  M" K. V0 |" g. j$ k( @| MCASP_TX_SYNCERROR0 R  W1 R0 n3 V3 d1 H* f) u4 _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & O* {) W7 c; M3 P$ e2 d
| MCASP_RX_CLKFAIL8 m/ N6 b' J% `( o9 x/ ]
| MCASP_RX_SYNCERROR
7 g, ~) {0 ~* w$ W: g% {4 X| MCASP_RX_OVERRUN);: ~3 a( R/ \# l- Z( I
}
static void I2SDataTxRxActivate(void)9 ]8 v% L* n9 T+ f4 C4 X) J% m
{3 }6 \! t1 f7 w% w' N" c
/* Start the clocks */
& D& @; U" O3 y4 u4 uMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" S  G2 f, V7 I5 a) W& W! K2 A* L1 s. i5 r
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 U* j& i$ p) p( G5 @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 S' N2 @. P7 H; P' Z
EDMA3_TRIG_MODE_EVENT);! a, E5 a( O& x# v4 }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + R* |* Y3 W5 p$ W7 z- s: w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) |! K/ @2 W- T- M! h" u9 Z$ O
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 \7 F1 Y: N4 P- U3 dMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# Z$ w% J; A8 I3 B! ]5 {while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ M( H) {- ?& w/ S; CMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 ]; z' q) ]0 K  N
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, o, L4 G8 L$ P4 c# T* D
}
' b$ X2 v. _8 }- @0 P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

) B9 |+ c. y' e" E4 q* M2 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 03:25 , Processed in 0.042976 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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