MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
! b9 p$ j- }7 U, q8 U( l9 linput mcasp_ahclkx,
. f  {% x1 T( R4 L  o! Jinput mcasp_aclkx,
7 ^/ J  b1 M  W" Q$ l' V0 M* Minput axr0,2 [6 U) O' R& c  x3 x

( K8 ^- G8 ?3 D6 v+ ioutput mcasp_afsr,3 F7 p) I* a3 U* V% B
output mcasp_ahclkr,) Q: U' F" e2 o% i0 R
output mcasp_aclkr,
& O7 I% m/ q; f( t* J' d  {$ c) g8 |5 |output axr1,1 l  b- I& n, Q# s2 l( d
assign mcasp_afsr = mcasp_afsx;; n1 m" s9 j8 c2 R. J0 v
assign mcasp_aclkr = mcasp_aclkx;
) Q4 b7 j' y  E0 \assign mcasp_ahclkr = mcasp_ahclkx;
% o6 F3 T, F1 ?assign axr1 = axr0;
, i  g0 Z* F8 u7 {5 z

7 T+ ?" p3 K! K  l) G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 i9 N' Z' @& m0 S0 p
static void McASPI2SConfigure(void)% k  B( v2 B/ s" Z8 W
{7 Y, ]3 U+ p, A& [* E" e6 N
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 X% N1 Z0 C& h/ QMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */8 l0 u) r( w4 k# U
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; V7 u+ J4 l/ h! M& XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) W" y7 ]6 x2 Y& x' B# f- \5 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& U0 ^' K! F: H( qMCASP_RX_MODE_DMA);0 T0 C' Z! e$ s( a$ ?. W) H
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 x) b+ M5 F, F+ f1 [. R, sMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. J4 d0 U0 c8 p/ v, t4 }% S0 E6 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 J4 B& D# j3 I" ?MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ r) n( @" q' K8 r3 U3 q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 K% E% G% j1 s% \- Y: s
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
$ J$ Y) j2 s- Q. uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ _3 M/ ~4 N: F: eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - B8 I8 W; }3 H- R; p
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. v) u9 O* R9 t, @+ k: `4 L0x00, 0xFF);
/* configure the clock for transmitter */
6 |+ A: H/ e% e) z5 J/ ^McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 E  G; C5 r- V5 ]! R
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; D, V7 a7 e7 NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ W2 i; s: L4 u0x00, 0xFF);& c8 h# z( |* Y0 p/ Z0 G
8 [* l6 Y) j9 v- n" h5 f
/* Enable synchronization of RX and TX sections */
/ v1 O) c8 f! O( OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" g! I9 V$ J* h) N* c, M; P9 O
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 m. ]) N" X  U1 A6 _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ [* ], e" `# N3 g% m7 i" l1 H** Set the serializers, Currently only one serializer is set as
* ^1 D/ Y+ r: W- `8 c# a- u** transmitter and one serializer as receiver.
7 M. F  w% Z/ Y*/
4 M2 s5 e8 f) s7 Z+ V: u. LMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 R/ Z  R" u$ T4 z5 {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) f  y6 P$ d. v% w** Configure the McASP pins
8 K0 n6 i$ z6 j3 `3 d! M** Input - Frame Sync, Clock and Serializer Rx* ]# _& @; @8 T4 A; l3 U
** Output - Serializer Tx is connected to the input of the codec $ G3 G4 K3 d0 ?! m- E9 g! F7 _
*/
* v  T! Q% _7 c4 Z8 PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ F( t* U. r# |* Y, F$ C" kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ l- W! `. z: O6 h( [
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: I# B- g5 {6 [. v) _/ @7 X7 g" X+ t| MCASP_PIN_ACLKX
( d0 [1 b+ T, _) ^1 A7 I1 S; W8 N| MCASP_PIN_AHCLKX
" k& \5 Z4 p! v. Q; b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) Z. G* l6 C! A% x: [, aMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 a( w6 d3 ^6 O- ^$ O| MCASP_TX_CLKFAIL 4 v* y  Q; q. |0 O; i0 t; v( w. p
| MCASP_TX_SYNCERROR
) P% z% d8 T; J& `& d| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 k, c, d2 P. ]1 Q| MCASP_RX_CLKFAIL
! o9 m7 M* h% w" u6 B: h| MCASP_RX_SYNCERROR
0 R5 ]% i$ l7 E- @" x& o# n, h| MCASP_RX_OVERRUN);
% ^3 X: f" h9 X& t/ S5 s5 G4 {}
static void I2SDataTxRxActivate(void)
6 x1 C& @9 z: b4 \! m{2 w3 D$ X# `- X3 O+ x3 u
/* Start the clocks */% s7 o1 j" u/ h9 V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 ]# W. \: Q' y) F/ I) B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 S. q, h$ q4 E- a. E  rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) \* d2 W4 G9 b( N$ j, B$ wEDMA3_TRIG_MODE_EVENT);1 V6 b: V3 x. ?7 h' Z) m! `9 \1 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% T; j* w  Z( z4 rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 P9 J7 Z) t, ~/ ^/ p2 eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) O! a4 f/ s0 Z4 @McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ c2 x- _- [) `1 c6 `: \/ C' Ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: f( ]' h* A- P* HMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 A, Z7 i" b1 o% `2 j% P6 rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);! n$ \( {/ s: l' ^% K5 }9 d
}

8 W; h! t9 ^( N; Z! M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) w2 a% w9 ~4 F3 k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-10-11 05:28 , Processed in 0.041192 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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