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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9289|回复: 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 a# k4 j0 n: S$ C  r- r- Y3 Finput mcasp_ahclkx,
! b/ j/ H$ Y9 b' |% S0 Ainput mcasp_aclkx,4 V1 ~' F' O( i0 k# s+ F- @9 K
input axr0,
; R- ^$ u$ a* d5 G0 ?9 u- E1 K
  {6 B; Q. A# Z' Uoutput mcasp_afsr,
, K! k* u7 _  o, ]: n: eoutput mcasp_ahclkr,7 R; K0 `- S: u7 o+ D4 {6 G. D
output mcasp_aclkr,, T% V" x9 }3 c3 J6 S( r% r6 h' J
output axr1,  }# O$ m8 w% ~! i5 A0 B/ B) z6 r7 R
assign mcasp_afsr = mcasp_afsx;9 O- |% q2 T& V1 A& [2 l
assign mcasp_aclkr = mcasp_aclkx;3 d) `0 C% C: ^0 i, ]
assign mcasp_ahclkr = mcasp_ahclkx;
! I  G- `9 e. W, s/ l2 H$ k  Bassign axr1 = axr0;

9 a' o( B) L3 h8 |1 \
5 _/ ^2 j6 y3 i7 ]" A/ F& N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) P$ k8 Q# I2 s# S0 {
static void McASPI2SConfigure(void)
3 g" o0 \& m+ {4 Y) Q{3 ^& w0 j5 R9 O0 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
9 b9 u: P1 G2 p$ J9 ZMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 h# G/ H: Q" v- N" oMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 i- c1 U6 F9 ?% ?7 UMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 K8 t! ^% x( P  H5 V: A
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ t! ~9 S6 _, U) K
MCASP_RX_MODE_DMA);8 u# F& {+ _; Q7 ^: N4 J3 K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 D" g0 N7 Z! e! \/ K9 rMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
9 a0 f$ [& x1 i( _/ @4 s" {McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 x, u: ?7 I; F* S' g* tMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ M' y6 l3 L4 i+ \0 H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ U$ V2 L) I! z4 iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ I2 Y& V0 ^) P2 a: ]7 x& ]
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
% J# |0 c1 P- Q  BMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  @, `3 M1 }! s& F0 m1 M( IMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) b- b4 z* L; z. }* q6 I7 n6 z/ u0x00, 0xFF);
/* configure the clock for transmitter */
: w$ \6 N+ _1 C' `4 xMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ o9 p0 g& f8 i/ Y) G* R: jMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 D1 D. A7 ?$ fMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  x) O/ k3 C, \, Q  h8 Q) B7 M
0x00, 0xFF);
; o$ }- J1 J; x$ T7 m
4 t" `! W% w4 O( |$ G( n) b/ M/* Enable synchronization of RX and TX sections */ & s' ?4 k% A1 I# `/ ?9 |4 i2 g1 u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" h+ J( w6 }8 ~' \/ p6 Y, f0 bMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 d  a) C$ U; p' ^  v- f3 R) d
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 U7 v4 g+ T) x7 M0 u
** Set the serializers, Currently only one serializer is set as
# d! G6 e" j& z** transmitter and one serializer as receiver.
, M7 ^5 p" s: |2 X% I0 N5 n*/
& ^( x* [& i4 Q5 [McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& M  U7 F' c8 d! bMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! W, _2 A! q+ M1 j& {- }5 w** Configure the McASP pins
8 U1 H  k* V8 m/ E& a0 }8 ]1 c** Input - Frame Sync, Clock and Serializer Rx
) {/ p' g/ Z9 k4 _** Output - Serializer Tx is connected to the input of the codec
2 @5 Y0 Z# Z' k( s1 _* U2 r; \*/8 n, t7 f& ~  J' U
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( m9 m+ E7 |+ @9 |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' }9 S9 I' L' _5 T1 W$ d* N
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 k9 l- {+ B1 e2 k
| MCASP_PIN_ACLKX
1 N' z4 t* ^: T, p# _0 v( c| MCASP_PIN_AHCLKX
' Q4 e  b- g5 a+ B% L| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 t$ o$ U* Q8 D5 Q4 BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ p& L+ ^  a7 O- V# I) T! f, K| MCASP_TX_CLKFAIL   U* F' t' U# `
| MCASP_TX_SYNCERROR2 R  {# c) B) K  G- t4 e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
4 N3 g% w9 x0 r# ^1 ]4 x| MCASP_RX_CLKFAIL# ]  D3 L& t' W# ^0 p7 V  H
| MCASP_RX_SYNCERROR 6 q5 m# X7 X% l4 {8 l4 @8 G' I
| MCASP_RX_OVERRUN);$ g- H3 p- R% n5 p( F
}
static void I2SDataTxRxActivate(void)
" @1 l2 h3 L9 U! Q2 U{3 f( p$ P/ s" y! z) x
/* Start the clocks */+ v* ~- n1 x6 a3 ^% A+ d0 w  \
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 |; ?; A$ e% Q/ T
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
: F" Q$ P+ ~- ?; f' }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 T$ z, Y7 }& y2 z( w
EDMA3_TRIG_MODE_EVENT);, k! r/ Q+ z' z/ p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 X6 f2 w) O! E+ W
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  ]# s! h/ d& o) x& \4 v( Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 x+ I+ b& s2 G0 T/ w  C" {3 @( ?
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 B4 s) Q7 V1 \/ nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 G% u9 a! f0 D! F1 b
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& Z/ i3 W3 r" n/ y. \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ ^. U* i2 |$ H3 l) r/ \3 k
}
* e/ x, k/ x3 }' f  y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 N( t. J' W. I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 05:08 , Processed in 0.041011 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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