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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9635|回复: 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,
" D6 ~& q7 J2 e, xinput mcasp_ahclkx,! n3 t/ u; q" Q: B
input mcasp_aclkx,& j% u+ e) w/ Q6 Z3 f8 y
input axr0,
% {2 \8 I( S+ z4 M
+ E" T9 i6 Q3 o2 y: ~: f$ @. Q! Qoutput mcasp_afsr,
. t' w" d# Y0 t6 z7 }% j' i9 Houtput mcasp_ahclkr,
6 v$ j5 j* K; y( f) r. [output mcasp_aclkr,4 p1 O- i2 z. d- y2 s" S: ?! D( ~' n
output axr1,
4 O4 h( y* \' b3 ~( m! \
assign mcasp_afsr = mcasp_afsx;
0 {* g8 i0 y6 q3 g. Y! Nassign mcasp_aclkr = mcasp_aclkx;
1 t: @* X- \. k8 i9 Iassign mcasp_ahclkr = mcasp_ahclkx;" k( w+ _0 |& G
assign axr1 = axr0;

0 t/ A- }# e, t) f/ U
$ j4 G( s( }1 ]
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

: ^2 M, k& D0 [% f( S5 y! W. X% L  T
static void McASPI2SConfigure(void); H8 b! t2 C5 [9 `) d* p* m
{3 e6 S2 J( q2 |
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ l" D4 B: f0 Q1 c8 N* dMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& [4 l9 \9 z7 _$ iMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: q- W. q6 M; [' k- ?- uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# m2 a  l. r8 O4 w5 e& l4 y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: c. j7 q1 |3 o1 YMCASP_RX_MODE_DMA);
1 \6 P, _& F4 L* t8 o$ |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& ~% I$ ?% W( Y% k/ rMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
& w! \. @( Z, a. o8 P, ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' H9 R, t: |# n
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. \4 w: ~* ^8 f3 _McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# U" Y- o9 o: e9 u' ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( u' |+ A6 F4 q* V# ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 F# m2 O" @0 i1 Y, c& V: P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ ~7 \6 r' Y* @- S" g& p) fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 Z% r5 D% o  E3 g6 l! C+ M3 r0x00, 0xFF);
/* configure the clock for transmitter */
0 n: {* O# s' G2 GMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' Y4 \( R5 D, c. r+ M6 o
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' a' i+ H2 G, Y6 T4 m; ?
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 m' s0 d* E8 u. M. f' D0x00, 0xFF);
+ G! `: u3 s3 o7 f4 |
/ I& V' p  r# a! x2 V2 ~/* Enable synchronization of RX and TX sections */
. w1 i1 {/ z4 PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */2 x  |3 [" j( c( u
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ \! W- ^" O) r5 j$ W3 aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' \& r" W* o% H9 z** Set the serializers, Currently only one serializer is set as
; o$ ^  |+ X8 c* v8 V** transmitter and one serializer as receiver.8 C; y, ?" h( P' Y) H
*/
% w, f8 S$ S* `9 cMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, e+ `( K5 \9 d! k% H( cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" v" \- |1 u" c2 k5 V** Configure the McASP pins
6 }- J3 V& f7 N) V4 R& u** Input - Frame Sync, Clock and Serializer Rx
' P$ G, r7 ?- z: [** Output - Serializer Tx is connected to the input of the codec 1 a3 ~/ _( z! w0 r9 v4 {
*/! Q4 R2 v. _& R* @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- E& w' W! n9 F; q
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! }1 I5 v, H  K7 v$ X
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX! U/ F: p- W# \) ]1 |, H
| MCASP_PIN_ACLKX, P7 G& b$ z  l% p: L
| MCASP_PIN_AHCLKX% T5 j8 u: C9 q: \5 W, R% v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& ?0 [9 o- L/ }, G8 _5 sMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 2 P0 c, O; s; |# `: V
| MCASP_TX_CLKFAIL
( X" \1 G4 p/ F2 ?: |- X" Z5 M| MCASP_TX_SYNCERROR
  N% C( A8 \  l+ L| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 S; m6 q4 U0 X& X! @  Z3 Z
| MCASP_RX_CLKFAIL* e. T% I6 z5 ^$ [9 @4 C% U
| MCASP_RX_SYNCERROR 2 U1 m  s+ Y4 I6 P0 p9 y$ ^0 g
| MCASP_RX_OVERRUN);5 r7 P3 N) @$ B
}
static void I2SDataTxRxActivate(void)4 }" k( n1 Z7 |! K8 [" x
{
8 b5 n% Z: r, Q. [2 g0 O/* Start the clocks */
: S  c3 h( Z# d' I% ~1 {McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 Y2 l' U5 O! a5 Q9 T
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; J9 V$ a% Y" H# h, VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 x+ `5 d, X  c5 N4 I4 e" }* W' A
EDMA3_TRIG_MODE_EVENT);6 z7 {6 |6 o$ e8 u2 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# _: M' Q. q6 S0 A( I1 y0 ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 h1 d1 [. u+ z4 M' @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% |7 N2 t2 j; z' k# v3 CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 _; J* c- ^0 W) t2 C/ U8 \/ wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// Z* r0 E' B1 h9 ^; I
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);; P9 m( [& |; }0 d$ ^2 t6 Z7 m" j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 G6 Q9 ?8 Q7 Z) V7 P
}
+ V! L% l5 Z$ E% v0 k6 R5 J4 j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. E  M0 Z$ t6 ^+ H" t; ^; x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 23:29 , Processed in 0.040249 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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