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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10368|回复: 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 A* o( h- C0 B% ]& {6 B
input mcasp_ahclkx,7 b1 T. u" l+ I  }. ~
input mcasp_aclkx,: W  r6 R3 i" F' m: d; \6 l# I' o
input axr0,
. p5 ?2 y8 X. D1 |5 V( u6 L1 O. B5 U# H; W9 p
output mcasp_afsr,$ T; j0 K5 E& L# l& H
output mcasp_ahclkr,3 m' H0 I4 t- u) `6 q& h" V! H
output mcasp_aclkr,3 E7 I, @1 p; d: C' U2 ]5 U# J
output axr1,4 n9 y0 Y8 g0 ^! e! P
assign mcasp_afsr = mcasp_afsx;; U6 p3 C" }/ @
assign mcasp_aclkr = mcasp_aclkx;
# p4 O" B" H, H9 S  G; S. Rassign mcasp_ahclkr = mcasp_ahclkx;# ?" k. c6 G  k  Z" S; u$ [, l
assign axr1 = axr0;

3 U1 S. H9 Z7 E1 C) p4 d2 K" W. v' ^5 ]; C) q& s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 z4 H( t& k# ~) I& y+ i
static void McASPI2SConfigure(void)" z: K2 w- @: j+ U" U
{' ]9 k/ _2 m1 J- n. M
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  c0 ], e* o( J- gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 w4 W9 o- C" n6 g" V! K
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ [5 ?! A% ?7 T* f3 B: I; W$ R9 TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 U$ y% a/ S0 o: a1 ]9 y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: a- S, n% i% A
MCASP_RX_MODE_DMA);
; c/ h  Y# U6 X- p4 i5 s; y- F2 {McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 z& e" f7 s2 g1 x1 b8 O3 GMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// A4 Z5 p. B1 M8 u0 P0 ?
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# H! {9 v2 p  ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 b5 M2 M+ G1 Q6 N- ]# `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 G$ f' y, ]( s* iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, @* N4 ^2 r0 W  J0 r3 n9 o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( X& Q- n. k+ U  KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 T& \0 E; x2 q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ M5 D4 u( L/ [6 Q: C7 J
0x00, 0xFF);
/* configure the clock for transmitter */
% s% L2 {, w1 Z/ Z( PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 {/ Y1 P# h. T6 f- T/ m8 J* ]) \) BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / X4 U+ i5 Q1 G8 M- G+ v* u
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; U8 S( z9 Y* v' ~# t0 ?2 F
0x00, 0xFF);
% J% ?$ z. |, i3 a& C# L* }  g  n: L$ u4 U- H/ q" E# K; ?
/* Enable synchronization of RX and TX sections */ * Z) r3 b; a& ^+ A5 i8 i
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  r' g) C( x- H* x$ L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; b3 l: J! P2 P! A2 h' m$ lMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 }8 a; `$ j, x) T( h  J3 N
** Set the serializers, Currently only one serializer is set as% s- y, T3 d) A  b# D% y: X
** transmitter and one serializer as receiver.' x/ _( \: K# \
*// Y8 z5 D( `* N2 V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 M: r: _6 c! h! T  R% p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  f. u8 F2 w3 S8 U6 R1 B4 ^** Configure the McASP pins
7 D6 {- Y0 L7 S3 I$ H( T** Input - Frame Sync, Clock and Serializer Rx: u* B* ^3 k% I! A1 x
** Output - Serializer Tx is connected to the input of the codec 2 ^7 R* J8 v- [1 q4 C
*// m" ?/ I. T9 H" b3 d
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ Z) \. T" J3 e1 RMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- m7 B+ `) _' J1 _& f) O8 Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( Q( S  Y8 U9 M2 B, b6 A7 M| MCASP_PIN_ACLKX
) P% [6 Y6 \/ X! Q( Z) r, c| MCASP_PIN_AHCLKX0 c6 `3 `: [! G, [2 D. K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, j1 x. i6 k2 v
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 J# P+ n1 b( B/ V| MCASP_TX_CLKFAIL
. K5 D) V* I- ?| MCASP_TX_SYNCERROR
" Y6 j$ Y0 `2 P5 a) G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, r" S. s, q3 z2 f# F| MCASP_RX_CLKFAIL
/ G: U( C1 B  }  Y, W1 [9 n6 q. J; Z8 J| MCASP_RX_SYNCERROR
" z+ \7 Z4 o7 q6 g8 r% W| MCASP_RX_OVERRUN);0 _6 e$ ]- r* n. z
}
static void I2SDataTxRxActivate(void)
8 H( X: e, ~6 {* G3 W$ A) Q{. S' F% M2 B' d) S% I' e- v; ~
/* Start the clocks */- }1 X$ q7 @1 E; I# Q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* b* L1 j' R4 U7 q- Y6 `
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 ]4 z* I# x  ?, o2 O2 ]  l% q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 @3 y! D" T( z. TEDMA3_TRIG_MODE_EVENT);
4 ^# h2 m$ I% y# k1 mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; H$ K" ?3 |- K8 |+ z; i
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 E- t7 s& S4 T7 K0 x8 g1 J1 _
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 o- C+ x; i& q; u  y7 H& T0 ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* w$ w2 a1 o# D. o& J5 ?& Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 x. O5 F4 J) E, VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 y2 k% q# C9 e
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; e3 `5 E+ M& w; \$ V" B
}
& J+ `1 @" `; j0 ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 h3 w8 c$ F( M8 l# c* e* R& Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-4 23:41 , Processed in 0.038763 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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