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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9552|回复: 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,+ b% s1 e; _3 @# c% l7 t5 }. x
input mcasp_ahclkx," }+ w/ @' q2 V, H* A; a; A/ u  g
input mcasp_aclkx,
0 y# D( H& C, T: oinput axr0," ]+ h: E, ?' M" Y6 l- b3 `- q0 u7 |+ o
% T, O1 u/ z$ `
output mcasp_afsr,- D2 J$ y* b2 K, {, M3 F5 h  w
output mcasp_ahclkr,: F* o1 {; t; `* S0 i
output mcasp_aclkr,
, t; z8 T# B0 h9 K  g  l. [output axr1,
) a# F/ m+ t# J4 y
assign mcasp_afsr = mcasp_afsx;* O. H0 B& C0 Y0 f. C5 v; a
assign mcasp_aclkr = mcasp_aclkx;- v7 l& E, P" b4 T% ~& I
assign mcasp_ahclkr = mcasp_ahclkx;  o' p3 z4 C1 Z2 |5 I
assign axr1 = axr0;

1 B& m; {  i; [7 w
% C1 q" z! V6 I0 ?( L$ o$ K3 M4 o
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 j8 a; y+ c4 I! o( t  g6 p
static void McASPI2SConfigure(void)( Z4 R1 C8 b' ~, x+ @; p9 T/ _
{
; O7 [2 s7 i* I: ^& L/ g  C8 SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
  C8 N+ i7 [' N/ G" P: GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; T% C/ b% X1 V$ Z( MMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( _- B% `& `+ q1 Y/ FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* q; D2 R# r* y' }: s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) D& y* z5 R8 ]
MCASP_RX_MODE_DMA);
5 u/ R! H, M4 d4 [* C. M3 M' nMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," r; i; p! q2 ?, e9 b" ]+ p2 X
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( N6 T4 W% o/ g: nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 M& T1 S* H9 t# Q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 ^/ ?1 z& T/ i0 J1 V/ b( X
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , C$ f4 ]: K. Z( P0 d$ J# J
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver *// J" ?& M0 A; e, b' m% ~% K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 X: @: i, ~8 i
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; Q! V& g' c* K6 t- k2 n. ^
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, @% m4 f: ]. i; Y0 C" A
0x00, 0xFF);
/* configure the clock for transmitter */
. |0 ~/ S$ `4 eMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 O1 Y$ B/ s* j; W+ D/ gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; e- ?* W$ h7 B2 |! T; j" OMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 ^# A( X- b( U! w! X1 }) n
0x00, 0xFF);% T' {" l' i/ D1 U- n4 ?
+ u. }6 d# i) F/ v  x0 Y
/* Enable synchronization of RX and TX sections */
1 w  t5 P) j0 x" A4 lMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 Z7 u# H9 i4 o% ^( c; L0 @. J
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# |4 g) i) g/ v9 W$ @. j) y- Y- xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: G( p8 @0 S! K; L. i** Set the serializers, Currently only one serializer is set as5 f  K7 q9 N! H' I: i- P# s& s5 m
** transmitter and one serializer as receiver.
8 b# F2 V7 z  y*/
4 ~* F& J) A& @McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 y+ V+ `' q, R' xMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- t8 ^; H' _' ^! b, _7 L9 A- W% r
** Configure the McASP pins
. B8 o6 H; x" g** Input - Frame Sync, Clock and Serializer Rx
8 g2 {7 T# k& f! p9 u& I** Output - Serializer Tx is connected to the input of the codec ! W+ }, K  ~, z: O, c7 Q% a
*/! Q" o9 j! h. a( P+ p4 d; p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! e( w9 ]& W6 @! u* W$ ]
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# U/ p( U6 P0 G# [  d5 x) Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX7 q# S; z, H5 E( E( D! R+ L
| MCASP_PIN_ACLKX
2 ], @- m+ E7 a  w1 `& p| MCASP_PIN_AHCLKX
% q& O* p9 Y; @$ y/ b0 w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 G! ?- f2 D4 O+ C! D# DMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# T+ ~+ M; w1 _6 o$ o1 M| MCASP_TX_CLKFAIL 4 x. {4 j( q* X8 ]8 W
| MCASP_TX_SYNCERROR$ ~1 q4 B% H4 V7 W
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 K3 I# ]$ O' x/ s
| MCASP_RX_CLKFAIL
8 S) B) N; j3 z; ?* P| MCASP_RX_SYNCERROR
( \5 Z2 }* q0 z* G0 N| MCASP_RX_OVERRUN);
8 p$ u7 l" o- e8 O0 q}
static void I2SDataTxRxActivate(void)
2 T. w( [. D7 F" `0 f4 `{; Z4 V+ m2 M4 J/ S% m
/* Start the clocks */
& [8 G+ r) y2 a- f& U/ B: zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ B: ^7 |  k  G, O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  l5 S( U9 T4 B& ~9 U& WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! `6 P- w# y2 z) sEDMA3_TRIG_MODE_EVENT);1 F- o9 X0 O/ t6 ^+ f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " o% {- d) r' G' c( A( }4 N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! }/ Z4 f! k- r& a7 UMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% W# |0 z0 H) B9 TMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! |& @! Z$ w/ S( `+ z+ [
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% Q6 K  n8 O" b
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);3 k8 y# o) P0 A' M& a! d! {
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 k+ b! ~) Y+ e5 W( W: z: W) C7 U5 e
}
2 F4 ^6 C1 `6 u$ D5 x" v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( T8 X& L! u3 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-13 16:08 , Processed in 0.042080 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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