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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 `8 E* ]$ Q+ a2 e0 ]/ Y! {2 x* z4 finput mcasp_ahclkx,8 U$ q, F5 A- X# M+ y
input mcasp_aclkx,% ~4 y- Q0 M+ V; y! u9 u3 v
input axr0,
- f2 g2 F6 R; {9 w: M
& M  }5 N+ t4 C) x5 Houtput mcasp_afsr,: ~4 N& P) D6 h6 k
output mcasp_ahclkr,1 e1 V/ L# G/ _- K
output mcasp_aclkr,+ t4 n# B0 i" Q0 `6 N
output axr1,
% S# d5 W: E( X2 e8 x( M& |- ^
assign mcasp_afsr = mcasp_afsx;
7 [5 ^( Q4 W# a2 dassign mcasp_aclkr = mcasp_aclkx;& i9 z) A( k5 J  q1 ]8 i; v5 j; ]
assign mcasp_ahclkr = mcasp_ahclkx;
6 J1 i# a0 `6 `6 y3 Xassign axr1 = axr0;

/ i6 L1 s9 X; K$ H$ e, {  {- Z" r0 g' D. q4 U
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 V/ S$ ~- G3 A
static void McASPI2SConfigure(void); r( P% e& Q6 H" h- m# Z
{5 L5 B7 Z! w7 q; h8 V
McASPRxReset(SOC_MCASP_0_CTRL_REGS);% K2 Z$ s; p) R& _, [; u
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// S; K& o% m# p; p# |0 F2 l- X1 X% z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- f4 s* i6 Q* h" I0 H# y/ F! ]! o" mMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! s) |$ K) J7 L5 @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. h7 o3 v( }$ W6 K9 O
MCASP_RX_MODE_DMA);( w9 }# E# }% q& S  @7 K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) k8 V4 a. ?# }- _0 y/ r
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" G4 |- R' `  X3 L- d$ I
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 F6 Y+ _( d6 u) x2 ^* K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* b( A$ v" ^, u, i
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / u; c  L3 E: e# K& J* t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ h$ D. \- A2 u4 [% \
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 }" o$ N1 C6 _
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 M% y  y% C) `$ L9 W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,! N# n$ X: \4 r( p0 B
0x00, 0xFF);
/* configure the clock for transmitter */% L( Y  h0 l/ V! ^
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 S. j$ K& y$ T; R8 R$ GMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: [7 d) O; S6 G' e- ~, b( }6 K( DMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 f1 m% j0 D4 q4 w1 n0 i7 c0x00, 0xFF);  ?3 j0 e* c+ [: Y& `
& v) i. X+ r" j" v% P& f' r
/* Enable synchronization of RX and TX sections */ ; I9 W' d& A% c) ]# x+ y  a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" B6 Q& A& ]$ y" ]6 X& l7 J
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) H; _* |7 Z- _/ x8 ^; a, X5 RMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' l" r4 j+ G4 p( k. K' k/ o** Set the serializers, Currently only one serializer is set as0 a! w& C5 s* ^
** transmitter and one serializer as receiver.
; ~, u2 V7 n! b" |: g3 m*/9 J; [- a8 w' ?
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# b" Z# V1 r7 [9 Y0 O8 \/ `' i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 L: C# K7 Q/ k' @$ c/ C9 Y** Configure the McASP pins - X8 ]0 \" v* u
** Input - Frame Sync, Clock and Serializer Rx. _5 Y: {* ~5 _/ X3 f* g
** Output - Serializer Tx is connected to the input of the codec ; M0 U9 `  G& \8 l# L( j
*/9 `' v+ b9 L# V0 H
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 [- e; r+ x1 H$ mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 M/ v8 T; h0 ]6 R2 M/ h6 jMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( Y9 ^5 N/ Z: A6 J+ x| MCASP_PIN_ACLKX3 \( N  X+ \( O: m( [
| MCASP_PIN_AHCLKX
6 W" u/ {) s) i| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% ^) y7 M( Q: `- f- }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 P9 i8 K5 r3 w& e( s6 r% k$ b# H
| MCASP_TX_CLKFAIL
7 K3 M- X( P7 I5 W4 A| MCASP_TX_SYNCERROR9 `( \$ Z# F( B) [2 F& q/ f& q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# j: |1 o" z' d* }! \| MCASP_RX_CLKFAIL5 Z# h5 ?" S7 {$ D
| MCASP_RX_SYNCERROR 4 h5 f! T* J$ J8 }
| MCASP_RX_OVERRUN);8 r7 u0 Q/ _" \( ?0 H
}
static void I2SDataTxRxActivate(void)2 y4 a$ m4 N3 ]% ]3 k
{
& p# {3 n0 M* r! t6 o/* Start the clocks */
9 e  X7 F7 Z" [. @9 ~McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# _% i5 o. F/ k# @7 b
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 k7 c! I: Y6 j, ^2 D8 C1 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ S2 g' ]9 H3 X+ }5 oEDMA3_TRIG_MODE_EVENT);
& E1 v% k' S% p% I+ VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * G* d# i  i8 p- h% q' u3 P
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- l& N! G, a; ]5 F/ ^$ lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);! _* S* _) C3 u: Y4 S7 D
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// T0 p7 g0 f, C' c* w! Z+ R
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 g) R# H% B8 |6 s# c
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);; y) `2 a, s  k) H! |" d" O0 Y% c
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);" n& _' a- ~4 l  C
}

/ K, D8 E. p; b, c) O  V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

9 z5 i# d3 I5 e: p/ v! h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 09:02 , Processed in 0.038395 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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