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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9011|回复: 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,
1 ^1 y$ c+ Y$ G/ ]+ R2 p4 x+ |input mcasp_ahclkx,
2 c+ l- D' N9 |! ginput mcasp_aclkx,# T9 [5 t8 ^; D7 i
input axr0,
( f6 t  i7 m0 I/ y/ h3 `! t( I
/ t* |! G7 A9 T! g/ Coutput mcasp_afsr,+ W! I/ e0 ~7 y& ~; e
output mcasp_ahclkr,
) Q- I( R3 }; D0 r8 }! C% Xoutput mcasp_aclkr,
% c/ }- ^; b; U5 Eoutput axr1,
# T/ W. ~% u* v, V- p3 v0 W
assign mcasp_afsr = mcasp_afsx;
" G1 k4 [. ]' p, @! w" G, C6 t; Kassign mcasp_aclkr = mcasp_aclkx;7 B' C' ]6 K7 ^8 {1 r1 `5 R- n
assign mcasp_ahclkr = mcasp_ahclkx;
1 U6 @. a6 [' J; Sassign axr1 = axr0;
, h1 y5 R3 e2 t5 H

: w# R( F" `. t5 ^0 _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) ^9 u" d4 R8 m% d* X
static void McASPI2SConfigure(void)
5 r3 ^% x% I5 X" D" e{
: C2 x" I# {' k7 uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
% U% q/ D1 m- b: }+ f7 WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 s& _4 X: H) t0 Q
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);! R4 [# ~/ D# K2 |; K# Y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- e, q% T: j8 t4 ^; k. Q" E! DMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 g8 F5 g4 h  L1 c2 g- H6 AMCASP_RX_MODE_DMA);
, i+ {4 W# b1 k9 GMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& Y% N; x8 {4 G* Y/ K- v; @
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ S( J& Y8 b, x3 nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* c0 i, q2 U8 R, V. R2 ~7 ?MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 G! s8 S9 p& Q. _: f: qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, - y4 G: T: u: D' o! p& B, e7 e
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: ~# _, @# X4 |* `' I5 }McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. a) s% v+ V# c+ }4 K8 E9 P$ |+ r
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! T& h4 c$ B6 i0 iMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 ]) z# G% s/ F5 f
0x00, 0xFF);
/* configure the clock for transmitter */. u' s" e) ]7 ?: _* s$ Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  A, C9 R* O. s: Y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - E) q& H5 o2 p; }* F
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 D6 \  R8 n6 D  ~. U& ]+ `0x00, 0xFF);
" n/ w* c7 J4 X( L3 w) s% Z' c7 \7 ]& U( b& j' C2 K; H3 a
/* Enable synchronization of RX and TX sections */
1 w9 d: G0 p; z, P( K& cMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' E+ B' ?5 u+ @) g+ BMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 R1 Q' m3 v- n4 q8 a
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' q8 ~) l) C( l** Set the serializers, Currently only one serializer is set as& p0 p3 H# L! n7 }
** transmitter and one serializer as receiver.
7 K9 q2 x$ k& ^+ y" q0 s4 e3 [*/
5 l; v' x5 L3 x6 d. z$ hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 c4 c) ]) F- K' D% ]) KMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 K: T$ G) s$ Z** Configure the McASP pins 4 V, v1 W$ k+ ^: n( s* N
** Input - Frame Sync, Clock and Serializer Rx& N( Y' ?% I* p9 S% b5 ~% X0 ^+ Z
** Output - Serializer Tx is connected to the input of the codec ( d' I7 v3 C$ }. \; \0 [
*/
" Z; H5 E( v: t7 a! q$ L6 p, Z+ x# XMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' l1 x/ C  q( m6 ]8 F" S( F
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 J; E5 @& w& j, {% M7 O& u7 H
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( A& i  k8 T! x7 w" W  J: y1 _* x| MCASP_PIN_ACLKX
9 T# _( z- W8 s4 x7 e! ?| MCASP_PIN_AHCLKX
- C8 Y. S1 _2 t5 z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- ^( z7 _4 g( |: I. {6 w( \! {' pMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - s; w# p2 ?9 j' P/ y' w
| MCASP_TX_CLKFAIL 7 W+ K; d+ @" |6 o
| MCASP_TX_SYNCERROR
! X1 ~" k. M) l$ D' S| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " L) y! o( r8 O
| MCASP_RX_CLKFAIL
7 H) k0 a) H6 w$ U, }| MCASP_RX_SYNCERROR   G% `6 P2 B# g/ [2 m
| MCASP_RX_OVERRUN);
& h9 h4 n" c& \, ~4 x}
static void I2SDataTxRxActivate(void)! d5 w, k! W: S
{2 a6 \1 b) ?, w+ i
/* Start the clocks */
- T" A( m" Y; B" v; i4 DMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* S& ^" v' {& A. S3 }/ g2 |& uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* c# X- E+ u) m( x6 G( C. c5 F5 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" P! O( e& F$ L* S  lEDMA3_TRIG_MODE_EVENT);: Q/ t; I) y! K3 x/ b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ }) w6 l. [. v4 m$ ?0 q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ a' Z) `$ a) GMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  Y8 L: S# \$ t! ^; i) s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 Y: c9 I# G0 H. Q3 T+ m
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; }7 O# `/ }/ ~$ G5 G
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 h3 V$ [4 `/ V- P1 ~) SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);% V) Q' @6 X; d8 d" M
}

0 C% U$ k' _; w1 e; F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ O( j8 L. C% i7 J# _: {9 S4 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-13 21:38 , Processed in 0.037789 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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