MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,7 t& T3 f1 q( z5 _* H
input mcasp_ahclkx,
/ q& X0 X/ g6 P/ s" y$ rinput mcasp_aclkx,
$ s) v4 p2 u# ?4 F- X2 minput axr0,3 }; W+ q. ]" O7 j4 h9 b0 Z! x

. S4 N* X) M! d. A& Ooutput mcasp_afsr,1 ^% a6 Y( [( o+ p( P
output mcasp_ahclkr,
7 |. \/ R0 e+ Eoutput mcasp_aclkr,9 Q* x: J3 J( `6 e9 b! ], z
output axr1,! i6 m+ Q3 v5 C0 S* d1 [5 N$ ~
assign mcasp_afsr = mcasp_afsx;
1 v+ S8 Q  N, q( h0 _assign mcasp_aclkr = mcasp_aclkx;
* O) l0 i% C0 \% T* tassign mcasp_ahclkr = mcasp_ahclkx;
2 ]% O0 ~0 b3 nassign axr1 = axr0;

$ T! \/ g# Z9 h+ F" N) G9 x# l1 m1 ]4 B/ g" h% B3 l. v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
- E) t% Z5 N# X' G  `; S
static void McASPI2SConfigure(void)
* j- P7 N& ]- i  ?{
  t' H6 O, {* G# QMcASPRxReset(SOC_MCASP_0_CTRL_REGS);6 g# D0 O( E3 U6 C5 B8 n( X
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ x6 {: i2 h/ @; ]8 ?3 D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 P3 ^- y1 R/ c9 g0 _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */, v! L! }) F5 E! F( C
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 i) V1 a$ d/ k( V+ V$ DMCASP_RX_MODE_DMA);" y+ @! C6 W4 e) m" J+ E- T" r& K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 n. u2 g" C+ z6 Y8 V/ ?/ Q5 {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% Z/ k9 Y* E7 B( @% v/ F9 fMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 |0 @) R7 m4 k5 h2 R  k( m
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 z+ Z$ p: v2 @, E" z* S/ _% k
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
5 M  O0 ~; W" e3 w2 KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' g4 [% P3 b' p! ~8 F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% |. p9 q- _9 m4 s$ ~) D, y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; x1 z. Y% X9 {5 U) |9 V
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( c. P. [' `, N# w8 ^3 r0x00, 0xFF);
/* configure the clock for transmitter */7 f+ J- Y( H' m- q( j! `
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 C1 ^# G) x+ B5 d7 \$ P$ L. H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% r9 ~4 h0 x* {- W& AMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ J) q9 s, q! R8 ?
0x00, 0xFF);
( m0 K4 z& H8 n8 j! v1 F  E* ?
8 P% ?" a' y# S6 {/* Enable synchronization of RX and TX sections */ 4 X; a5 S/ G( q6 m$ S' @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( @  Q  ~) |$ v7 V2 {, c8 X1 f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/ {, [: l1 E6 ?. ~- y! D/ u2 c9 [+ ZMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" h8 M. H$ \+ b& {" v3 o7 Y- b** Set the serializers, Currently only one serializer is set as' V& O; G7 L6 J2 j' i/ |, t2 J( u
** transmitter and one serializer as receiver.
1 x& n  k7 q1 ~, Z% H- M" l*/5 {( x, A) u6 B9 `8 a- p  F% \+ Q  ]7 K! r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ ?, F# h- \5 GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 t& ?4 u$ e) y" }& `. U4 w7 x** Configure the McASP pins
1 A# e* l! e- {' x: O2 r** Input - Frame Sync, Clock and Serializer Rx
  ]1 z# r2 K- k& v- k/ \" }/ y** Output - Serializer Tx is connected to the input of the codec 7 M9 B# P' H8 g0 W/ [6 e1 @
*/% y6 ^0 M- T; [' [) x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 R# g+ F- [! D! D* }1 L+ gMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 z. b. ^+ f$ dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' h3 ^/ Y' l' e1 s# i) \2 J
| MCASP_PIN_ACLKX
0 U3 h4 W, y% J| MCASP_PIN_AHCLKX
. p; t" L* F; [6 f| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ ], R7 c/ H5 P% {3 E. yMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% ?8 U' a0 A- U  n| MCASP_TX_CLKFAIL 5 i* c. p5 ?4 D* }
| MCASP_TX_SYNCERROR& s; s2 s  R( X8 S1 z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 h& `3 k# v9 f( H6 N| MCASP_RX_CLKFAIL
& x% g$ \6 V0 K. ^+ I  ]( P| MCASP_RX_SYNCERROR
) N  a6 g8 d/ @- E5 m| MCASP_RX_OVERRUN);. I( U  S/ I+ N# o- \0 u$ K
}
static void I2SDataTxRxActivate(void)" b1 G# e$ T$ |$ o
{0 ^( l3 C' i; R6 l" ~
/* Start the clocks */
. j& ~8 ^3 y8 R( C: UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ C% c) H; Q& {1 `4 [, J- K
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 b5 _7 E6 L; M1 E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ D$ h) h1 u" [8 |9 m6 ^
EDMA3_TRIG_MODE_EVENT);
1 K2 i: J/ F5 W: j* ^/ FEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * u+ c- j# R! k" }) r! R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ \, ~  `" w2 n  T) Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
! J; Y$ q- {4 Q/ ]; n8 Y8 Q4 e: NMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 @) K% z! q; O  ~& Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ w# N2 h4 q. n7 z& kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 x* w* ^. w( A- U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, Q  s) V% M" h+ D: D! n: ^/ N
}

4 S2 f( Q- h1 m* k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, K- M7 U+ o4 \2 B) r+ |) y8 E% _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-12 23:34 , Processed in 0.042031 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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