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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9342|回复: 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,# h( [! g) J1 H' ~- V5 G  a' \5 y( e
input mcasp_ahclkx," o. A% p- E8 U0 B0 c
input mcasp_aclkx,9 j( q# ?* a) w; n
input axr0,5 ~* f; Z* P! l8 T% s; X$ _
2 X: d2 k. x+ Z! ]9 |: e
output mcasp_afsr,
6 A" `% W" }$ F" `% {: G# toutput mcasp_ahclkr,2 k6 \& c4 k7 t
output mcasp_aclkr,
0 q7 u: ]4 N0 M' b) zoutput axr1,
  g0 f( J( `3 h0 X/ J! O
assign mcasp_afsr = mcasp_afsx;3 P& ~5 X: a, u- {
assign mcasp_aclkr = mcasp_aclkx;- n; X; o1 ?9 Z2 z2 a, r! V' \
assign mcasp_ahclkr = mcasp_ahclkx;
  f/ _: ?( D( v& @# j3 W: u! y( Vassign axr1 = axr0;
1 M9 A/ X+ [- {; ?+ S% @  c' H0 u

: V4 M1 ?* D7 x: f/ v- P1 i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; @9 V. {& {, i5 U: K
static void McASPI2SConfigure(void)( C' K9 z0 A- j, [
{
5 W% c/ Y8 S& Y9 U9 N# IMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 S4 o/ s* k& \' yMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */; ?# W4 P' H' ~" O( v1 A0 ]
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& {" W/ F) R$ n* r9 LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 z6 m) l% h  a3 `, q8 z+ w
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 Z' f- \+ h! U
MCASP_RX_MODE_DMA);
" w; ^* f2 m9 r$ y# ]# m# ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ |- i: Q1 _, o( Y, x; k2 q9 S6 a
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- ^3 a' K3 X( @
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 C( r1 F( W5 ^6 K7 xMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) u& t9 Q% ^2 o: a7 B2 q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) P( m, M: x" o9 U. w, B' t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, e6 d# ~+ q$ X% p& ]4 Y) v! |
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 a. w" x% `  J, b# s( f- B
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - o8 M" Q9 a# X6 {3 J) R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 r1 K; Q0 Z3 z# [4 O0x00, 0xFF);
/* configure the clock for transmitter */
4 q; r5 N5 \6 r& M/ g! z4 DMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  U5 s! L" e, `& V5 P8 `
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
/ d# [0 `6 m. Y  L* @2 D4 DMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
7 f0 e2 d; l4 b. L0 v0x00, 0xFF);, J3 O) z( O' O& I0 G! f

" ?" n9 S) j% t6 i  j" @2 h/* Enable synchronization of RX and TX sections */
( Y2 X+ v8 P# {5 aMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */0 c( p! v$ f4 m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) h8 }+ S$ d/ ]7 xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 ]- g! i1 m. Z
** Set the serializers, Currently only one serializer is set as- I! |) b( \3 T; F% Y
** transmitter and one serializer as receiver.
0 U2 [. P' l+ d0 u*/
7 T, d6 E1 l, x( M+ X; P" g* BMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( ?& t8 @" T- c1 p! f( B( i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( s' T* _4 D0 r2 q** Configure the McASP pins
. W2 _5 R5 x# a/ I& |** Input - Frame Sync, Clock and Serializer Rx
6 y: F: `- H( I; T# V& A! h4 U** Output - Serializer Tx is connected to the input of the codec
0 [5 m2 R$ _; R% \*// J% N  u6 a, M% K4 t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( j& V. V+ P# n# ^0 y1 O+ v
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 x0 m1 x, [. g& R) m/ V4 sMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- J# W+ M, ~6 g  ]  N) R8 ~9 \# ^| MCASP_PIN_ACLKX
3 i: m9 K6 A0 e: C' w| MCASP_PIN_AHCLKX7 }) j$ C% @1 u& G% u) T3 i/ c5 K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, l& o7 \- m- g- K& B- V
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# v" R2 Z. E; O# o2 f# ]& b- K| MCASP_TX_CLKFAIL ) P  j& s8 W+ w. X
| MCASP_TX_SYNCERROR: L6 F. v% [+ k0 {
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   V% W& J) [% Z2 c: B* v" |4 A
| MCASP_RX_CLKFAIL5 R9 z+ L, |  |; Y4 i) p0 ]
| MCASP_RX_SYNCERROR , D( f- ?2 J, a3 }! \
| MCASP_RX_OVERRUN);* n. [; K, r, I. F) }2 A; F
}
static void I2SDataTxRxActivate(void): [( F8 [; D7 X- N- I7 S0 q
{
1 |7 L0 \$ T5 w/ |* k/* Start the clocks */0 F& H8 M1 J$ t2 d# _
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, `' Z+ |. Z( [' y; E6 e  |/ vMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
, y% Z# L$ c6 v, EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 i7 z6 o; b1 h5 e
EDMA3_TRIG_MODE_EVENT);0 ^" }" _$ Y3 Z: Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- ~# v4 x2 f' M1 w* fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 t/ Q. d* k* B  K4 P6 wMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 a0 n9 B1 g( ?. X! H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 r% v+ K3 Y3 a4 Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: K2 w3 g1 R! [% X) G" t0 V7 m, h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);- x. Y6 H3 T  q4 K, {' F
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- B4 S7 s) g# J, e  D, K
}
( ]; F9 K, J! Q$ d+ {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- ]! o9 o8 L% y4 [3 }# ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-3 12:58 , Processed in 0.037207 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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