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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9044|回复: 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,
0 U8 c7 ~) V7 W) b2 Einput mcasp_ahclkx," H9 M; P+ {; I" s! w$ F7 T$ U
input mcasp_aclkx,
$ c1 q1 c7 U/ R8 i: {input axr0,
! M6 G1 A8 a7 q( T. q+ S: I
. |& X1 L# a/ ]" v; u$ Koutput mcasp_afsr,
+ ?2 f2 F3 z8 `( t+ koutput mcasp_ahclkr,0 h% V4 J1 e4 [4 S: r0 E
output mcasp_aclkr,
9 j! w* z# V, R% Xoutput axr1,
* {  P" D' T! R0 s  R
assign mcasp_afsr = mcasp_afsx;
9 S. N2 W6 ]: `$ [3 X& Massign mcasp_aclkr = mcasp_aclkx;- A6 ^' v4 e# k$ z  L. E
assign mcasp_ahclkr = mcasp_ahclkx;
& I, Q1 k6 t* D" Q  zassign axr1 = axr0;
7 x; b: r* r, o! y' F: A7 U

& ~- @& r7 n" ]* l: Z  y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, ]% B" f8 r8 o5 P
static void McASPI2SConfigure(void)5 Y1 V. @6 A, ?- c1 I1 P
{  N. X1 ?% e5 Q# b
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 |! O2 ]) }/ UMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. ~$ L! p" t6 X5 V* BMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 p/ ~- w& r+ K" j& J4 n! l9 c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 k; B$ G6 S, y( i6 r8 vMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; U8 Y7 D! n/ K% O6 TMCASP_RX_MODE_DMA);
& r# \0 {! l8 h# k5 B8 YMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- ?. \8 D7 s4 N# g" }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' L7 x, X) H; Z( DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 {, G3 O+ }) ~) B
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ h1 S2 _1 v7 z1 G% T$ n# ~/ v$ z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 ?' O8 P0 k7 \; }- N# g. @0 dMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
' w& a& A2 p* p4 b9 \6 B0 [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);) e  Z( V* S' }- g4 y$ }: w5 k
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 M, h! Y! x& E, m, }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 ], U8 h7 t4 Y
0x00, 0xFF);
/* configure the clock for transmitter */' w. K8 N1 v/ H! f
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, v8 O9 V7 P* mMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" {# `/ F8 J1 P9 ZMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& O$ Y8 U# t" W* _0x00, 0xFF);
9 ^$ h3 C, b6 w; F7 f
# `4 }# W- j. a/ Y/* Enable synchronization of RX and TX sections */
0 v; ~, B- B) DMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% e. `/ k8 T3 r3 f  f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ h+ j: o8 d! D, f' g
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** j$ V1 K2 V1 D. X1 t
** Set the serializers, Currently only one serializer is set as
. b. Y  t+ E2 R/ Q$ Q& O** transmitter and one serializer as receiver.
1 e/ ?- C7 O1 l# i2 E9 o. e' ?( l*/
; f! k- j% C7 e1 D' m0 ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 o3 N4 Q6 C' {% `) R0 {3 q- c" MMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ @! C; K5 Z2 k0 W; c2 U( ?, h* C** Configure the McASP pins
  s& M8 s, R  ^& e, M2 b4 U** Input - Frame Sync, Clock and Serializer Rx
" z- B. u8 Y) Z( P" A** Output - Serializer Tx is connected to the input of the codec
9 a, a$ {- \1 T( J* W/ a*/! ]9 y4 h8 v. A9 @: e: o# S% c! l
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* N* f& y/ _0 |- \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ ?* K7 r: Q# L: z# y; G: M$ \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% O# B& {0 r. f+ l) r+ D| MCASP_PIN_ACLKX
& i" k' V/ t2 k. j* F/ b4 d| MCASP_PIN_AHCLKX% [' e$ ?, m9 Z- R" D. [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( V/ H( q7 t& tMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: d' h2 ?, g+ v  q2 B  _| MCASP_TX_CLKFAIL
  K& \0 M5 ?, {2 ]1 c| MCASP_TX_SYNCERROR
+ r0 O* h+ V, e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - t9 f. E% Q. m8 }
| MCASP_RX_CLKFAIL" g8 Y6 r5 _6 U/ d5 m# h1 ]5 ]' M
| MCASP_RX_SYNCERROR 3 e( _4 U9 |  i1 x7 a
| MCASP_RX_OVERRUN);$ v' z& _' }- `' n- A
}
static void I2SDataTxRxActivate(void)' {" ~; f- p' V4 M* ^9 v
{2 T6 `/ L! p# _
/* Start the clocks */* d$ Z6 {/ P/ m2 ?
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ A8 J9 L4 O! c. [+ X; t
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ T3 E5 l  N1 UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  J! R: F2 ]; ?EDMA3_TRIG_MODE_EVENT);4 ]  ^( {0 n9 V& ^: N2 F- ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, f2 r. B, y' \9 q! c" E3 p: zEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- z  W" Z1 i2 g: L, eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' [: R; t! O6 o0 ^4 m/ I" f2 s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' ^  _5 Y; i# p5 h6 y5 D2 ]
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: {, T6 r0 E- K: y$ r: `/ [/ S# D
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 T2 Q' L: Q$ q9 e$ r* e/ U+ f
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- Y9 y6 b0 E9 _& i- Q- k& w9 J
}

+ ~( C, C7 D. y" a. _- f1 z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 N. u: d# v5 P+ c3 h, {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 00:23 , Processed in 0.050965 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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