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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12019|回复: 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,1 D/ ^$ j, E6 X0 R5 X' \' C5 D5 i
input mcasp_ahclkx,
9 `( U  b: l8 n2 g$ |* ^. D7 s" v8 yinput mcasp_aclkx,
% k3 B1 s/ }+ {/ ?% I! |input axr0,  H- X) {2 E& p3 C
! ?% U$ }) D! a+ d, v
output mcasp_afsr,# w# p( Z5 A9 K* ~1 I, y# P+ K# J' e
output mcasp_ahclkr,- \  E8 o% z) w# a6 r0 F
output mcasp_aclkr,9 W  Y8 `- @8 w( x5 i
output axr1,5 K4 K( {6 C  M3 {
assign mcasp_afsr = mcasp_afsx;
# s: Y. z8 k5 L* f; u0 @assign mcasp_aclkr = mcasp_aclkx;: x2 a6 p. a9 Z* `* W! C2 d8 P
assign mcasp_ahclkr = mcasp_ahclkx;4 J6 _: T2 x7 t& a7 M: ^
assign axr1 = axr0;

. Y7 ~  g+ ?9 v+ Y- \, u* c, c# j/ N1 N& K* O$ p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 |1 T, q: O2 j9 b6 s/ H; L
static void McASPI2SConfigure(void)0 H5 D) T  I  L8 B- [' r7 E! \1 k
{/ q7 R/ H& |1 L! ^
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ U) }9 u+ x9 c7 T- MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 r0 \. c  L/ c- }  f* M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 Q) e' g0 n2 Z# ^) R, p& I" u  U% v
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 s* A2 w* h5 b" O* e) z/ a. c
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& ]8 A- O, r# x& S- n* \5 x
MCASP_RX_MODE_DMA);, V2 W: N& d  B" h9 G6 a
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 o% A2 a# y* t4 R+ x8 z* h" ~MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# @" g5 B9 J9 G4 J, M+ _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 @+ M0 Y4 T. pMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 [0 D: i- n5 k/ y7 R; a' k) z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + ^" W- `8 D) y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 ~# G4 n- f9 f) H( Z  T% j" ZMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ J4 \8 z/ R  S3 Z2 ~( w' s  D
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 O! Z. v) T' l- tMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 v. c- }1 H" A, j0x00, 0xFF);
/* configure the clock for transmitter */) M% x# T3 s. D. v
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 z' G# r: R: l1 |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   D% K# f( p" M6 t2 O2 r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, G  x' Q$ c+ v' Y2 R0 S' G& N
0x00, 0xFF);+ e5 S/ T$ n9 `' |# i4 p4 r* J
  m/ x/ K3 B* z
/* Enable synchronization of RX and TX sections */ ; d; u0 |/ p/ @: w* I4 v. L5 h; b) L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 C5 k1 H- t% C, W2 [& UMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);: H2 b3 x) H, b* v9 h
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 e6 _& |3 Q3 e5 {" _7 b% X
** Set the serializers, Currently only one serializer is set as
/ G8 Q. g0 c% O8 n* W** transmitter and one serializer as receiver.
# c) K; F* ]. Z; k5 p: Q& r+ c7 t/ y*/" s/ A( p8 L1 D$ S: ]& _- O
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 E# _, Y+ m# A; J- w1 OMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 c5 i% o5 A6 C4 z! D- ?** Configure the McASP pins
# ^4 o$ z. p' b3 s% H* d: Q6 r# `** Input - Frame Sync, Clock and Serializer Rx- ~3 {8 f" O% l; I
** Output - Serializer Tx is connected to the input of the codec
* o$ {! L5 P) W' [  d*// s7 B) ]& G. \
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- U5 }3 z* x5 L, [; q7 Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( M  q2 Z8 F$ A
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ e1 b  j8 q; B5 b8 o9 Y8 X2 k) B| MCASP_PIN_ACLKX& i/ m0 e. U& G& r5 I
| MCASP_PIN_AHCLKX
: n/ `0 a; J8 h2 _3 {1 V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ u6 H1 Z; C9 {8 o9 l5 z8 ~2 F  b
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 T4 O) ]# }' w# y5 j1 G| MCASP_TX_CLKFAIL , X0 I0 c  S, H1 C% e* [' c
| MCASP_TX_SYNCERROR2 w& x/ K% |! r5 G6 e7 }5 V8 y
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * R- Z  c# @0 s
| MCASP_RX_CLKFAIL
' g; c+ m% Z* \9 W- \. N| MCASP_RX_SYNCERROR % ]7 t- V3 q) p1 e
| MCASP_RX_OVERRUN);
" U$ P& _, L. ]0 |7 {, d7 R}
static void I2SDataTxRxActivate(void)- I7 o; k, l  Z+ S6 R/ ?, {9 B0 {
{, I  q. U2 Q' e0 w3 K' `0 M
/* Start the clocks */% ]' d2 E+ Q3 [$ v8 t  Y
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# s- d4 E+ ^9 i; nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 y( _2 S; r- p  M: L) e. G# M$ O+ VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 \# c1 x* V4 ^0 [6 uEDMA3_TRIG_MODE_EVENT);, E3 M/ y6 J2 q5 G7 c& i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- y6 t$ w1 R* P/ v7 `5 fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ `+ H5 P! T2 l" d7 N( Q% CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 M2 q, L$ _9 ^
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* @8 [* m5 e: a6 gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 B4 m7 e  I4 G* bMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. [2 h8 K3 f9 p) S: G# _6 `/ `3 `% WMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 q* Y, r  V% r+ Y4 f! H' W}
9 D  U9 j* T9 W% n0 v9 b/ O8 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ x' Y. A  M3 V5 t* I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-24 01:48 , Processed in 0.071626 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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