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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10605|回复: 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,
4 w  N) v$ B1 w( g8 w  w7 T2 dinput mcasp_ahclkx,8 S- Q6 K. r0 O8 [! \
input mcasp_aclkx,
( {2 U! ^, Q! V' xinput axr0,$ B1 O9 l( B2 b4 g% K

% B$ J; U# q6 }) W7 voutput mcasp_afsr,
% A6 J9 k. C# x* Voutput mcasp_ahclkr,7 i1 ?; H( Q1 `# M8 Y' D+ ^  l
output mcasp_aclkr,
* d) f- C- K, g' qoutput axr1,
. b0 u% T) B; \) S
assign mcasp_afsr = mcasp_afsx;7 [; R; Y! k2 p$ H+ F. k
assign mcasp_aclkr = mcasp_aclkx;4 r1 w& n* f4 t) P! [' s/ c* z
assign mcasp_ahclkr = mcasp_ahclkx;7 p: [2 y% |7 {" ]% g4 w0 l: n
assign axr1 = axr0;
, @9 ^  n, f: _7 y% C+ P: w2 o( o+ T
) ?0 G/ w5 E* T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 W- w5 r! p) A- P: F
static void McASPI2SConfigure(void)
6 |3 B. @) m2 J{1 {' p- G* _4 c
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
( X4 i# p, R7 A5 OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, c6 i2 B4 I/ B. D7 c# T+ w' TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( Q4 m" M/ W' ]! k; R6 n9 iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* H9 V' W. r, L7 f/ a; ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 P7 w/ r- Z$ ^. y- I+ y
MCASP_RX_MODE_DMA);
, R* q: _- h+ sMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, |) V8 L  j/ d' Y. J/ @! CMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* ]( O0 w1 K! Y1 k! ^% h6 B
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   _  D! L2 R, f6 W( r0 D9 ^6 E
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 f6 G- b3 s* R7 q1 ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, : N, ?& J# u) z( l+ P3 V) |( U6 B
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) e! w, K, \5 J1 L  i1 i, Q( e  J$ FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
& [6 Z  t* e- D5 |6 kMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& x! l) i" b$ K1 }" H5 b, WMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' i. y# F$ x7 z0 a0 `7 D- H. k
0x00, 0xFF);
/* configure the clock for transmitter */5 V  d4 a: `5 L7 ?5 r+ S
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ G! M: g' G& j0 b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - F$ e- T3 _/ Q) W% H
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 Z) I6 H: R% ^9 u- V0x00, 0xFF);) P; {* i  r, Q/ Z( f" Q4 y  R3 t( [

0 O* x/ K+ Z8 g' ^8 B' S/* Enable synchronization of RX and TX sections */ 7 w0 m3 N8 y/ p9 ]/ M: V* r; a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) j2 X! W# N4 CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 y$ C7 c5 i' dMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  N& i& r" U4 I: r! I6 X/ S
** Set the serializers, Currently only one serializer is set as
% }; i4 |" E& b0 `. i# X** transmitter and one serializer as receiver.
3 w# P6 Z6 ?# f/ C! @* M*/1 {/ O) m. |' w" j6 l2 B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 N! J# A0 x! p! G2 B5 uMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 Z; x9 j7 t1 ~- H** Configure the McASP pins
9 H9 b% Z5 I* t** Input - Frame Sync, Clock and Serializer Rx; n+ f8 H" C4 q
** Output - Serializer Tx is connected to the input of the codec 0 q5 F7 e+ N. {' b& O% B
*/
$ K6 M# p! S8 R/ b" MMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 v9 d  `6 W- m9 g7 [/ x
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  D6 e, P  J! w9 u
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 @1 H" U! E) || MCASP_PIN_ACLKX
6 Q4 n, O* O4 d| MCASP_PIN_AHCLKX& I+ w9 W- _9 d$ t0 {
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ P) Z$ P, i  \: G% U& PMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR * ?; {7 [4 w, T' V; g: O2 z; d# t
| MCASP_TX_CLKFAIL
5 V' \. R  M; z; e| MCASP_TX_SYNCERROR* Q* H; F0 q9 A" z3 [  p! `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ m6 L0 m$ @6 E  ?" \
| MCASP_RX_CLKFAIL
' H) I( v6 k! k| MCASP_RX_SYNCERROR ! V: |& }& n$ h( D
| MCASP_RX_OVERRUN);
( }% V4 g) J! Y4 z7 A}
static void I2SDataTxRxActivate(void)  {$ l6 z0 C9 S8 E
{+ p8 o. Y7 l, I3 L# s! \
/* Start the clocks */
0 N1 g( C" {4 h5 n4 fMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; s4 o7 x# ?+ q2 H
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! ~8 \; W! a' l2 K# W3 v+ t  qEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% R1 h# Q/ s) gEDMA3_TRIG_MODE_EVENT);3 k" k4 c( T7 h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! t3 ], ^- z$ R3 p# `+ k* H7 U
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 [$ ^! h5 E4 B1 p% T- w2 |, QMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 K3 `9 c; T( i; `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ Z8 ]! x( L& q: Z! F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 l, O" B, a6 ^/ @) s6 oMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' x1 _" g* z' R+ _$ [McASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ W" C) K4 H1 n$ `6 D
}

6 j; p; T# h' a: Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) {! K7 Y( x" I6 B& n3 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 00:38 , Processed in 0.038849 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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