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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10370|回复: 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,, K) D7 ~5 w' b9 D1 [5 T* m5 G
input mcasp_ahclkx,
& B; E" N% a0 x( dinput mcasp_aclkx,4 ~8 r# _1 j  C7 c1 T* K3 d
input axr0,
/ w0 ]% x1 Z9 N7 I; m( d0 P; I/ W
1 h) e" @' ~2 Z1 houtput mcasp_afsr,# ?! G+ f* }& }- f- O2 y0 a8 s
output mcasp_ahclkr,* G$ f  ^, m% m% w5 [
output mcasp_aclkr,! M% A& e$ f6 L$ l
output axr1,
. E  ]6 A1 x* d$ F3 }
assign mcasp_afsr = mcasp_afsx;$ l$ ~2 N/ S$ z$ q$ t) Q" Y
assign mcasp_aclkr = mcasp_aclkx;
7 Z( M) S& x' @( T$ \assign mcasp_ahclkr = mcasp_ahclkx;# T9 b; Y+ i5 n3 ^
assign axr1 = axr0;
9 x! q9 |- P+ a9 X2 T7 O! p0 Z
+ n% X! u* `4 ]% L& K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: A" k$ H  a6 W
static void McASPI2SConfigure(void)
3 f  g1 Y  d& e/ L# G6 K{
9 s( Y  F; R# |McASPRxReset(SOC_MCASP_0_CTRL_REGS);0 Q- \* G! |  _2 b, U  K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 c1 S2 l8 H( C* K- u% X" D  ~
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& v# z# g. D' ^2 ?# W3 ~  `: C0 U
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) f- N, Q' I( m. [McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ K! |* A$ F' x9 d# ?4 |MCASP_RX_MODE_DMA);! U- }/ X" A1 J. K; u
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 \8 O3 x8 |3 ~+ K
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */% A# `) `" [2 {( Z  r; G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 g/ a& f& Y0 VMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! b6 i- n& J! o' {. x! \% D  U
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * z  b$ v* G+ R7 m3 ], r
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, `9 \, z% t! \9 p$ {McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& x: u) I: {; o6 {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " H! v. l. A/ n$ g1 X% b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 a4 G) q8 e* M  Z" Z1 Q( ], a
0x00, 0xFF);
/* configure the clock for transmitter */
  |! b: z& Q3 X' N* y% [- R* s1 IMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( W- Q8 I/ ^7 o. w" `9 gMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - O* n4 P3 R  k9 K
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. N! [  c# ]' D0x00, 0xFF);0 w4 l0 h# E, z2 p1 e. i: ]
$ w3 S# a  T+ [- a- W" n
/* Enable synchronization of RX and TX sections */
: m: P% R5 d0 \$ T4 \, |, mMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& F  G" [# S( k/ }' q6 K( ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# M) H& y* O+ ~6 [1 N$ ~McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* b  }1 s8 x: F5 c** Set the serializers, Currently only one serializer is set as3 m0 J9 J* o7 V2 ^1 ~" Q$ a: Z* X; P
** transmitter and one serializer as receiver.
. y3 y) k9 z( T*/) l; Z1 E7 I! e+ B( {
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);! l; g# @5 {, ?4 Z) H/ R( v% g7 X* b
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
+ w/ ~' F9 R5 o8 c, ]** Configure the McASP pins
9 k0 [/ U: }# E4 i( ?6 b** Input - Frame Sync, Clock and Serializer Rx
9 ], B2 d9 C% w0 M. ~** Output - Serializer Tx is connected to the input of the codec
  w4 h# }. e( w7 `*/
9 f# }1 y8 l" R% `; q  wMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);0 \1 n; S2 K5 V* L' s9 K- o8 K7 l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 J9 b) H! e7 C0 f$ D! U" a9 P/ pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 O$ E2 h, \2 a. n7 f* I8 ]7 U7 J
| MCASP_PIN_ACLKX; i8 {. w7 C) A0 l7 i- [0 l' m
| MCASP_PIN_AHCLKX' q7 D( i$ G& J; a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" T: |1 ~$ Z8 r& jMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 F& }% k& B; P4 W5 H  q" r6 b* ]| MCASP_TX_CLKFAIL
1 Q! `* R0 Y5 o" q0 X+ d* j7 O6 H| MCASP_TX_SYNCERROR$ g2 F/ q9 B. W3 Q! M' X" U
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' u! a$ Q) Y; x, g( I/ K
| MCASP_RX_CLKFAIL
# J2 _6 {6 ^6 X+ q$ I| MCASP_RX_SYNCERROR
/ b! p: L. w4 M2 F5 P| MCASP_RX_OVERRUN);1 o: T7 _$ J+ b0 N6 l
}
static void I2SDataTxRxActivate(void)$ s3 {9 d& W0 V
{- D7 q0 p  r( _
/* Start the clocks */  n+ J. E4 R8 d( N1 Z; m/ D
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 V7 y. o/ f, j/ XMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 t7 @- ~- Z: H3 t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; v. `8 R5 D3 l% k* J0 P9 n1 qEDMA3_TRIG_MODE_EVENT);
6 U- ^3 w. I2 J$ J/ ], t3 I- P  TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; {! c2 _: e7 A8 l+ S: LEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) G$ p8 h1 E$ U) TMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& ]6 K0 c, e  w" w! S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: @+ @1 v: j' E1 q7 _
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) V$ F$ I' S8 \. s2 BMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 ]' F) h0 n. w- F$ @, ~$ ?McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  g: S; T0 ^1 {6 J* |}
$ q* Y6 P# [- N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  a3 l1 t/ [# [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 01:31 , Processed in 0.040090 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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