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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,% |+ J: j' f- P7 K
input mcasp_ahclkx,/ [1 r' y' b1 N3 C  t( {/ e4 q! _
input mcasp_aclkx,$ \( ^  e( M' V) x* m5 `
input axr0,
% |" u& Y; D# w5 e1 Z/ p/ X* |7 j. u# g  x9 l/ [/ Y4 F  V
output mcasp_afsr,4 h, @# A4 I) M# I) b. m& Y+ G8 k
output mcasp_ahclkr,0 A) f, @! a% Y8 N2 v
output mcasp_aclkr,/ h+ q# A) e4 z
output axr1,( F/ T# t& W% Q
assign mcasp_afsr = mcasp_afsx;
3 j2 a6 O9 F$ ], Q% b- q2 @' e( Hassign mcasp_aclkr = mcasp_aclkx;+ x, ]7 I7 r9 N& ]
assign mcasp_ahclkr = mcasp_ahclkx;
- [' R- ^+ z, Y) X) w) Cassign axr1 = axr0;
. J) K% c% F0 ^+ Z* o

- [: j- y1 ?4 K. K: C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. J: \" k4 z* T/ o( W
static void McASPI2SConfigure(void)
  D7 E6 H) Y5 w9 h{
5 @# s; r  Z  v. X+ fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' {1 X/ K& ]1 Z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! ~' r* U/ i0 T3 x$ F# N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ D0 A7 ]" m. V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 _; j- U1 ^( N! `+ ^& ?+ W6 gMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( f8 i6 p5 f4 o: ~MCASP_RX_MODE_DMA);
+ J, M' \5 j# `1 y0 I  i' OMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 {/ n! K9 \/ w  KMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( L! L9 O; k, ]0 B. w0 s+ A
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   B4 h0 ?* A0 H$ J1 W0 J' c
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: h" r& a) Z" D' V0 iMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' _5 J5 }- l4 ]$ FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! T6 d8 w) }  }7 u5 v
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);" E9 J9 G: g  W+ T; k  I
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   h1 z1 n5 C3 D0 Y3 m
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ Q  o, e- s* i0x00, 0xFF);
/* configure the clock for transmitter */
2 e5 V  T  o) m) V1 b0 m0 VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 x+ B! ?3 a4 J! ^/ V
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 [! p# ~- W: R+ D0 |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ p4 N7 J6 S1 `+ d
0x00, 0xFF);
1 |% h- @+ `% G+ d2 \: y
8 t& h1 s8 g! Y$ O; V$ p/* Enable synchronization of RX and TX sections */
3 ^6 a6 f+ s: [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: l, O# m+ X- p# j8 bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ U7 y3 q2 K0 h& X6 [, x, H" xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** f2 b7 x! }" s: \
** Set the serializers, Currently only one serializer is set as% s+ x4 g7 T$ e% a4 u
** transmitter and one serializer as receiver.
+ A5 L$ G5 A: y2 X, u*/! O, _1 j% o7 I9 I) V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 c1 n0 E  j6 @1 ]5 OMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  T2 i: c- J" ]7 f+ S) n* N, t
** Configure the McASP pins # O+ [* W: O7 J4 o1 ]
** Input - Frame Sync, Clock and Serializer Rx
+ C$ w2 B4 ?. I5 W) P** Output - Serializer Tx is connected to the input of the codec
7 j% W; t. x9 K' M  g8 P# b8 Q*/! c9 g1 C3 h# ~$ \) s& J! i" L- t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
  U; D7 `7 o0 v, P. j* gMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ r, m& @- O: w1 k3 g; @! p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  L# c& u" ]  Y0 Y& g5 M. o| MCASP_PIN_ACLKX
$ _  a5 f1 {7 ^" \9 v5 J| MCASP_PIN_AHCLKX5 _: o# v/ s, x" G: S& Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 b9 T4 @( u& f, v" c3 B: ^McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( j& ]$ m, ~/ w) w& y4 N| MCASP_TX_CLKFAIL
$ x! J6 u7 [, @. ]/ |' i| MCASP_TX_SYNCERROR0 s/ _3 ]* r! t2 F9 z! ?& ]
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " z' k, d7 M/ r! m- e  l0 h
| MCASP_RX_CLKFAIL3 T' [( S9 x5 k: l" U. o+ [+ w: D
| MCASP_RX_SYNCERROR
# h6 E- e  S* }; P& [$ o. W$ _4 E8 {| MCASP_RX_OVERRUN);
% |: \0 Y' a6 o0 p4 Y/ [& g}
static void I2SDataTxRxActivate(void)4 N2 z3 Y6 }1 \, ^. m# `/ W
{. f6 m8 T! V. D: ?5 [
/* Start the clocks */# B" H' \1 F! R" w' E! ^$ s& K& {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ M6 e9 s( P" @4 s
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- C4 w) {$ A" Y2 }% DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% w; s; E2 g9 M5 T% bEDMA3_TRIG_MODE_EVENT);. R1 R( D; L$ t( C' Z1 H4 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - N7 f" L3 h2 [* m& }
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 C7 Y$ Y* A/ mMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- s, d: h8 q$ u3 h% ^3 X7 b  }; O
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 r4 G% P5 i! k$ E& Z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  y6 L, L# C( J2 Q* R+ P0 A
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 A! r* z. V; L+ B2 DMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);. g3 b- E5 G0 [. M* ^8 ^/ i
}
; C4 F8 w$ h$ S9 z0 X5 O# c+ j' z; U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 l. I+ I# v4 P0 C" g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 07:33 , Processed in 0.037360 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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