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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* ]5 j9 S$ \4 L
input mcasp_ahclkx,6 Q3 J0 \. ^  y8 I
input mcasp_aclkx,
8 R, c9 H: p6 y9 cinput axr0,% v7 \- t; O) z  p
9 P. T% |7 A( M, Z0 t, K2 a
output mcasp_afsr,! k5 ?  k, U, w* |, j
output mcasp_ahclkr,
1 w; Z$ y- \* c  P" z, Toutput mcasp_aclkr,' H' x% M; I: A$ ^5 ?
output axr1,
+ f+ _& W% j) K7 m
assign mcasp_afsr = mcasp_afsx;
+ {; z8 |4 i" x- qassign mcasp_aclkr = mcasp_aclkx;
/ Q+ _7 T6 M3 Z$ v- a& hassign mcasp_ahclkr = mcasp_ahclkx;
+ O; A$ `, o% l. Lassign axr1 = axr0;
+ a% S* n: D! k& b, U* A3 z- O$ y
& f# D, s% e  ^2 P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% [3 w2 Y$ L1 f6 v/ S% r) C! ?2 L. ]
static void McASPI2SConfigure(void)) x( r, k4 z3 G
{
) Q6 r0 Y8 N! SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);6 h/ q$ P/ V+ Y; M
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 _$ K) H8 n: H  x: l. F
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);% H6 ~( P" G- @1 `# j& s
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 J6 k7 K- a- ^/ vMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- l* h# K! H0 C5 h. V7 _MCASP_RX_MODE_DMA);
8 E" B! i, `; U" fMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 Y( i0 O7 O5 j9 O2 t  Y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
. W3 |, I/ F! X! ^McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 z/ k+ ?2 ]& C/ ]( W, W! h
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 u  s( q) ^# H3 P; b
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! p! Z5 M" g1 h1 ^0 ^MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 L$ W$ S* f( u4 I- @9 [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& h9 P$ t! i5 Q, X3 X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& Z' l: K! F7 Z- CMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 G  t: H+ `% f3 c8 V  x! h% X0x00, 0xFF);
/* configure the clock for transmitter */7 [5 z9 l* B, `( z2 `
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) E. [: e. g  ~- F5 C1 ^2 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # |. {5 q  I& T# L* z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ `+ C6 }! n% k. V# B
0x00, 0xFF);8 I, V- c7 n& n0 i
+ g0 x2 K3 h) F3 y, T) X8 o- P
/* Enable synchronization of RX and TX sections */
/ T) F, p; y8 |8 F: P# G% o+ @6 TMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ u5 Z& R. ?7 F" ]* Z
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' s) P. g, [& T& [* n2 K! {& BMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 v+ ^! s! D! ~' X! Q
** Set the serializers, Currently only one serializer is set as
6 G. G4 d* W/ Y** transmitter and one serializer as receiver.
5 ^0 V/ d0 a! D5 ~2 F*/
- H1 I! F) i+ i4 s7 E. [) HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% C1 \& |" ^* H- y; D" n; NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! y$ I, j8 S; i1 u) H- n3 j
** Configure the McASP pins ( a& ]6 l3 \5 n4 K' G5 c3 p
** Input - Frame Sync, Clock and Serializer Rx
" Y6 _# h: @! ?: s2 _" J' O** Output - Serializer Tx is connected to the input of the codec
1 n" g. z. S( f1 f*/
! k) P% l/ \7 _1 z+ Q* T. AMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 K5 A1 M4 e3 ^  d5 a: ]5 eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% r+ }& T! {& x( C
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 W7 R/ u( r  ^5 J/ a& n
| MCASP_PIN_ACLKX1 B4 u; ^; E3 K  D/ Y5 D) ^* H( K
| MCASP_PIN_AHCLKX
3 Y) J! h4 [. j) }3 t, s. i* W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* B0 Y% [4 b9 HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 n, B9 X- ]% i) ^( ?$ k' A| MCASP_TX_CLKFAIL
) q4 y1 Z5 ?* l0 k$ t! V5 P| MCASP_TX_SYNCERROR
5 M  R" E2 ~* |: W6 I  W| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : x/ a& |) V" \
| MCASP_RX_CLKFAIL1 g# U, \( \2 z% G
| MCASP_RX_SYNCERROR
- k3 J; T' l  E3 x| MCASP_RX_OVERRUN);
3 s; T7 _8 S1 b; R  G: b  G. F( k}
static void I2SDataTxRxActivate(void)
$ q' `& D6 C1 _" V# f% b{- c8 y* B) k: t- H/ F
/* Start the clocks */+ L& K/ K; D1 c# S
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! L( z' i7 p; m! L2 aMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' V  F  {; b' V% E$ A6 B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  Z7 a( W' c* p# z5 s
EDMA3_TRIG_MODE_EVENT);4 f8 }, }  ~, X6 Q' W, ]& g* i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + f5 Z  R% n: g% y( q  w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// k+ C- N. W9 y2 S9 c( B- l7 S: W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 |7 Z( U5 R/ t+ m7 _
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
( D$ A; z. j) s2 Iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 {! h) p! f2 K0 @/ L4 z- DMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 z, G" \6 I  U! u, c
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- x  P8 y. \* Z* E
}
- S( _6 ^" c$ H+ y" @6 j2 l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
: c  `4 ?* m# v: m! I0 R' x/ r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 06:56 , Processed in 0.037545 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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