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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8740|回复: 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,
8 C" {# q+ F, r" oinput mcasp_ahclkx,! q% }* d: r. N+ S  D) Y
input mcasp_aclkx,8 a( s4 g  u; B- [+ r. r
input axr0,, s* U' h/ z' q

& p  V! c$ o/ @7 n( W4 joutput mcasp_afsr," J+ \2 i. ?2 J4 ?" x1 p0 \
output mcasp_ahclkr,, o3 X& h) i% i) W3 B3 n- P1 g
output mcasp_aclkr,
. A7 D) c& x( f, D5 aoutput axr1,
) p6 Z( I$ G) C" u2 ~0 E- Q
assign mcasp_afsr = mcasp_afsx;
" h# Y! @7 J$ v& C4 L  `! ~' V' Wassign mcasp_aclkr = mcasp_aclkx;& h6 w9 ?( u' |$ k% a+ Y/ E
assign mcasp_ahclkr = mcasp_ahclkx;: b7 ^+ p& b4 |$ Q+ E' s
assign axr1 = axr0;
4 c, `! W# f6 \8 M7 F

2 }! ~! n0 v; f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: V9 b& f6 u& e; X5 s
static void McASPI2SConfigure(void)
/ j; T' ~% K2 M2 B7 ^# l2 O3 E{
+ t" U+ h$ c9 L2 S& t5 fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 U( K: H3 Y0 Y6 c$ G! aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) T9 k% F: U4 x) j  VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" O7 ]: M7 N( L2 S/ I( r$ N- LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* k& \# W$ @# d2 a
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 P9 V! \# _; Y* H4 k6 |9 [2 }( h+ b
MCASP_RX_MODE_DMA);4 E: E8 }# F4 V. C3 y2 K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* ~  }: ?: v( q$ @
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* ]0 c& B9 e. y% u( _+ v2 ZMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : i& |6 ~+ h0 h& p+ s
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 ?1 J: y4 z2 `McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " n( Y; P5 l) j! P
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 L- S, M- M4 A2 \& l) m' P$ y  `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; ?: {" D$ D8 N6 K( b; |) [
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # f9 b2 R) n# K2 k4 x$ E
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 F, H! u& n) s8 v2 R$ n: b; v
0x00, 0xFF);
/* configure the clock for transmitter */
/ O4 F8 G( E- _/ p0 `3 t9 eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);9 n$ i# f; `- U6 A
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + U9 v0 U% ?" u& V  F4 O  G3 o3 o
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 }- B! E& f; E( D0x00, 0xFF);
' u% }! \* O* `, Z# {7 I  y+ A/ H# B" s+ I0 O; J
/* Enable synchronization of RX and TX sections */
; I1 f5 |# ^# i0 w* PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. _! `' d1 d& z7 h1 c, `* sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 X; ~& R1 f, pMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( |  C8 y' V% ^: j: H- J
** Set the serializers, Currently only one serializer is set as! b% k1 n0 V- l4 `. A# c4 @: ?
** transmitter and one serializer as receiver.
3 ?  O9 Q- ~+ U; s8 e*/4 ~4 Q$ K1 o. F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& L* u$ r  N7 E! H' d% A* ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 T, t; B6 L( q8 {3 {9 k** Configure the McASP pins 4 X, Q* S$ Q: o3 p
** Input - Frame Sync, Clock and Serializer Rx  L5 F$ W' r7 `7 G" ^$ V
** Output - Serializer Tx is connected to the input of the codec 9 U+ I: q" w' J9 `, x
*/
0 _1 i6 e. [/ `5 r, lMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 W6 ?0 j. [. ]# ]/ d$ mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ n# P# d( @( p  g2 ?
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, P: p. L3 }. q4 J5 O
| MCASP_PIN_ACLKX% W; {* ]% _. P* m# @- a; R
| MCASP_PIN_AHCLKX
9 M0 N  a  y3 d/ y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# t6 ~$ w2 N. B
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 p( U0 V/ z: v8 p| MCASP_TX_CLKFAIL ; e# L; @( g; B3 l  i* I' o
| MCASP_TX_SYNCERROR
# n  q$ v0 M) y1 m| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 N8 U# y! W  @3 S| MCASP_RX_CLKFAIL# o9 M7 ?" c# l4 f6 F& G, ^9 Y
| MCASP_RX_SYNCERROR
# Y: N" v. d; d2 S, y4 W| MCASP_RX_OVERRUN);
4 `) {" V9 K+ w( v6 H7 g, c6 [: g}
static void I2SDataTxRxActivate(void)6 V# f0 q4 z% G" {6 \6 K
{% {) x: y+ V5 I2 a9 h
/* Start the clocks */; y" Y, K, ^( A2 l7 }% a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) H- o% N* Z7 G7 I
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' Q- i" Q8 a# O- M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
5 v, Z# @8 K5 x- AEDMA3_TRIG_MODE_EVENT);
9 Y9 ]" ]2 [, |# cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 ?: D: R3 ^; U5 Q+ h% Y$ ?: m: ^+ |EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( |5 W6 Y) w7 h& Z  \3 o3 C2 \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: M2 K! |% [5 I: e, ^6 v
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# f  Y' n0 q, ?8 I, d0 l9 f1 Nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" r8 N$ o+ X# \1 d3 F/ U7 l8 D+ B" u
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
8 H: A6 W3 ?$ u' D7 V9 w2 vMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, V; E( T5 m' q' N5 O& ^}
3 w  ]; p) \: ~& F9 ?! \% H  `1 ?' P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# M8 T# I$ B: O' f. D$ f! b( \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 19:53 , Processed in 0.036623 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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