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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, t, b' l% e2 P
input mcasp_ahclkx,' b8 w4 s7 g% _0 J% N6 T
input mcasp_aclkx,
* K2 V0 v3 H2 W8 b8 W0 d$ ~/ T/ }* _input axr0,
/ h" K' M, }$ p$ }" C# m2 p2 o) _1 Z- p  n! }. v
output mcasp_afsr,  x2 o/ Z  ?7 @7 n5 f2 {
output mcasp_ahclkr,: L% d) u: ?5 v9 T9 _, k+ o
output mcasp_aclkr,
! H7 R- K; {/ f& Q3 }output axr1,  U: {2 t+ ?/ o) B/ ]8 v+ B
assign mcasp_afsr = mcasp_afsx;
/ \, L& s5 w! `* r  A5 L$ kassign mcasp_aclkr = mcasp_aclkx;
/ K! p* A6 z0 D' O  y8 ]2 g; Oassign mcasp_ahclkr = mcasp_ahclkx;
0 N1 h0 S$ S; T, b/ Passign axr1 = axr0;

- C- s: s! f1 _, a
. q7 s- u3 t8 R2 l
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& a* O# y3 p$ v  d$ a" J) b
static void McASPI2SConfigure(void)
2 t/ v8 u1 I* t& e, q{1 h) S0 w  G4 B( h8 u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);0 l+ H; O# d* _& r/ t
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
- w7 z! B4 B5 Y3 |+ E4 P5 ^McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 x) x% m7 {% p# j6 ?+ x! S
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  l( ]6 H+ ?# i  X9 u
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! I+ U- M$ j+ q* M+ MMCASP_RX_MODE_DMA);% i$ g4 d" f% j" B9 Q# S: c
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ j  m7 M9 V) y$ E' t4 T: k
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" _( A- G7 u6 a% f6 ]
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % G$ X4 a+ A# S$ G
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: v2 W+ |2 B& t5 t0 s; V) Y0 {
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" T% D) ^8 z% o+ cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */0 _6 u& a# G# P2 O: i/ R  y$ O
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
; P: \# K8 ?4 L$ i! b/ ~! T5 @McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# g  G$ M3 r3 j9 X, e# ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 A$ L1 j7 E# Y) T; S3 b; \
0x00, 0xFF);
/* configure the clock for transmitter */
& h' l& o5 X9 g. UMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ c6 P' M1 l+ v8 M1 kMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + q0 z8 Z( V5 u* h" v. N% x
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 f  p7 n) r* n' ]" i5 s% u) J$ k
0x00, 0xFF);; c: l* a, x. \+ p' t% ?

9 b# m: r' d  i5 p/* Enable synchronization of RX and TX sections */
1 G, T/ o( |$ @McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ @6 T4 {/ t3 }McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 ]6 \- y- W$ P, KMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) E7 `9 a3 E! Z( e/ i" S** Set the serializers, Currently only one serializer is set as& I- f2 E0 D) S; J" ^0 D1 J7 I
** transmitter and one serializer as receiver./ A* e* N+ d4 b. s
*/
7 K' I+ T6 k7 @0 t$ K+ w- {; _McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ g4 K  I8 p, a" c+ x2 Q* hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 E; o9 ~9 T. H6 x5 V+ i& o% X. U
** Configure the McASP pins
+ B" C% d% o4 p) G) Y0 o** Input - Frame Sync, Clock and Serializer Rx, ~: G1 }6 x" v( I) Q
** Output - Serializer Tx is connected to the input of the codec . b+ g% s. W6 g) Z+ H5 L9 _
*/7 |9 n" d4 `' @+ q0 `$ V
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: y' g0 D6 d$ L- V- O) _
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ k" {. \: i3 S' Y' P$ Y) l( b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 P$ D; L) h- K* K, i* K5 x3 B
| MCASP_PIN_ACLKX
* i9 W3 q4 o" M' z" p| MCASP_PIN_AHCLKX* I0 A0 \9 s' k9 D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- ^. t1 Z6 v% Z7 F
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' I) J. D" X  n& q% u& e% M% ~/ P| MCASP_TX_CLKFAIL
1 X* z0 `+ G1 H2 [: k| MCASP_TX_SYNCERROR
0 g/ w) f8 q9 ~1 I( V1 ^| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& t5 E1 Y- L  T6 D| MCASP_RX_CLKFAIL
$ B" ?5 L! p& T$ R| MCASP_RX_SYNCERROR
1 j! j; G+ F( \2 {4 u| MCASP_RX_OVERRUN);
2 w; v0 ?' j3 w# B5 q}
static void I2SDataTxRxActivate(void)# h/ K; S; p# S9 n4 o
{5 d3 Z; n, E7 r" ?& W$ c0 [  L
/* Start the clocks */
- E% O* [- h! ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 E" j; @* o3 s* pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! U- p  q. {- EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& G, L; N; D; C( `5 GEDMA3_TRIG_MODE_EVENT);
% Z' m- f$ d  O' [7 |2 bEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; d% o2 t3 c! Q2 ?6 j0 A+ WEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( O/ J) ^( `# `1 v  G$ V
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& ]# r& z, J: ~. f5 j& U2 d' w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& r: w" _% t; O! v' P0 ~% `
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* _& I) p* i$ V; s( x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 U# Q; L  _5 b3 G- _9 H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. D7 j4 D$ [" O6 }4 d}
; Q* L# _: B. X1 o/ Q, ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 U) n& o# }1 D+ x; J" K  M2 c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-23 02:25 , Processed in 0.045718 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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