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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11521|回复: 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,- M+ i! @8 ~4 ]2 T2 F
input mcasp_ahclkx,3 |$ `8 Q7 A& N. m4 v
input mcasp_aclkx,
) v5 x  o9 x3 k$ U- Y! z0 H% pinput axr0,
4 ?2 O' H( @  E( }
+ y# }) t2 c. x8 U8 F  Xoutput mcasp_afsr,' @; y' g8 g  J! f' L
output mcasp_ahclkr,6 m7 a6 J$ I! H
output mcasp_aclkr,! w3 E% J' O0 f1 {3 ~% L; I" ?
output axr1,
  g. a+ x9 D3 W; y, _4 H
assign mcasp_afsr = mcasp_afsx;, Q& U1 k' m4 L/ B3 u' q
assign mcasp_aclkr = mcasp_aclkx;1 E% V9 @  ]9 I6 R# G" ^0 n( n
assign mcasp_ahclkr = mcasp_ahclkx;
5 R4 F6 I6 v& u3 b" tassign axr1 = axr0;

/ M. M; l8 |; F+ w; W% G# R" m) E9 k* @) Z6 j3 m$ f) q0 ]! [  F
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  i' P& y# y+ \* ]
static void McASPI2SConfigure(void)3 U' q* C; r5 ^  m' [4 [0 s' |" ~
{
0 ^0 r' L( b2 E# N4 I. [6 HMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# b; c; m+ ?8 D$ xMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 J0 d; f$ J6 @) Z% b( Z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 X; S; [; e( |8 i' S# d; Z# b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. m; ?# I  D  H% l7 B/ Y  \" W( C$ dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* h, r  o+ u: ?, M- E
MCASP_RX_MODE_DMA);
7 B9 I9 O3 [1 L5 h- n5 a) UMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 l4 G, q3 V5 w, g0 P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 p8 |; b! p5 w, {
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' s1 r9 ]3 T- V/ s( _# j
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ U* @/ d8 b( s
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, - q, `' y+ W: X/ G
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 @' L# w; e) x/ `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  e% o% @. c, H# dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 R) R/ T9 x% \5 PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
; x7 j  g& J  c5 b5 h0 o2 z0x00, 0xFF);
/* configure the clock for transmitter */( ^/ P: j% u, a: ~
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 X' s, B: b$ z% m1 u& T6 c% Q- _McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 R, f; g$ Y$ w! J. L4 `8 P4 Y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  G# G6 ?9 S: @( N% b
0x00, 0xFF);
$ V  ^/ Y; M3 Q
  ]$ e0 E% o) w4 d, m/* Enable synchronization of RX and TX sections */
3 v  D7 ?9 _' C/ q) V$ |' ~  }McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! o, @' M4 X3 n! nMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  P% b+ [# k0 r2 zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
# x6 n: {6 [( T; J** Set the serializers, Currently only one serializer is set as3 I( r% O. W5 l0 w1 x4 \
** transmitter and one serializer as receiver.' E/ B  X( w& z& f7 W! e* k
*/
# B( J  J  F2 }5 h6 R& `* A  zMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 C. s! E- C& |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 y: w! Q1 [' K
** Configure the McASP pins ; h5 c. `! A: D# K! e
** Input - Frame Sync, Clock and Serializer Rx
$ o& h4 B3 ^/ \7 T** Output - Serializer Tx is connected to the input of the codec
' `6 Y$ g4 |* |7 X8 \4 R*/) x, j- e& q0 I4 X! c3 N7 y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ J* L2 o( x6 c# k# P& U8 ^8 O, k7 e
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));0 a5 |& }' ], v5 X
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( |6 u: t0 G  |+ T- a| MCASP_PIN_ACLKX
' s6 ~$ U. F8 @* p| MCASP_PIN_AHCLKX# h: s+ X" M- h' {1 h* u3 c
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& U' @/ J" i( Y( J1 h
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " e' i# p7 n* H  T; }/ P* ?# a
| MCASP_TX_CLKFAIL # d3 L0 W7 z- m  n; Z" `
| MCASP_TX_SYNCERROR
& f' o1 R2 y( B/ G: h| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( [/ C. s" c: }% y9 v1 w* j( S| MCASP_RX_CLKFAIL7 B$ E9 v: I* n) Z9 U
| MCASP_RX_SYNCERROR
: q0 L" |( j' o& f' k2 f" |3 W| MCASP_RX_OVERRUN);
* G: n0 P. u. z6 r3 A}
static void I2SDataTxRxActivate(void)
& e6 V+ ]$ p9 H3 D) [1 p9 h{
, `1 ]+ ?1 Q  Z& n+ g3 ?3 S/* Start the clocks */9 X% @( C1 T, c
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  a6 G- x8 E9 JMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' d+ k- ~' E$ ~+ D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) Z8 ^6 e+ C2 I* B, a# xEDMA3_TRIG_MODE_EVENT);9 v; N- O& k( j' \9 b4 @: G: l/ _! D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ g; X7 x9 Y; D& }  W% u
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 y( S; }0 y9 P6 p1 IMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: O( \; R5 N# f" v4 r$ AMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ c* P3 }+ b8 w# G8 O! jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 @$ T3 H; D3 k$ Q" jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 h% G( [  O2 U1 \+ U" o3 s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 W. q- i* l% a5 I- g9 o2 W; e
}
+ J) _' A4 r: E8 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* f# k" r) H6 R+ O! N0 T% O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 20:58 , Processed in 0.040681 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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