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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
) N& v: O* R" X* Y( F9 r2 @8 Sinput mcasp_ahclkx,: O+ l* z% s. t% \# @1 y
input mcasp_aclkx,/ y" f5 R- x% j7 y/ Q2 P8 ]
input axr0,* n; _7 j( ?( @* f

& o# l8 ^. W. Moutput mcasp_afsr,
  m# f& b8 i6 b7 aoutput mcasp_ahclkr,
% U$ j+ J) s2 E/ H% I0 }6 Aoutput mcasp_aclkr,
& O, ]  H: J4 k: eoutput axr1,
1 S4 R& I6 d* [( p
assign mcasp_afsr = mcasp_afsx;
9 g1 R. W4 G% a$ j% Hassign mcasp_aclkr = mcasp_aclkx;
  E# H/ L" x, ^5 e& T# ?- qassign mcasp_ahclkr = mcasp_ahclkx;. `* w1 Q8 R  t/ J
assign axr1 = axr0;
- B3 v. X0 d) }- T

, Y) ]# R1 P1 B8 m3 a6 l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. [# a4 u- z$ o( Z) ?& Y. k
static void McASPI2SConfigure(void)
. e$ w# ~8 P$ `- ]( ?( l{
+ \2 D% A0 x9 s/ E, cMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; x; S" r/ w, Z/ P( q5 pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 e& H) l: {0 W: {  t0 jMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% u+ {1 r! x& m* \" EMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 G: p7 x' {. r2 IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* W% n' R: d1 t: R% l+ B
MCASP_RX_MODE_DMA);
/ _; s! O* t* _# W0 N; Q. [McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& f% E; E' P- Y& H! V, _3 ]MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 u7 v0 q) Z" E; \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, . n: j! }' ]& H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" Y# `: ]4 i; ~# @1 A
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' r1 h8 i) E, [% }MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) W, d! y  Q; b2 u6 f. h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* Y6 }4 R4 X9 C) H8 o; K
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 4 r: |' z8 P2 [# I$ {" l
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 g0 w( ^' x3 C3 A, |0x00, 0xFF);
/* configure the clock for transmitter */
2 |0 S9 u* g6 y+ e. w4 F- v" o% fMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 n" `  Z; x2 b: v( g3 a" L9 Z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 A' F+ J6 r7 v: H2 p0 Y7 T) j: }McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
  A$ A0 F- r' d0x00, 0xFF);2 w6 a( \% x  e; [/ Y' i- B. p

/ M1 v! U. w1 K/* Enable synchronization of RX and TX sections */
6 G' ]! a% A3 `$ k" hMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 n* a" v1 _; t# Z$ a. FMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' H9 V+ M6 Y! s+ w2 ^
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*, x  |" t) D7 S6 [) f2 T( ]
** Set the serializers, Currently only one serializer is set as4 R1 q7 ~; V  o2 l3 a' J
** transmitter and one serializer as receiver.
6 x# S, `) _/ [*/
2 S% e6 M  E8 w! T8 }* G; A& P, C. EMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. q- u7 l* Q6 h6 g, Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 ^2 X, k) H1 T7 |" @** Configure the McASP pins 4 V3 }) ^  X* L$ g: W$ B
** Input - Frame Sync, Clock and Serializer Rx# Y8 x! I  f# J
** Output - Serializer Tx is connected to the input of the codec
( ]3 W2 P: |5 L5 |6 K( i9 b: m& A*/
" W# |, o: w1 G  y. _  G& wMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
7 d5 u' ]3 z7 S9 aMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));1 Z9 m% E; z! `- b9 C! [5 w
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ e% M% x( H: F, O. k, i# l- b1 g
| MCASP_PIN_ACLKX: v5 ]! k2 s# G3 x: R( M, I
| MCASP_PIN_AHCLKX, u4 e& ^3 e9 Z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */5 Q5 Z# k3 l# Y; S! v
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! A/ d7 X/ r1 U' k# k
| MCASP_TX_CLKFAIL * w- c+ e+ `, ~- |5 K0 D
| MCASP_TX_SYNCERROR
5 I3 v, ~$ @6 T. J* W/ }9 B4 D- s| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & @: y2 N5 n: S
| MCASP_RX_CLKFAIL+ W- R9 q! }8 `" k9 o* E
| MCASP_RX_SYNCERROR
& k# k3 I' Z6 z3 K' t% L| MCASP_RX_OVERRUN);
: [9 c  R8 W, m2 E9 f% L5 a1 }}
static void I2SDataTxRxActivate(void)) b9 @2 L, c. M" X& ~: j2 g
{
: Z2 V2 X9 y# ?6 i2 S1 \/* Start the clocks */
' P3 z1 X; t6 k5 C" sMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 N0 |; [/ Y' f  H
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 {! }/ W! c# R4 J) K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# J4 {1 o9 _4 w% c! FEDMA3_TRIG_MODE_EVENT);
' V3 H5 x+ o0 v) q! BEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , a5 O) @0 v7 Q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 X' H; g  V: e- z* g# CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 [, i5 X. f; l% O$ R+ y& gMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 a& W  p4 C/ d/ B3 n
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! c# z+ ~) L7 P. p( T5 P4 J8 hMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);  d) V; r$ _2 f! F6 d. q9 e8 y. s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 ~6 ]* ^, o" V$ l% R, [! _9 |* G
}

" l) m5 v6 S; n  @1 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 z' _1 T5 ?3 n( _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 03:45 , Processed in 0.039444 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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