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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10576|回复: 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,3 _8 W0 l8 W1 S0 P0 U% m
input mcasp_ahclkx,, V" v5 e- m; O4 V& ]
input mcasp_aclkx,& B1 t. \. Z1 `3 Y2 m$ \9 E
input axr0,2 ]6 W# C& d+ |% @1 ^3 ~

! V. N' _. V6 y5 joutput mcasp_afsr,
3 K3 d% Z9 }& P8 V5 r' _output mcasp_ahclkr,+ j0 B' y0 x5 H$ T+ e
output mcasp_aclkr,4 \6 |/ T) V% t+ ?4 R
output axr1,
, \+ V# V. j; U% Y, E$ u& C, z, m
assign mcasp_afsr = mcasp_afsx;% P: [/ U; ?6 j( p; J9 w2 c
assign mcasp_aclkr = mcasp_aclkx;
6 }  r% {2 ~. |% z+ L* Z# \4 u: vassign mcasp_ahclkr = mcasp_ahclkx;
9 L' T# N5 T( J. @# Z; I6 oassign axr1 = axr0;

, @$ o( N2 h' N
# J' P& `5 R( A( C2 @+ F
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ G. z2 a$ ]2 S% P7 D
static void McASPI2SConfigure(void)
0 M) \  e  ?  D2 m2 h  Q{
3 {8 D0 \0 q/ h: W% m! }+ @. GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 n% l8 X0 L9 P* K+ x# fMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 `% y$ k, k4 v4 G6 W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ ~8 b0 u; L1 W3 F( H: V0 dMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) M* c( r' g, Y$ j* J2 LMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& }7 K% n2 G! v  \! y1 U
MCASP_RX_MODE_DMA);
. C$ Z7 v1 K4 r4 s7 F$ BMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) u. |6 \- T/ |- A7 d  |% x6 W* L
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ k5 ^  n7 H/ c/ I" ?- u* H
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ w: ?) G& g  ], d
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' v+ V- \0 D4 k7 dMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 O/ E6 e7 M% k& \- O' y/ X* q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! T% G  ^7 V) X1 B2 c
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: E  c+ J( ?- G, wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 2 t+ @8 m9 E/ j+ R* \
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 i3 c9 l% i4 k6 }
0x00, 0xFF);
/* configure the clock for transmitter */: X4 I1 {, M6 F8 R
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 l7 a( R% F: b) e& p5 r: qMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ v/ |9 ^2 }$ _% {. Q7 o( H, dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 M2 A) o6 g+ p, Q$ U2 d0x00, 0xFF);% C6 o' [% w6 r) P+ z% B; K5 V+ h

! a& {8 J! L( b% o% b/* Enable synchronization of RX and TX sections */
3 N3 f( t3 J% h2 U: h8 r( bMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  a; T2 j; B2 f, O
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);: J- A+ L& p2 @( {
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ p! Z2 X- |9 R+ ]/ y** Set the serializers, Currently only one serializer is set as  h3 p) n/ V% I0 k) c3 `0 r
** transmitter and one serializer as receiver.
4 w' D7 K- e# Z4 z' H/ y% y% |  s*/
$ Z- J# a/ Z$ O' U; HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 }( o' p7 T. R! `: BMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 m9 U4 c0 S( V** Configure the McASP pins " Y. t# w$ u( T7 j/ `
** Input - Frame Sync, Clock and Serializer Rx7 I* q/ T0 x% c) {
** Output - Serializer Tx is connected to the input of the codec
/ u5 u, t+ M+ Y$ y/ G$ M4 H. X*/) f7 |6 w& e# A" D* w! R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
. z* t; G0 @% f/ _1 tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 C, a2 ?/ k4 D* n: kMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- _5 X$ y1 t  J5 R3 V
| MCASP_PIN_ACLKX
6 o* L8 C+ w8 V| MCASP_PIN_AHCLKX
# s( o. D7 m# x| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% W5 t, f: L2 [* |! M4 Y% yMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 h7 N! r5 U! @9 C* Z2 K* J
| MCASP_TX_CLKFAIL 9 Y: @3 S4 Z/ y0 Q# _2 a  u
| MCASP_TX_SYNCERROR
9 G- m" {/ s+ H9 i| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 k$ ^$ \" Z6 ^8 K. u# g| MCASP_RX_CLKFAIL  w, j5 k8 P9 w5 d/ R$ Y) D4 n
| MCASP_RX_SYNCERROR
0 M& z* D; ]0 X; n2 o| MCASP_RX_OVERRUN);% J; Z8 j" c1 q* X! R  c" Z
}
static void I2SDataTxRxActivate(void)
$ h, H0 y1 O* K( F{
4 Y$ i& I' ?5 U& b5 j$ _/* Start the clocks */
* U+ u# b6 x5 P- }* F& AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ |$ A/ m4 I0 c& h2 f0 t: S1 D% U# j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 m7 W7 M+ P3 ?' ^8 L( _1 rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# h  @" v$ F7 [; A" j3 ?EDMA3_TRIG_MODE_EVENT);* s" V7 T: \  p! U6 R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " q2 v  u  D, j6 ?; I
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" x9 j1 G4 [) i7 a! W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 h( t& Q* l+ v5 W" u! J
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% P2 Y5 z$ @2 u" ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// Y: b6 j# D* ^, t
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 i, k. s% f  Y6 H# q
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; _6 G+ ^1 o2 `- i) y: Z
}
* V! D& v2 ?$ i3 D, X: m) p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 w  C0 \& Q  y! q/ O$ R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 06:04 , Processed in 0.040474 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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