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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9506|回复: 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,, p2 n% X4 c4 G' ]% Y" U
input mcasp_ahclkx,/ m9 I8 _2 D& y3 [9 \
input mcasp_aclkx,! p+ D3 m, f% {; |, \
input axr0,4 e$ O/ a* j0 p( k
4 o7 Y$ I9 j- x# M  {6 g
output mcasp_afsr,
5 |& i% x7 n" V5 s, q( O7 Goutput mcasp_ahclkr,
7 G* F+ [) K+ ^' b, F( G% @1 Loutput mcasp_aclkr,
9 S7 S$ z+ R0 ^6 U( Z2 |output axr1,
/ V: N; }$ r& |0 Q
assign mcasp_afsr = mcasp_afsx;# Z) s  V0 D, q7 g8 F6 C& Z
assign mcasp_aclkr = mcasp_aclkx;
& @( s( i# C( o' A$ r7 hassign mcasp_ahclkr = mcasp_ahclkx;; I; H6 A7 f% r
assign axr1 = axr0;

" k0 k6 |! k( u& j( X, t4 |- W
  \" e4 J; l3 [" i4 q+ a3 g/ ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! a! C2 b5 ~5 k% F% E; _
static void McASPI2SConfigure(void)
# t5 A  q! H  s; t. Y{; y( R6 `5 u+ a9 U3 @$ D
McASPRxReset(SOC_MCASP_0_CTRL_REGS);" b, B0 l" T! ]5 N# o0 a7 s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# Q# N- x9 g. C) xMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- r& P: D% j$ h% _; @; ^! `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 ]2 s3 I/ G+ e' `' QMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& [& S" ^3 K# N; D3 q: `. {! s' o
MCASP_RX_MODE_DMA);
% V3 t$ R/ C) E. t2 U  EMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. k) [; P# ^3 E6 R" N* H
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ |/ X+ k# R& UMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! u; L6 F% u  C8 B3 ?
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, D( S1 F1 @8 k8 D6 U% t8 c6 v: l
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & F7 v/ N# c2 H2 i; @* B3 N
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
' w" c! w7 ?1 m# U/ j) p+ jMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. ]8 E2 r5 x9 C( a9 G
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 s9 y& n5 x  g9 N  b$ uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: ^7 L: }% y% H+ \# N0x00, 0xFF);
/* configure the clock for transmitter */
5 m+ }' h- {9 Z3 s7 ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- t" D3 l: y/ u1 P2 {  n5 ^: [McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % l* V" }% ^  c, u& Q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' {: _+ n/ Q" K! M
0x00, 0xFF);
. P" E0 m6 z" H' E4 w1 ?1 L6 h6 _( k* r" `) ?
/* Enable synchronization of RX and TX sections */
3 t" P' B# b* m" Y8 \6 n. @McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. }2 m. I" h! |* d/ r& Z( @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! E. G  g3 n( r; n0 Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 ]3 g5 {# U. c% k1 R& k
** Set the serializers, Currently only one serializer is set as
( f  G" l+ |3 M1 ~** transmitter and one serializer as receiver.* R' I6 T) t  Z2 p; D
*/
9 C  B# R, b/ JMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 B9 r. n! |8 {  ^3 l6 ~+ o! X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ O& Y3 U8 `3 D3 {) _, k! y
** Configure the McASP pins ( H" t' T1 K+ T9 }1 ?+ o4 j
** Input - Frame Sync, Clock and Serializer Rx9 n8 `" ]1 x) [0 A# A
** Output - Serializer Tx is connected to the input of the codec 6 _$ w/ |+ M3 q4 V5 y
*/
/ w6 ]( _  g( J0 jMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% @) ?+ v! E' V$ \5 UMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
( r7 w  g: r, l+ Y" e7 WMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 F* n$ b$ a4 X  ?. v5 i6 l: N" V
| MCASP_PIN_ACLKX& w4 [! G2 L( u7 \! M- q$ Z
| MCASP_PIN_AHCLKX) n2 u, @* q0 n) C* n1 Z( ^, ?
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 R0 b/ l8 _" y* X( n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - O8 C4 n) f9 e. z0 U+ l3 F7 R
| MCASP_TX_CLKFAIL
% g, ?, S8 Q& e- R% L) T( U! t. E| MCASP_TX_SYNCERROR
3 ^- }3 S$ T) ?# t1 p9 E$ V! `$ X| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: t1 A# W$ k- e, E| MCASP_RX_CLKFAIL
0 s, Y) A2 [! r) W* h| MCASP_RX_SYNCERROR
, i" w2 q" {/ M8 M: e* C' _| MCASP_RX_OVERRUN);) q- D3 f, q1 ^
}
static void I2SDataTxRxActivate(void)& l8 W* p& E' I& W: \" x
{
# @' X9 M( Y/ _. L" m7 r/* Start the clocks */
- |6 y' Z2 t- E1 t; \McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, k$ G  T) r2 s. S. \! j; p+ ^% r
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 k; G9 P0 g% C+ d5 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- W1 A( n5 U0 V
EDMA3_TRIG_MODE_EVENT);+ @3 e! ]1 T2 ~5 A. F' ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' M6 v" X3 E4 X3 K+ u5 CEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% b, ?+ k* r! YMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 n9 r2 @  `6 A! O; I) }
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" n, H0 p! ]& n0 r' q! Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) p+ A* ?0 {% `0 UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; H) s8 U4 J+ H2 K' V6 {' B1 D- ]McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- k; i, l; J/ w$ \2 q" p
}
" R  K# ?% o- b* V# B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 H, [' T" D# ~7 v; v0 W! m6 G; B6 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 07:55 , Processed in 0.040363 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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