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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8900|回复: 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," d# ~2 G% T( u  f0 Z$ E3 Z* Q6 l
input mcasp_ahclkx,5 j4 j; I7 C3 M+ I  ]$ d
input mcasp_aclkx,
# E! r& f8 j& Z+ X# z7 einput axr0,0 d( D, u; o7 M. y7 P
$ k0 u- ?" ^1 `
output mcasp_afsr,5 @8 e: A' O1 q' M/ B( c1 B: W' Q# N
output mcasp_ahclkr,
4 u' J( b8 _, C# h  W% Woutput mcasp_aclkr,5 f, N2 M, ?" {
output axr1,, I' e, O, ~0 B0 Z# H/ X% O
assign mcasp_afsr = mcasp_afsx;$ ?: \! |: X; ^% s/ N
assign mcasp_aclkr = mcasp_aclkx;
# o+ e  Z) ^) \) k( c6 Aassign mcasp_ahclkr = mcasp_ahclkx;
8 v  y4 K* J* E1 s; o$ W  Aassign axr1 = axr0;
; P$ j# i1 p' j4 I7 v$ ?

% d9 ^8 Y0 C6 {# l3 f* d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: _5 v- l3 r. c' V0 c" M  Q
static void McASPI2SConfigure(void)6 J/ W5 n; W6 W+ P# @: ^
{6 l6 a9 g( \( d; N6 i! e
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  q# ]+ V: f( B
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* A3 e2 K' d. f9 f! g. R! {
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 A8 F% l: @8 L. F% b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& @/ C$ K7 d8 @' d0 b6 A
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 z  O; C' g0 V. KMCASP_RX_MODE_DMA);
' R0 D+ F; S3 z$ q' ^McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' I$ w, w; O7 }6 FMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, x2 N: ^1 T8 W& `3 e
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " Y( i+ f2 Z3 N: i" k# T' {2 v& V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 T/ \: L9 X8 \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 z. ~+ v) Y' e; N; }2 P: L
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( F* x+ h! ?* l  kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& T% ?. F2 H8 @" K; M7 g
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ R3 O7 L, O* [* C' c4 z9 H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; ?, y( Z) p2 G2 @! W, N, ~$ L( Q
0x00, 0xFF);
/* configure the clock for transmitter */( l* W: l- D4 V% K4 ^; J& e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- \: s, X  c6 S' p  n. ]4 ~+ OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 a9 M2 |& L9 w* g; f6 s3 \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 P) N" @' m9 ^1 I# N/ j, e" I% ^
0x00, 0xFF);! z) E& N, z. R; B) g$ G/ @

! c& Z/ a9 c/ j$ ^/* Enable synchronization of RX and TX sections */
- f( `3 q, B8 u+ c2 b( ?$ m$ x) LMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# W$ C# }/ I- L4 VMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);+ L# v; l& S1 J% a
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% ~  B5 ~/ L8 M& E/ y4 t1 R& j** Set the serializers, Currently only one serializer is set as
( k$ p+ I# {  H4 s0 k** transmitter and one serializer as receiver.! @7 p* d" L8 _+ y
*/
0 m. k1 t% P8 PMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 D, n# [9 K6 b; ^" |8 D" b7 nMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 A  Y* c7 ~" G# u% [2 o* z% J
** Configure the McASP pins
! W7 P2 n0 R: t( ?0 N** Input - Frame Sync, Clock and Serializer Rx
0 |8 u5 `# f2 |& ~) Q** Output - Serializer Tx is connected to the input of the codec
4 \( [. X; D0 W# b$ d*/, w6 D9 i) ^8 j! i
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 @( s' d3 ?" G+ t
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" U5 [7 Q# Q' M/ L/ vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- [$ E! a& J6 ?0 u" |, J/ U& S8 u' e| MCASP_PIN_ACLKX
) k1 ?$ ]$ ]8 F5 F; _9 E| MCASP_PIN_AHCLKX* }) v/ K1 ]' b1 P! g6 ^2 `
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  a9 q& r2 C% m5 \' A- @
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ m" [. @4 ]8 v| MCASP_TX_CLKFAIL
% g8 j% r! A- ?( g( t5 Z' ?| MCASP_TX_SYNCERROR
8 Q4 Y8 U! x! j: i5 n/ x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : ~4 \' B4 i- x7 S# U
| MCASP_RX_CLKFAIL
& J# a- ^! V0 a* V1 V3 h| MCASP_RX_SYNCERROR
; O5 {/ @1 D0 C! t( u; }: ?| MCASP_RX_OVERRUN);# l- b2 k* K! h4 a/ w8 t
}
static void I2SDataTxRxActivate(void)
0 A8 T- I/ A/ U: x" u{
3 E1 u9 w: H5 o  M& [/ u/* Start the clocks */0 Q+ N4 l7 J) J- u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 w4 G, Y4 c; V! E0 d$ xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' P7 Y! U, `! \) b+ }$ l" Z2 \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ _( v3 ~6 C! l- T# k' f
EDMA3_TRIG_MODE_EVENT);& ]4 c4 [: ^) `  ?7 E1 X, W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; O4 ~! q8 F( D6 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; C# C" p7 ^  b1 ^
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 S% {) n; H5 B. o" b+ c- NMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( V) P9 W8 x+ |% lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: Q" V6 r2 Y* I  W' e
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* }) \9 T! L( Y3 QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
1 }; I" Z5 a/ X& I  d: `, s}

' b3 V% u0 C8 {$ [9 c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 \" w) h4 d/ L. U! Y# M4 k- U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 17:55 , Processed in 0.040755 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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