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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9805|回复: 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,$ |" R, {) q5 X# v
input mcasp_ahclkx,
  j2 G* O: ~- E) X. {7 Zinput mcasp_aclkx,; l+ o1 X1 N! N6 H
input axr0,* X. d- r0 i/ x& m) d

: j6 n! ^  E- \  L! s( ^/ Eoutput mcasp_afsr,! n4 ~9 @. d% }
output mcasp_ahclkr,
5 G% @7 M  U) O9 |$ Goutput mcasp_aclkr,
0 L, O3 ]0 ~8 {) voutput axr1,
- ^0 s$ O) Z4 x. Q
assign mcasp_afsr = mcasp_afsx;
2 H1 u6 l1 {: @  L1 K0 A% g' N& A" Aassign mcasp_aclkr = mcasp_aclkx;5 A* y& R4 y' D( b. X! J9 Q
assign mcasp_ahclkr = mcasp_ahclkx;
- n2 V/ o, C2 G0 uassign axr1 = axr0;

! ~. a4 k& k6 g  [& {3 r
; a0 Y' E1 A* d2 `$ i3 v" W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: q  s7 x& Y# k9 V0 I3 \
static void McASPI2SConfigure(void)
- r9 Y; B+ s8 T5 B{
3 L! }/ q. [: q$ ?% t* zMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
) G6 J  G9 a( g" [McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 O3 R  x) t  b! X$ ^McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  F1 l5 X; f, Y1 s4 tMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 ~( y1 F, u! l. e( z2 G2 U( W( C7 z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 P6 L1 Z; i7 }% i6 ^' RMCASP_RX_MODE_DMA);
( N/ g, g; Q6 V! iMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; R3 X6 L; r  E& ^% _- dMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: B( ^0 u. q1 T/ n1 O- ?McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 H; v0 {/ D' H8 t! ~8 A7 x
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; V, b# {& W3 M% T2 r9 {# ZMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " `6 I) X8 @9 [& V6 ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( a$ j8 y: S' P) d6 A+ u% h
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) F' Z7 Y9 R' p  IMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
+ N! |- C) `5 |# q! T9 i6 b; `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 }/ b$ J+ d# I1 @) o+ J- U
0x00, 0xFF);
/* configure the clock for transmitter */
% w7 |6 j: u0 d* t# ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 v$ Q2 E% Y. ]0 d1 _8 |1 TMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& l& Y4 ?5 R; b3 ]) n! N; V- X" aMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
  a5 }/ o% w6 ]0 D7 y4 B0x00, 0xFF);
; [* }7 d2 l  P. k
  K4 F  ^+ z+ D. K# u) e) v/* Enable synchronization of RX and TX sections */
( b* o2 A1 ^5 d$ e8 ]* w6 J" oMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* W, C! c. l% AMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ R) t6 [) ?% |% X8 M9 o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. R- t" s) r6 `( l** Set the serializers, Currently only one serializer is set as. @. ?5 I- s2 y$ o% v3 x  `
** transmitter and one serializer as receiver.
; j8 _3 o5 t3 T7 @*/
& ?, w; @6 I% C& r6 R# N  MMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! _; I- P% `4 _( jMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 s9 w! M- y7 C- a# t% ^4 W
** Configure the McASP pins 5 A( w6 |( Z; D. j  M
** Input - Frame Sync, Clock and Serializer Rx
: p7 q2 V% i6 B& z+ h6 G** Output - Serializer Tx is connected to the input of the codec ' b6 T% d" z, _: }) X; Y& w! i
*/
2 U2 p( f0 d5 e+ X8 sMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) Y5 h2 Q0 d0 D/ O! R4 B! oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" D8 Z4 f* t: C% S6 F: N3 `
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 K! ^1 k5 v3 k: p| MCASP_PIN_ACLKX# \4 F1 T/ I  s
| MCASP_PIN_AHCLKX
6 e  N6 ?- h, x7 c4 P. k# L| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% \1 [$ y6 r2 ^" ~; N) I- CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ Z+ |: X% P: z2 v0 p9 V8 D| MCASP_TX_CLKFAIL
2 Q# @2 }- k( x  Q5 A1 m/ v| MCASP_TX_SYNCERROR4 I, f2 l  n: y8 {. C
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 E# {" [: T9 H: S( F# ~" J! @| MCASP_RX_CLKFAIL$ [( F+ x, S5 d( j5 U5 R6 }
| MCASP_RX_SYNCERROR
* F# s0 y( K" Y$ x/ l; X8 l| MCASP_RX_OVERRUN);5 F$ T0 C( u3 Q- N
}
static void I2SDataTxRxActivate(void)+ G4 Y! @! V3 H' T9 |! Z& Q
{
. l6 Z3 T) P# [# N6 ^/* Start the clocks */
0 q/ A1 A# t- Q7 EMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; V$ j; n% y; v- B" V) {
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 ]9 N- K# Y+ \1 W" y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; Y  p1 r2 ]+ g$ u1 kEDMA3_TRIG_MODE_EVENT);
# n' Y7 m9 D0 b( ^" D' REDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ; u( m$ u- p$ A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# D0 X1 S  W& g' U1 `1 Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" f6 {3 g: `8 M% f$ |7 j( w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% A! ~: u2 u$ }0 w1 Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ X4 [) {9 c, t, x8 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' y; }& O& r9 r( O5 }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: w# `2 Y7 {/ A% _  n/ P5 f
}
& w. E5 t% _& u4 N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* D9 }! T' i' D5 k6 Z+ V% _
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 19:14 , Processed in 0.038084 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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