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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10954|回复: 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,/ q9 D. l/ z9 G' Y( W0 P0 H* \
input mcasp_ahclkx,& l! ^, y6 ^3 ?" Z5 E
input mcasp_aclkx,! x5 ^/ v% Q. a8 V7 t
input axr0,( g. h; c. I$ k+ B  w! t" a

8 d$ y7 h$ F3 Boutput mcasp_afsr,
. e& ]/ `4 Q7 q& o, A: loutput mcasp_ahclkr," K  i4 _+ h: g/ n7 w
output mcasp_aclkr,
% i+ i  m$ c9 t7 }& loutput axr1,0 o7 ^( W- |9 h9 P
assign mcasp_afsr = mcasp_afsx;+ b; m# r# A# L* [  t7 ?
assign mcasp_aclkr = mcasp_aclkx;
4 U0 Q: R  L9 [8 sassign mcasp_ahclkr = mcasp_ahclkx;/ b/ b0 n/ |0 l, i/ N' T5 v
assign axr1 = axr0;

6 `' |* i: a3 C9 r4 R, F5 a; q( R1 D# p4 H# f0 _% \2 T) ~1 q5 _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 W: y2 Y/ ^0 R# _$ B( P
static void McASPI2SConfigure(void)  \' K( h# i; Q
{& [3 m9 I- t  ]- G7 M% G# N. \$ `
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 f8 _( L+ o7 E8 L7 P# D& VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ U/ M% F8 [- L+ E' f* a* v  w9 kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ `2 @6 _2 C8 V9 x3 cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 m9 y5 M8 \' Y* t2 t
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 g9 X% d2 p9 h8 WMCASP_RX_MODE_DMA);
' t7 I! e& @9 QMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" l- D( e. N4 h( r) X( HMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, n* ], B2 @/ f1 bMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : a* T5 }9 T7 i8 `* t) Q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: h# K0 `* r& I' J9 tMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   r) R, S% O5 Q7 b
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* s" x- m1 _; ~; p
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);" k: l# }; p1 }/ I, }+ r" c
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' D9 T; e; ~1 X6 i
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% T: _) b$ k, M& u4 r3 {
0x00, 0xFF);
/* configure the clock for transmitter */  T1 {2 s1 s' V% `  i1 ]
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 l2 d6 _; @0 X' I4 `McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( Y9 j' o( w6 bMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; F/ D9 Q5 y& p' q  e2 r8 F0x00, 0xFF);
3 o/ k! V& e; P* J! e" g( q4 @! ?
; {- W- F/ s. ?- d9 p! w/ a& n- h/* Enable synchronization of RX and TX sections */
. F+ @3 d; ~# f8 i1 w7 pMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 _: c/ x. D/ |, O* W7 j
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
* \3 g" I5 @- eMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 u7 S  b  a/ l0 Z$ \** Set the serializers, Currently only one serializer is set as% n  t; w; ]+ ]( f% |
** transmitter and one serializer as receiver., G/ i7 v; J" l% t6 }$ z
*/
: q: f1 u) ~* x8 BMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
- b( Y+ k+ O1 Q! `% AMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 z9 u2 A# ]5 s2 Z7 T
** Configure the McASP pins 0 f1 c- j' B4 x2 Z# H: R8 m
** Input - Frame Sync, Clock and Serializer Rx
  T! S7 `; s4 H+ @6 U  X9 ]** Output - Serializer Tx is connected to the input of the codec ( w# f8 H- }  G
*/0 A- R& V, z8 q) O% u* a4 Q8 k8 L0 _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) Q, u, l9 \" J; E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% Y7 M, ]) {4 n! Y  [0 |9 H7 `
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# l0 h& Z3 u6 `- f. r9 x$ s| MCASP_PIN_ACLKX; \  y9 X7 N% ~$ D4 W) l# X- r6 E
| MCASP_PIN_AHCLKX
% H/ Y8 h2 }- h3 G" }; n& H& r& |6 @| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, {- Q7 Q% z4 S" L, RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) j- W, v0 H: e$ ^! B0 ?
| MCASP_TX_CLKFAIL & [3 r8 Y8 n# a9 `& m0 e
| MCASP_TX_SYNCERROR0 W# H* v1 }* x* d; z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! ]) v7 _7 [( ]" u
| MCASP_RX_CLKFAIL
9 P- O1 r4 x; c$ F+ B| MCASP_RX_SYNCERROR
$ ^0 v; i$ {4 C3 a+ u' v| MCASP_RX_OVERRUN);
; S( W) O* H; m- b! i" y: c! P  W}
static void I2SDataTxRxActivate(void)4 g! O# p( x( z
{5 j3 c; K# T0 N
/* Start the clocks */
/ |1 X& h* J9 f* c: J/ o2 u3 o0 S0 kMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ g; A: b% N# kMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 q: _" Q( R$ U! S- ^8 ~: yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- I4 y# [; H0 {# P! sEDMA3_TRIG_MODE_EVENT);
! Q$ l! [* H; [4 ^- CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ _4 u) i* A8 }8 G
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) [; P& {9 k/ N6 V, S8 w0 r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' E6 |' o: ~& `* L& S' pMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 f9 C: k7 E2 f9 f4 L# ^& q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) E3 c5 G- t7 \- I* Y7 yMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);: d- i" V: ^; k8 \2 J- V: H/ i. R- h
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 w1 W" J7 [" z5 P; O
}

+ |( r0 \/ Q9 u. G( Q  F! T# Q0 W4 {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( [. A$ D* n& _2 o. a$ J. {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-20 08:29 , Processed in 0.041135 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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