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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,. J1 Z! @. A/ s& X7 W
input mcasp_ahclkx,
  X# y/ o2 G! T+ x( oinput mcasp_aclkx,, s7 n& k9 [. A$ @1 H1 k
input axr0,# e$ P% Q/ L7 d0 q& d* h" L
  I% a' s/ w+ [" Z8 |" {
output mcasp_afsr,
: Q3 ]* s' ^' youtput mcasp_ahclkr,
3 k! Z* e, F; `+ k; U) Y, foutput mcasp_aclkr,6 V4 [) r$ L2 Z9 z% N6 B8 S
output axr1,# f9 o* Q+ K0 E, l
assign mcasp_afsr = mcasp_afsx;
' \- e! }! Z9 R% J& i0 @assign mcasp_aclkr = mcasp_aclkx;
7 y/ S- u: x* l2 U* x0 jassign mcasp_ahclkr = mcasp_ahclkx;
% h/ P; x8 p. H; [& S% w% `assign axr1 = axr0;

9 a) K- x. s5 U' g
9 \7 R, W( e2 y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 }3 l- q. Q. f$ ?/ @, {9 e
static void McASPI2SConfigure(void)( h  `5 D$ Y+ D, t( ~8 [* h+ s8 _
{! \6 Y9 n/ ?1 M) W; b+ S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 a0 `# B# F- r3 j- c. W9 U7 ~McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- e; M' {; v* _8 O
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);, d8 a% d! s! _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( P+ B  v5 P. Q; iMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ n. x* R8 L% ^' v  `- I/ o0 R
MCASP_RX_MODE_DMA);
8 a. D* O0 k5 I1 C0 y; WMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ N8 n. w. P, W5 I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ a' ^* E4 q# {, o4 e3 e& @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / i& {9 m/ y! S' Y0 }! V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" z* o5 |. T  y6 ?McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) g7 N' F0 p* Q5 F& |
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ X4 Q/ {2 m6 S2 b( r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ E: z! k; A% `$ x! }9 {" n. V9 J1 WMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 6 K' ?5 @  j& l1 ~
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ O, _  @# o& b, y4 ]7 k% W8 R
0x00, 0xFF);
/* configure the clock for transmitter */' O! Q, B) ?* `8 V( N
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);% m& O" \+ G) c3 Q1 x+ E) k0 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 u2 A$ j% i+ @2 Q! `% W
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 ?' S/ k8 U# |( u% L1 o( F$ c& V0x00, 0xFF);
3 u' }: J0 q3 f; q$ Z+ O9 x- |* _: i' ~- x% Y
/* Enable synchronization of RX and TX sections */ 3 z# w9 U! [* ?
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& N  O- }7 @5 k3 V. t8 [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 b! @$ M8 `6 T; Z. O
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( f# j% ?; Y) B0 D# U) h
** Set the serializers, Currently only one serializer is set as
* P. A1 @" R0 }, A0 E$ S2 B; G. ^** transmitter and one serializer as receiver.
* _4 g/ u, M# X# A; o- [, Q% r) k*/
- m, L' m* B8 P7 J! `3 tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: ^8 X1 N3 M' _- [
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  o: n' n6 b7 X: M* S, i! T** Configure the McASP pins
% K/ V$ |, H: }! a+ G& |/ i** Input - Frame Sync, Clock and Serializer Rx
0 z/ Q9 M4 k  f** Output - Serializer Tx is connected to the input of the codec % ^: ]. [: f) P5 B. Y: ?
*/" u" M9 P) X+ t; [3 K, p& Z
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: M- M2 ^- D6 ?5 ~. m& dMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" o; l& {: m) J. x) I' dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' K5 s, W$ F9 U& C" E2 A7 |* h| MCASP_PIN_ACLKX* P9 J2 a" [& H- J3 Y$ X, s: L
| MCASP_PIN_AHCLKX
- p/ H$ ?( p; K, `| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* W- A8 T! ^8 w% B& iMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! P- o1 R# Z4 l' z0 G& |( v7 n| MCASP_TX_CLKFAIL 5 C6 [+ q9 P6 x! ]9 O3 J. C$ X. C+ R
| MCASP_TX_SYNCERROR
: t6 \3 [6 X2 N4 A+ h& F8 L| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 c  k+ ]1 z- I) `& [+ s* m| MCASP_RX_CLKFAIL- T& [3 g  _5 t& n  m
| MCASP_RX_SYNCERROR   T+ r. o+ d# L" Y4 e
| MCASP_RX_OVERRUN);
9 G: O7 X9 k0 U  x}
static void I2SDataTxRxActivate(void)3 L! u! Y- z+ E/ K( ]7 l
{
( p" n; b( a% i$ ]' r/* Start the clocks */# l  r  c  _* b3 T0 W/ l" H0 h. _
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 R$ @# ?8 y/ W, ]- e6 w/ ?
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( Q& i: E' g8 ?- f) v! a
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! n; [+ f. G! i0 JEDMA3_TRIG_MODE_EVENT);/ L( Z! a, |% n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 Z; ?' m& ]- t" i7 p1 V  j% z  \  y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 a% b; H; F( H9 S  i7 o& `$ y0 RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- K/ X( ]. i% z/ XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& w, ^6 u, j1 S: V, Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ l. J6 c* E# O0 G$ j& S3 J! xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);. `& @$ [* h+ @) o! }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- |. u* x0 z  X  z, N
}
( M2 _: K' p2 E. R7 z; @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; u& C. j4 p0 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-12 19:19 , Processed in 0.040321 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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