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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,8 b  K; ?) `7 d& e; [0 w$ m
input mcasp_ahclkx,
2 b' B# Z) F3 Cinput mcasp_aclkx,+ Q+ ]" `: a% M$ r
input axr0,
) z. G+ Q: j4 j- e( h, f- ]' j6 \" o, G0 o
output mcasp_afsr,/ k! F/ f# T- Y  e' Y
output mcasp_ahclkr,9 N. u6 t$ u  @* P
output mcasp_aclkr,
& c, J8 l# a9 _$ {* Z! I: |) @" aoutput axr1,  v3 {- V4 E$ N$ _$ H1 d, J8 z7 V
assign mcasp_afsr = mcasp_afsx;
4 g2 U5 t, a" e6 _8 jassign mcasp_aclkr = mcasp_aclkx;3 @, M- `) K3 [- Y" V( s
assign mcasp_ahclkr = mcasp_ahclkx;
  v5 s; v% s9 @# W2 |0 U9 sassign axr1 = axr0;
# `; O( o, o2 t' R* @% w/ A

. U+ f" ]0 v' Z. g& x2 v1 a# v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 L* Z* m: q  d8 R  i* V
static void McASPI2SConfigure(void)6 K( J9 K) u: P; R/ k6 y: l
{3 f" ]" X5 z) L) T0 |
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% W0 w' q& m6 z+ }McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 H& B6 Z0 C+ A# J, M# v) |$ AMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& s! ^! l& |1 o* p& oMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 [. S: q. e# o) }* h& bMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; x/ S# H) k' d0 X3 D; c) Z5 R! e7 t1 r$ RMCASP_RX_MODE_DMA);
% U8 |0 H1 {0 r' \; b4 ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: T3 X8 m! e: b; k/ f: B  }MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 d4 f2 }; F9 C) i( S$ m+ mMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ j$ c$ F/ y7 U' `# ~( N& }. GMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& |# D/ f* {3 E/ `- \2 WMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 O6 C8 h3 c' yMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */2 I; T% E9 B3 h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! c+ N7 w0 `% ^. b0 ~
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ! L* B/ x7 X4 I, v- K
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* T4 W" Q8 c$ J0x00, 0xFF);
/* configure the clock for transmitter */$ B! R6 a4 n  E3 \0 S9 T1 @
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);# K/ V2 d- ?" q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 2 Z& T8 b/ D; @2 M4 U, C- ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ ~$ \, V3 l+ _' l) ~5 S" j' P0x00, 0xFF);9 S4 Z* }$ D; y* q- @. p
( |" z0 ]# U! F) W4 b$ I2 X5 @5 D
/* Enable synchronization of RX and TX sections */
8 a* V: |2 B# Y, e. X% g5 l) Y" uMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ O2 E, |! u* Y3 _8 U
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# X' Y  P2 R  q6 M! T4 P. @, j/ }McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; h( e( A0 q0 o** Set the serializers, Currently only one serializer is set as
% ?0 h7 I, ~0 \& {. g8 k5 w( g9 s0 o% k** transmitter and one serializer as receiver.; \0 ]& P2 c6 G7 t% P; z8 l
*/( M$ Q/ T9 A9 f  g& c" a  Y! A+ d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 v5 u: n6 f2 k1 O2 L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*% P1 s& T/ s& D7 ^* s* O
** Configure the McASP pins
9 c1 K* n2 m5 ?& J1 X5 c** Input - Frame Sync, Clock and Serializer Rx
% @$ w& O1 C+ l$ H7 K** Output - Serializer Tx is connected to the input of the codec
6 A- ]9 C/ a! Z7 u; D! H- Y: r1 m*/% s/ U) ?& X2 W* W* g
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 N4 O% Z$ q* j9 R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, P3 U3 X$ p/ V6 E6 Y1 W& }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: I' N# A1 b% a
| MCASP_PIN_ACLKX( C# h! Z( `, ^. y
| MCASP_PIN_AHCLKX3 O" s8 g/ G/ v0 }9 L7 k8 B- q
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, T% K( C& P7 l  V' s7 u$ oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 e: o% W9 M; D& l0 E( O
| MCASP_TX_CLKFAIL 4 `, A$ A5 g" a" X
| MCASP_TX_SYNCERROR
) C3 u+ p* }  S7 `7 _! M| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . }* J7 b# q! g$ Y1 s
| MCASP_RX_CLKFAIL( q: E& }4 j& ?% Y* Z) |
| MCASP_RX_SYNCERROR ( w7 L. r" z% @
| MCASP_RX_OVERRUN);
1 @% I: {7 V4 a6 b6 n$ s2 q}
static void I2SDataTxRxActivate(void)
2 t; g0 m5 L8 K. J! G4 U{
9 W1 }/ I( e( ?8 I' q/* Start the clocks */4 H7 V( N5 l0 J. z$ Y& \
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 P4 y5 T1 e8 }, XMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */! Y1 N/ V9 b4 P9 F( d9 ~/ y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) C7 v) T) K0 a3 T( qEDMA3_TRIG_MODE_EVENT);
. }  F: x4 _1 e/ k! }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 z! u: a- P! o. u0 X5 R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) R( z; S5 T4 {( W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  ^3 x7 y( z" AMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 I' f* k& M4 m! Pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( z. Z/ W7 O6 rMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 P( y* p8 H; P( x9 JMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);# e/ [, G0 C9 I" p0 D+ J
}

: Q$ s6 I1 _( d0 B8 E& j4 l5 q$ V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 m/ h! e, j/ ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 06:45 , Processed in 0.039659 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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