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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8773|回复: 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,
' e* `) o+ V8 x; |# i$ f5 L7 O* P0 @4 ]input mcasp_ahclkx,: \" y. m8 ?$ k
input mcasp_aclkx,
$ i, G2 ?2 ], `1 O. v6 `input axr0,
) w3 i" u0 N% s6 `4 h% N: L
8 j/ C9 R8 P% Boutput mcasp_afsr,
, ~( Z) b9 E: N: j% Poutput mcasp_ahclkr,3 E, L" U5 l7 ?4 e/ g4 G0 M# [, j; R
output mcasp_aclkr,
. K! a+ z, R8 @2 d3 J: Loutput axr1,+ M% }" R$ e+ j
assign mcasp_afsr = mcasp_afsx;3 X; V, z' F7 d8 [
assign mcasp_aclkr = mcasp_aclkx;
8 @7 k- Q! {6 l8 ]( qassign mcasp_ahclkr = mcasp_ahclkx;
! h- F, }$ l! t: h  Y+ ?assign axr1 = axr0;

, }0 G1 m- z  w3 k) z: F  c; }! |& x  Y% G, G% ?* Z8 M! }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ v' i* `0 J( ?4 c- R( U+ {4 k
static void McASPI2SConfigure(void)& w( j! f7 D. v: W7 q
{
! a, P" `4 P1 z/ B: XMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
) _6 Z: P1 b1 U# \McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& K8 r2 y( E6 L/ `( WMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 ]8 m& h6 c  fMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 G( I$ W1 D' R7 ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, z  o. A4 F) {& B4 j
MCASP_RX_MODE_DMA);
: l  O0 ^" ?2 ]1 X& ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 H9 Q# g$ {  n; _
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, v- V: V. |0 S/ m" E+ s: _* I
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   p" p0 Y' E6 C% l0 |5 w7 r& t
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 P" e  ^4 `2 _8 z1 S+ u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% k7 c! G* i+ ^1 O# }1 ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 {. n* {4 E- t/ }6 K6 C. E* I: oMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; t' W. p- W: T: q+ t# DMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) R2 P3 [- L1 ]4 i2 |0 b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 B0 p' Q: t+ s9 I4 _# W
0x00, 0xFF);
/* configure the clock for transmitter */
9 i" @' C1 \& X- L7 AMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, o; y4 o% S) Q, Q# k2 Q1 ~
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" c, _2 U6 p2 d( d- wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 C9 x3 P& M  ^1 r" z0x00, 0xFF);
- ~$ A; m7 ^2 a  h% Y$ o) z& Z6 u, G
/* Enable synchronization of RX and TX sections */ ' `  w+ z6 L7 j5 O" x. F% a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( n7 g( d$ C+ f3 a" C' jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);8 }% ]" K3 z4 C- K& @5 J" B
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 \- v: ^7 Q3 t! q7 X8 w5 f1 r) N1 O7 g** Set the serializers, Currently only one serializer is set as
0 R* H# u7 |* P7 W" `: x** transmitter and one serializer as receiver.( J. P% K  S, u- L
*/* S9 l6 m  D/ f/ ]* T- o, e9 X. T
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% D3 W" k+ N; `1 G2 gMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& s) m% Z. ~/ P5 I** Configure the McASP pins 9 ]+ a4 {# C+ `" U
** Input - Frame Sync, Clock and Serializer Rx
9 P- m/ ^, i7 r4 M** Output - Serializer Tx is connected to the input of the codec   S% ^6 a) F9 L9 P# H. T
*/
1 {6 a- I7 i/ E* P; kMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ g* s& ~4 R' s2 E: p+ sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( v% c* }' b& o, S1 v0 h
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX7 x& n7 K2 t7 H% x9 h) N8 p
| MCASP_PIN_ACLKX
, J9 D5 q0 i' M4 _1 A* }| MCASP_PIN_AHCLKX
$ B8 e# s5 E( C( l' |0 z4 ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) M0 t9 `: m0 h( I8 a+ n' E
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . U* s4 K; \5 \9 j. ]+ T
| MCASP_TX_CLKFAIL ) b* j5 k% E! [8 {( |
| MCASP_TX_SYNCERROR
8 a; i9 ~& f3 [, H$ s6 O8 _% w. X| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * v& |; d5 d4 f, E& Z3 n" l# d  ?
| MCASP_RX_CLKFAIL
1 ]7 j/ d, d4 l  N- v| MCASP_RX_SYNCERROR ! A1 v6 r/ j8 z. W6 e- T
| MCASP_RX_OVERRUN);
7 [( L2 ~2 k( Q* q/ z}
static void I2SDataTxRxActivate(void): j8 u; \; Z2 V- Z7 {5 D( N
{
" h+ }  W# M  o4 q+ \  A3 N/* Start the clocks */$ G5 u2 Y- I9 [3 O) u9 G; b' m' v
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 R  z" i2 q! W  P2 R& p
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 Y3 F  X. q2 \( e5 w9 u6 y6 K; E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! _5 `8 Y& z# u. n& j0 S( q
EDMA3_TRIG_MODE_EVENT);+ X, B' f8 N0 v7 B# y: W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 a& V  g8 C& s* K: L
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! [7 R" H) v/ N
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: R4 N/ O- W& E+ e6 M9 G. lMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ r' k7 t$ E( W- G: U0 O' M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% p" N3 T% K( n/ ]5 e% V( V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ m* F. E8 q( r% n' B0 q* h  X, rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 e$ m0 o$ U6 q1 K: }2 E* t
}
" p" n. |5 K0 k" T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ I/ U) v4 H) ^3 h0 ^9 F7 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-4 21:43 , Processed in 0.038455 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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