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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,2 h4 g4 x2 _6 ?/ ^( ~
input mcasp_ahclkx,
3 T3 o) R  k  W# C, {, J* ninput mcasp_aclkx,
/ K8 z/ |7 N7 H' {input axr0,; Z6 b0 R: a/ z. F7 g, w" a

9 `  ?3 i! O$ e) k4 _output mcasp_afsr,
/ T3 v6 K2 B+ goutput mcasp_ahclkr,5 ~/ {" m  X) n/ |: E3 C7 Q
output mcasp_aclkr,
' e  {. \' `: ioutput axr1,
) W& M% F( K& m  E6 ^& J
assign mcasp_afsr = mcasp_afsx;  W% B2 h  |2 W0 P( W" q
assign mcasp_aclkr = mcasp_aclkx;
6 B: y* Q( B& v2 H+ x2 G$ Q0 d. hassign mcasp_ahclkr = mcasp_ahclkx;
+ ~0 }5 u2 K* J( m- @  m- v3 e+ d3 Vassign axr1 = axr0;

, z& r/ i6 R' \/ ?0 I6 f6 m9 s& I) R: Y) G, @8 E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ @1 i7 S4 A) s, i1 J
static void McASPI2SConfigure(void)
  Q+ n0 u5 N6 c0 C6 z& P/ L4 N{
. ?3 B! E8 @( l% k! Q$ ]) DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);) q0 s2 {8 u- J$ ?
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 }& q* ~9 }/ I/ r- Q5 e1 y  j- {
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: j0 b& i1 X" O) D6 S$ Q2 I( H" E% ]
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// b$ y; A8 F! n1 j
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( ]# h  w& L6 ^: p' J
MCASP_RX_MODE_DMA);
+ U  t5 d8 D" f2 b, O; l2 n0 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ j8 j: K% s; l- h, W3 j
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* r9 V2 l  H: }1 ]% m& G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 |4 X" i# A$ Q/ n, l0 fMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);# x: P% \# L: s2 V5 T
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 b" j# P2 D/ c8 FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! u3 m0 {) |( H( f- C" y- BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 J# H6 O; L# Y) g: L; J# o+ ~
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + n; Y( C; D4 E$ }" y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,3 O6 |7 ~) S" n4 L, r$ v/ E8 E
0x00, 0xFF);
/* configure the clock for transmitter */2 p0 \) a! t- ?7 X/ W6 _
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 N5 m' C3 H# X% t  o: ]+ b$ qMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 O4 K. _" R; M3 U8 x% eMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ z$ q* l0 }) z
0x00, 0xFF);/ f, ?6 ^" w# G! t& |# C. B

$ c: }1 i+ [) S" a' V/* Enable synchronization of RX and TX sections */ / E! G/ g& ^# {; ^' d- o' V1 R) V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* w( O. o0 F1 _; w3 ^& T/ N" }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);: y9 m  F/ w1 E
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
( H$ _" s0 k- e; C* ^** Set the serializers, Currently only one serializer is set as
, |$ r9 c0 s0 ], p: H** transmitter and one serializer as receiver.
' Y1 ?2 x  R. k8 F*/
: W3 v6 ~3 [4 AMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: O5 c7 e4 [" i7 \
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, L* I  c& E& a( C5 d$ y
** Configure the McASP pins
' t3 ?  V5 c' [** Input - Frame Sync, Clock and Serializer Rx* E& o1 N1 j% ?: T& m( h. T( R1 j4 e; s
** Output - Serializer Tx is connected to the input of the codec 6 X5 p0 d/ c' `* q0 I
*/
) G% K) y! c/ w/ t# ^McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( Z" j  A" u# W' m/ \& m: ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 W( h. Y! ^, XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) e, Z0 I$ m! l9 A# C: p
| MCASP_PIN_ACLKX
# ~7 j: c  x8 L" S1 U| MCASP_PIN_AHCLKX
4 J( `" @: i# _+ T/ F8 ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# p* ~% u8 W' u) z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' |6 }8 U0 e3 b3 u! e: [
| MCASP_TX_CLKFAIL ) @+ G+ H5 q+ c6 Z; r4 ^& l+ {5 N
| MCASP_TX_SYNCERROR
* Z5 r" k3 [5 G+ [9 `0 x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( y: c* o# T! S  h2 q1 ?" c
| MCASP_RX_CLKFAIL5 o* F) {  i6 s4 z
| MCASP_RX_SYNCERROR
* _* [' ~# `9 x, ]! C: c5 N- W| MCASP_RX_OVERRUN);4 M" a2 d- t, {4 J9 Q2 l
}
static void I2SDataTxRxActivate(void)9 Q5 n. o5 k2 q
{
" Z( a. k- _! a( ]7 a/* Start the clocks */
+ C! |: b& M0 \1 V. C' `% ~McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ \0 P) ~9 A; T8 e* w
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: q* {% i+ g5 I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 ~% J/ X7 ?9 m' p
EDMA3_TRIG_MODE_EVENT);* f8 j1 O) J5 I2 ]5 f+ r* J
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 n: |+ h- ?1 u2 TEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* }- a. s  q6 \+ M# a) ]McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* [4 F8 b" d( [6 d  |  G  H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 c3 J/ a) E8 s, C
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- _( R, O+ y# [2 I- @) C; xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- E. n: q) ?' E# [$ p5 a* Z9 HMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 y5 j# |' }! k7 S
}
) ^, k5 J7 V5 v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% O! i. J+ L5 C9 d: p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 02:28 , Processed in 0.034796 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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