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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
) o1 E! G. m. Z# O8 D0 S$ winput mcasp_ahclkx,
$ y% e- T/ R# o/ l, U6 [* jinput mcasp_aclkx,( G# x$ ]. f+ o, c
input axr0,
/ l) ]6 @: g! Z2 B+ w0 @# S7 R+ I4 w' c5 y) K7 c* R7 U
output mcasp_afsr,4 h  k0 \+ m; M! B2 F! O
output mcasp_ahclkr,1 A, m- I1 T! x: ^
output mcasp_aclkr,4 H9 F1 [: b  a& v1 A! i
output axr1,
% n) A& @( v8 H
assign mcasp_afsr = mcasp_afsx;
5 x  t( u3 e& ^1 g8 [assign mcasp_aclkr = mcasp_aclkx;  r8 M7 k: g. x- L
assign mcasp_ahclkr = mcasp_ahclkx;9 G4 p  z1 b/ G
assign axr1 = axr0;

3 J, R7 i1 N( w& U% I# w0 h
# _4 C: d( D- O8 G/ y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 |' w9 B& N$ a$ A' Y8 x. O2 b: b" c
static void McASPI2SConfigure(void)
: R9 u7 U- j7 V{
9 U, G, n5 f5 z* q& t; ?McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 [  t1 ]0 m/ t! c' R. p
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. N* L. r0 ^: V5 l# [
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' R6 S" `! e6 N1 pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. U' ~# w& a# N0 Z: T1 k- y8 P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  ^! E  G0 c8 G6 y$ PMCASP_RX_MODE_DMA);  a  F, \7 {$ o$ P
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% S5 d$ x7 r( l+ J* i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */4 z! r4 j! A( @+ k# w' Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 m& D( |( m" n5 v  e. Y5 dMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) x+ v5 j/ c8 V* w1 z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + X/ ~* ?4 s7 G" z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# \4 e1 \2 F4 A! i+ s9 L
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( T' v, R- v! Y# EMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 \7 a% z( s! m5 S: h& V3 ~McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
4 e. Z9 z2 E5 n! B# m" ]: d0x00, 0xFF);
/* configure the clock for transmitter */
0 h& u7 ?+ ]2 Y0 b) @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' z, b+ e0 H* m" k, w
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " k7 f9 S- A! }: G# j% m' e
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 B4 v& B, W0 Q" o) |! B6 g% z8 Q0x00, 0xFF);% s' P/ e: {! E, J5 q7 C/ r

* w8 r9 ~0 }2 l+ F5 y. i% U! C/* Enable synchronization of RX and TX sections */
4 ~' N* w9 L; j$ o. j; p4 [4 o8 ~McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) U9 G- A& {: }2 K
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- t+ b8 r+ n9 |3 {3 J: Z) m) j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) p6 B+ N/ O% c' f
** Set the serializers, Currently only one serializer is set as
, z, \0 W' }9 L. {5 B** transmitter and one serializer as receiver.
: \: z0 I0 g, _8 R' a6 s6 E+ G*/) @0 C" I% \2 j0 l, ^
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# ]) o  _# G% v: A  j
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ c! w/ w0 c9 z( s6 t( H** Configure the McASP pins
/ p. z) d- w' v8 v% n8 F0 t$ W** Input - Frame Sync, Clock and Serializer Rx
) R( {+ T! O) ~) o+ r& J% n( O. b** Output - Serializer Tx is connected to the input of the codec
# [/ H3 n+ t) I. v- n*/
% s' g- M) u5 x( C/ _6 z9 FMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* q1 T4 u1 f6 s! a% S0 j+ v4 \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. J, M/ t2 s4 Z' O" o, ^0 T
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. }1 }8 Z( e8 O! t* W2 P
| MCASP_PIN_ACLKX5 P6 b4 h# Z* i9 L" t& ]9 N
| MCASP_PIN_AHCLKX
( V$ w  A6 W! D1 e) E! @. D# b  D| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# B- y* ~2 y; _# X) x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ b: @) ^# U( I. B1 [: O| MCASP_TX_CLKFAIL 4 |) w! ?: c' j2 N# ?% ]: l3 E
| MCASP_TX_SYNCERROR6 U$ r7 t8 S  h' U+ E
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ h# E+ n9 }% X% H1 M" P% j| MCASP_RX_CLKFAIL
% k. j8 `6 _9 b; H, }% Q; W$ a| MCASP_RX_SYNCERROR
2 h2 |  Y1 X' b% ]$ Z# `6 I| MCASP_RX_OVERRUN);
/ @. P+ k+ f# W* K+ X& ^9 K}
static void I2SDataTxRxActivate(void)9 W5 G5 [# ~/ ?. P% n
{% m. [. C' g0 L. f2 v
/* Start the clocks */
+ E9 q8 ~4 G) o" dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 n- }: f3 N% K9 Q2 L% S
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 _! H+ M  v1 d* k0 O& u  i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# p) W* S* Z" S
EDMA3_TRIG_MODE_EVENT);( j+ m# \. B& v  d1 d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) U# F& F3 I1 u. oEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" V) d: p8 e1 I% _6 r7 @
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ e1 x! E3 C; b' [4 e5 j5 l1 K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( x, a9 x. A4 ?7 ?! k8 B7 M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( R/ v* |/ J' h/ z6 i
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 k9 D5 q4 D# z$ a6 A+ lMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ }# R1 ?7 i3 \; n. \}
" O+ G: Q0 {; x& j- S0 ~7 h/ {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% n1 A, x( ]  X4 Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 14:32 , Processed in 0.037743 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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