MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9683|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, ~5 X9 t3 q' v5 z$ f
input mcasp_ahclkx,
, s* V, G& x  D( j. _input mcasp_aclkx,
$ F0 Z3 A" L$ _* rinput axr0,
) U4 ~8 W4 g5 |! x) M* L6 {6 o% h/ X% c, p  Z2 V  z  D
output mcasp_afsr,9 c, c% [/ h* |/ P2 Z
output mcasp_ahclkr,
/ p2 P. `- _; Xoutput mcasp_aclkr,+ O; \2 o8 F$ k/ O) b# {2 _) G; x
output axr1,
4 Y& h% ^8 v& L8 v
assign mcasp_afsr = mcasp_afsx;" v4 d0 \* M+ s" v8 m
assign mcasp_aclkr = mcasp_aclkx;
/ Z) j+ s) Q$ g2 Hassign mcasp_ahclkr = mcasp_ahclkx;
  ^/ Q4 v- W7 \1 dassign axr1 = axr0;

1 z* ]' m" M* N3 k7 a  p, H* n
( Q, }, e& j: z4 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 {2 c- V( t# c7 m% V! r: T7 a2 F5 R
static void McASPI2SConfigure(void)0 Q" u9 h0 u& l6 i2 J! R
{
! P3 ]$ x( N2 FMcASPRxReset(SOC_MCASP_0_CTRL_REGS);- W* _: K/ i- ^1 e& `/ d
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 {* j, z; o, x# v. A. }$ K/ z$ P; jMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; X6 E0 V8 f& W1 u( g! O# O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 G; W% ?0 j5 e% M6 I) }# q. y. n
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ s$ Y1 E+ q6 A( ?2 Y8 _- N
MCASP_RX_MODE_DMA);% `& a5 F% o5 X+ v6 b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: V. D7 ?9 n) a$ ]. t: AMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& Y/ n' o3 r* b$ ~# T( K7 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ( E. Q+ M: J! j7 z5 `7 G
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% _5 m6 ]% X. ?- j. E) Q* F
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / n' M. P  g* Q* M5 P: `
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. H" n. i3 O) U" f0 l
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, b5 p4 K0 b8 a4 a7 o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : w* o5 i! W( @! L: E1 }3 w
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% k* m4 C* R. t* ~  Z- a
0x00, 0xFF);
/* configure the clock for transmitter */
6 }7 u/ Z' @: \3 b* uMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 q. }9 i  h$ bMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ V0 Y! Z* X+ v" |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- C* H) l4 ~$ ^$ Q0 ]0x00, 0xFF);
! [+ Z$ P/ T1 ^7 }$ Z( W; ^
& L8 @9 K5 V- q4 H* }$ G/* Enable synchronization of RX and TX sections */ ) Y; X8 K2 Z* ^8 I0 q) D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! k: i* Y8 R' f; h, L9 R$ ^McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 C# W. \5 d' B- e4 V2 Z! K
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 M+ M4 `7 C' g
** Set the serializers, Currently only one serializer is set as
& B7 }. m, p5 e' [5 E  K** transmitter and one serializer as receiver.$ l" g5 k* @( C) ?2 n
*/
% X7 c; L& z! x6 S5 C$ e1 Q+ ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
6 S& X7 l. z' W  e( R) H8 n% SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  a) A, g) P8 @* g. B
** Configure the McASP pins
% p& S- B& @6 r5 k2 \** Input - Frame Sync, Clock and Serializer Rx) Z& Y) q- F0 P: e* b# Z/ R
** Output - Serializer Tx is connected to the input of the codec 6 X/ ]( w. c8 `+ X3 o! C/ }( u9 H$ }! V
*/
8 J2 r- z  X% A1 W/ ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);  y4 f3 S+ h- E0 @/ c  Y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 N; ~. M+ g+ U9 i
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. c8 f) X$ o- u: k& i1 ~% d" t* A| MCASP_PIN_ACLKX
) w0 ?! Y4 B+ a# I| MCASP_PIN_AHCLKX- t) I- \3 e! A
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 E7 Q# g% J9 F* ?- ^$ g% k( I8 _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( u/ g1 G! J8 B; G2 R
| MCASP_TX_CLKFAIL
- k* F2 P4 \1 l+ F| MCASP_TX_SYNCERROR
4 V2 B# i2 Q3 D6 Q( H0 T. ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: o, x8 o4 Z- V" _| MCASP_RX_CLKFAIL
" w/ ^* Q* f! Q1 U| MCASP_RX_SYNCERROR
/ n  X$ d! _+ K% a7 A! F| MCASP_RX_OVERRUN);4 @: e" D- g2 R* b. U
}
static void I2SDataTxRxActivate(void): m% V) x* J( M
{/ x/ G1 S! q7 |( X- m. g
/* Start the clocks */  a* I( Y& r% o+ m- [" _
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; v0 z5 w/ G3 f, s0 P8 P7 KMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 _# t7 C/ c. N8 {/ r" z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ P3 B9 t0 V6 t) Q& Q" O
EDMA3_TRIG_MODE_EVENT);9 r# Q: z+ q9 V' M+ D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( E, [% f( T: z* _EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// }) P! q* f8 h5 L. w1 o
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  D. t7 J8 v. D# e# j1 I
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; u- y# k7 ?. p% y! z' b/ p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) e; G& m! @; P; Y3 TMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
6 _$ O. x. u" S, y1 eMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) \4 O/ d6 \, M
}
+ t1 @- s, V/ e& N7 A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ ^+ S5 c# _' u8 [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-17 08:45 , Processed in 0.046626 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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