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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8879|回复: 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,* j( r( ~4 t/ h, I9 t
input mcasp_ahclkx,6 R% m( s" Q: j: Y5 x& F
input mcasp_aclkx,
; [2 M% d0 b' A- Xinput axr0,
$ a* `: n8 S& y
5 O. \0 w; D, p- ?1 Eoutput mcasp_afsr,- }; `% ~, E, m
output mcasp_ahclkr,
2 v9 f3 m8 P  U$ h: V8 g9 soutput mcasp_aclkr,
: H0 A$ \* P1 c* {- Voutput axr1,! z% z* u! p2 t: t& p
assign mcasp_afsr = mcasp_afsx;
$ V' n3 C: {, T$ ?% nassign mcasp_aclkr = mcasp_aclkx;/ s* `) Y# o; m0 e
assign mcasp_ahclkr = mcasp_ahclkx;/ }$ Q- Z' L/ P- ?6 x7 I3 j
assign axr1 = axr0;
1 B) C* R9 Z+ U3 N1 M8 Y$ L7 S

# ]" }6 r; ^. j1 m$ X2 B- G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) H4 w  F1 x7 |7 ~
static void McASPI2SConfigure(void)
0 S5 O! o  E4 e8 R' t" {1 g$ j8 p2 N{
1 k+ e" q$ X3 ]0 v1 C8 ?# fMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. [, ]6 g; o2 n9 MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( k# T+ P8 c' n  i+ S+ K. T! N* F
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; [$ u1 Z3 @( j# z3 QMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 J- \* r6 s4 B+ I. _
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 i( M) O% i. x+ ~
MCASP_RX_MODE_DMA);  i9 l5 n  B) q  m4 b
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ Z3 c! [  D: [2 v( r8 U% J
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ A1 p; j1 m& j/ x  F: ?% t/ i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   [% j9 |! M. P# P
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 T( ~# t1 g% |, o1 ]+ f, C$ ?
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  ~  ^; W% X2 v+ c) ~0 i* GMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& c  w1 F" W' B) s( p0 q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& e! r; D) J1 J6 Q
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' ]6 }: v' D3 L3 W- F
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: M: l' [& P7 [
0x00, 0xFF);
/* configure the clock for transmitter */
5 {; M3 N! T( j  l% G' N4 ^  j8 LMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; H7 \$ h, Q8 c2 T/ j5 `" x, gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 ~2 C; e9 J* Q( J& C  [) JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: t) o: w. ]! t9 n% o
0x00, 0xFF);
( r; }" F/ H; ?( k2 F2 k+ o9 W0 v9 n5 c
% p% \( O5 z3 e6 B/* Enable synchronization of RX and TX sections */ ! ], r3 P' O& H8 z) q8 p! T- I- H
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) D% z& [8 T8 n. ?4 v( S+ m7 Z& @9 F# ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, `/ s' f8 ]7 ^% J! ~1 gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 s9 q4 E8 n2 k' r0 a; V. ?$ C/ t% b
** Set the serializers, Currently only one serializer is set as
& x+ [, f/ y, _" ?1 U7 p; m: W** transmitter and one serializer as receiver.% o1 V4 D7 s& u) ]( Y
*/7 u' ^! y8 L$ e- W* c+ R2 I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  {+ F2 Y9 a4 \  {, ?8 DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 D! F2 c, |/ C7 F4 W7 G+ I' ^** Configure the McASP pins , b, l& E2 E; b( n- N
** Input - Frame Sync, Clock and Serializer Rx
8 E8 c9 c( M1 F+ g8 x/ C7 G& n** Output - Serializer Tx is connected to the input of the codec
. t+ h1 l# w2 i5 j*/
$ Q, p3 o3 D& K, Y' O/ a2 s5 g$ \- sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ U( C/ U/ b  H1 Q, n  q2 F% c6 LMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
- u0 a: I+ [$ w( P% t# pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) u  R- ~/ C# M  P* D
| MCASP_PIN_ACLKX
( ^) c. g  a7 A6 V' Q9 b9 d| MCASP_PIN_AHCLKX
+ x( u; p1 ^# F8 V1 _" ^" T( a: Z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 X- S$ l# Y1 s, s3 m! k+ H0 e. Q: x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ w# g2 R3 ^1 m0 k& O6 A3 k1 q0 R| MCASP_TX_CLKFAIL
0 K1 a4 S3 o- {! c: I. q/ s1 u- A| MCASP_TX_SYNCERROR
: r* [! P0 W/ \' ]( g% h# |2 Y| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 b( a! r+ P* M$ T! C& E& Z7 T$ a| MCASP_RX_CLKFAIL1 R  G% ]( S* @
| MCASP_RX_SYNCERROR
# v5 K9 n2 d8 e. L4 X3 A3 O+ o; U| MCASP_RX_OVERRUN);& a  Q5 h# v+ r9 y# V
}
static void I2SDataTxRxActivate(void)
! v0 c' H/ p, D4 s/ t3 `2 ^{" z) j4 J6 y5 f; S
/* Start the clocks */
4 K5 e" D2 Q# {McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
" Q- K* ?% u7 @McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& p* x* A- {' e! @. u3 r7 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 @. S+ p# |3 DEDMA3_TRIG_MODE_EVENT);  ]5 u5 L3 d& a+ ]' w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' Z6 F  t4 t/ ]3 ~0 F5 lEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, Y! y4 F6 `, }' A5 t8 bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) l/ m% a6 {, Z2 X/ C7 p
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* |+ Z, O. J. F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ X5 D( H& b9 W% u: n8 q2 B
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% D/ |" N6 P  N/ Q8 W, sMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);; R  p! Z* O/ A/ U- e! E
}

$ c5 \& p8 [3 ?* G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 U: F) A/ A; Y* _3 @; h1 r: {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 19:51 , Processed in 0.037962 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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