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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
4 z: E2 u' P8 O  L, W/ ninput mcasp_ahclkx,* ^% o  Q0 h$ I' V
input mcasp_aclkx,
- x* x, v2 V& L6 F0 n4 v# uinput axr0,, Z: N# d1 C  y+ m1 j# ^9 F0 I

, \, @" t- R$ t, z. m# routput mcasp_afsr,# w0 t% _% x! N0 R1 B
output mcasp_ahclkr,
5 Z- P* [1 Q9 Q, S) Soutput mcasp_aclkr,5 r- I1 z6 X# ^' w* \; J8 _; ]
output axr1,( k2 w8 W* E$ _7 H0 t# J; p: w, r6 n
assign mcasp_afsr = mcasp_afsx;
2 y% ?! s! [* B% V! Zassign mcasp_aclkr = mcasp_aclkx;
" U5 d/ n) J* ~; h: c+ b2 ]3 z+ lassign mcasp_ahclkr = mcasp_ahclkx;
+ w/ c9 s; @& p. y; n$ A7 zassign axr1 = axr0;
, m# x& E9 R' s: c# y2 O# K" K" l" F

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

" ?" {5 z7 z: y* {4 ]# ?
static void McASPI2SConfigure(void)
* Q2 Q3 Y3 @; j  ~{5 F9 f+ U* E, {& k
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 z: I2 k  T0 L" NMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
7 |# \* N( ~; B6 y# D: \1 eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ }6 p  N; b, m4 x/ O1 RMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 x. X  I0 V7 ~  }
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 V; o7 o) `  D" v, j  Y9 t' WMCASP_RX_MODE_DMA);
" u7 r! r7 K7 V" a" IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 u) t% ]8 T1 U4 z$ tMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, a3 y; c9 \4 c0 q! _
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 J8 b6 C6 u# @' e  _! U4 f/ N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 U( ~# V9 V' z  I8 ~  D; D
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
( ?4 H, e7 B2 |% w" M. zMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% k2 U- u8 t7 c; {
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( @2 O# x5 Y; F2 w3 o3 d
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . {8 `# Z, Z% B  k- _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- W6 i% G& x* X, K3 f0x00, 0xFF);
/* configure the clock for transmitter */
- G$ e& E" O6 H& g' eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
0 a+ k) t  K/ f  k1 G3 ZMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 ?+ l/ G$ ~2 v4 GMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( A% |8 v* X  x) i; Q% \
0x00, 0xFF);% a% I# ^6 C! S

& V# t8 Z& A) y% P/* Enable synchronization of RX and TX sections */ # R/ i! |" L. [, [9 E
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 b' Q. f4 a- Q7 @2 A: w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 v' f. D' J" b0 h8 W: cMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 c0 O. S2 V! g5 M. L( e6 s
** Set the serializers, Currently only one serializer is set as4 a) D' h$ M8 Q) {3 g: j
** transmitter and one serializer as receiver.
. u( f0 V" j0 e' K*/- v  e6 e; D$ W9 ]
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ N/ L8 n2 h* L- i6 xMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! e' h. Y/ V' x& c. t** Configure the McASP pins % D' `' b) W" i% W# r
** Input - Frame Sync, Clock and Serializer Rx. S: o' F; Q) V% j2 m! _* h4 b3 m
** Output - Serializer Tx is connected to the input of the codec
; p1 X; \. C$ P*/- _1 l. Q4 T& h- X- F
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ O0 [) z. O/ S, E( {5 EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( L& b* }& B! q* wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 ]/ t/ l& \$ h
| MCASP_PIN_ACLKX2 S5 p- y" M7 U: H
| MCASP_PIN_AHCLKX
! [9 J6 O0 S* v# E| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 s& A6 `4 p( I7 ^' v
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% z9 B- [% m1 ~6 ^| MCASP_TX_CLKFAIL 0 w  P  I) N* `. {3 r. `4 Z1 {9 q
| MCASP_TX_SYNCERROR- u7 n3 Q$ n! j! b* Q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 |% b' k2 R& ~8 P/ {4 Q) A
| MCASP_RX_CLKFAIL
4 J) J% H8 v0 s3 P! }/ d| MCASP_RX_SYNCERROR
4 V  O/ l$ i, {& d, D| MCASP_RX_OVERRUN);; |7 U; m. M: P# g* c& \. q# ]
}
static void I2SDataTxRxActivate(void)
& T) J( S5 ^+ W! t* v2 J* k{
$ n: w: K8 M/ o/* Start the clocks */  \) o1 F; j$ v+ b( z6 C6 v- k
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ ?, a4 |: u+ z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. v  V$ S# A) C! B# X7 k$ C
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) ~+ _/ V, o& P; ]2 h' f; @
EDMA3_TRIG_MODE_EVENT);4 g( S8 Q; j- \
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ P! ~( B; X$ e1 m1 mEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 V. ^( n% H6 w' w* J* gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: M( [$ N8 O1 |$ l# _: g' Q) ^
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! j  c+ R$ H. s; mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' n9 g7 _9 j' d5 i. b: K/ KMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) O( w' x+ \8 D. G2 }7 A. d0 Q# qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);* q5 D! ^- N* D# S) T3 B
}

9 _$ u. P% R# h3 z5 V; R0 F: [9 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 B3 ~, ^' a4 Z8 g# h7 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 06:00 , Processed in 0.039868 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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