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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,& d9 o4 }( Y1 p" b
input mcasp_ahclkx,
: A6 C2 V# [1 B  f0 ^  Qinput mcasp_aclkx,
1 b+ C* s0 W2 Tinput axr0,, ^+ n( ]9 k9 M2 i
( p& ?5 s6 d3 c
output mcasp_afsr,( Y5 P; `3 v6 k; d. F& |# }+ [
output mcasp_ahclkr,
& d! v; ^9 M* i  o4 `output mcasp_aclkr,# |; g5 T5 n3 [# S+ B
output axr1,7 [9 T& R: [* C* ^
assign mcasp_afsr = mcasp_afsx;2 Y, u4 V( W' E' s! I2 J
assign mcasp_aclkr = mcasp_aclkx;
: \: I4 d/ P! {3 s, Q7 u: Oassign mcasp_ahclkr = mcasp_ahclkx;; q7 ~4 a: g8 j* N& ?; k% P$ y
assign axr1 = axr0;
; Z) H& g& z0 Z! g4 t

( m5 n/ l3 R! ^3 T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ ^- ]( o& r  m8 q
static void McASPI2SConfigure(void)  T, }. O. Z. A
{
/ s- V7 Y) \" PMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 T) B7 |3 z0 a% r% U% z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */# G3 p: {& I# [  J- L6 F5 V# B3 B
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' }* x$ G3 I4 k* f3 @3 h4 s
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
" B4 b9 j/ h% u: z  a0 ZMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: a) {6 X) f3 W3 h* [; w
MCASP_RX_MODE_DMA);( k; p9 A/ S  K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, s5 F9 C+ l  Y+ q/ L0 t
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# n! g' e8 p  C  M
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ( C) U4 ?; }3 ?4 F5 X6 V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  A% f* C3 L6 ^0 E" R) A+ c
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * j0 y, T  y% ?, x- s& p. e. Z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 f# m/ a5 e; i5 T+ H
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: D1 M/ G; Y& u! o; k! K; r
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 k! F- q/ H- ^8 T- _5 R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ W! ~8 u7 ~, e1 A; T- l. y' a0x00, 0xFF);
/* configure the clock for transmitter */! Z: C" i6 W: l/ F4 ^+ K2 h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) q6 n  X3 F* l3 G4 l! c9 o3 K
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : [' A0 ~) V7 G5 z0 t- G/ e
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 H: O! q- I9 T# r, K4 ?6 E8 x0x00, 0xFF);- S# X% o' ~0 M- k2 a
5 O2 |1 Y0 I! [+ T3 ~
/* Enable synchronization of RX and TX sections */
3 X+ _0 u, h7 y8 o: x; j* {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ y5 a. O* F! {* @2 v" NMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 g+ y2 v3 ^9 L6 y3 R9 L
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*, D7 w9 t/ e' L( o/ U
** Set the serializers, Currently only one serializer is set as& n: j7 D2 O5 j* W8 A+ m
** transmitter and one serializer as receiver.
3 a6 @" N3 W3 v+ ~7 g*/3 o8 W, E6 n. l
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  \  p( i8 K) {) c: v- O+ Q7 GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# P) _  v; _  i9 ^* U** Configure the McASP pins
$ i5 Z9 w$ Y% L. U* ?. X1 A. `** Input - Frame Sync, Clock and Serializer Rx
/ t8 q2 D7 I, U% N' Q** Output - Serializer Tx is connected to the input of the codec
% ?' g, k! M1 O( _  U0 `2 ?. Y*/
$ P% a& C0 i% ^4 l2 i! o# W* hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) Z* C0 c/ C% [; G# e% H# {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, s: x7 @4 y( V; E
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% g- Y$ w- R0 O4 [2 T5 O
| MCASP_PIN_ACLKX- q& a8 f; L6 h! J4 i+ B
| MCASP_PIN_AHCLKX
* z* J. ~% J* F4 Z7 U. p| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 z% Y5 {9 _+ u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) z8 h4 ]8 b; \; x| MCASP_TX_CLKFAIL
0 L! M" M; c% c! o& y| MCASP_TX_SYNCERROR  z2 p" Y) M% O' r+ n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% r. C$ F9 b  a| MCASP_RX_CLKFAIL
0 r: t& L5 e' j% i6 }: m. G) s' H' i| MCASP_RX_SYNCERROR
% S: r6 ]0 a, c' }; c' }: k3 P| MCASP_RX_OVERRUN);, w7 Z) A2 l7 |6 ]4 ^
}
static void I2SDataTxRxActivate(void): Q# l2 {- Z2 v  {
{
/ W0 g- O  e; I% ]5 \3 }. y/* Start the clocks */' i0 ~. B/ I& {8 }8 S5 `
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 f8 w% t1 d4 q/ Z3 }McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( C, u( w( h' S( P* k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 w2 H4 x6 f$ }9 i! H
EDMA3_TRIG_MODE_EVENT);# }: ^5 O' w) O' f5 m0 H# z+ `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 H. g* T! |; S8 H9 |7 F
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( w+ t0 _# g* ]" h0 s
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. w/ S& j7 ?0 B: C. }1 w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 o. `1 T7 _, D: v
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: C- v! U& h% p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
+ _, U& v, `" LMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 G, Y1 U( c8 O
}

' j+ m, b/ D) W  b  `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# d) f* G2 t2 Y- ?, Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-10 18:45 , Processed in 0.041996 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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