MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9503|回复: 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,9 P( Y9 ~- d" @: S1 J* p2 p
input mcasp_ahclkx,, {/ W& u& [2 ]  ?
input mcasp_aclkx,; `9 Y6 P$ |* d$ g; U* k3 y8 R
input axr0,
- `/ K9 a9 i8 y0 R9 {& Q4 j
  `* [. p0 O; U* l! m" e- M/ ?0 Noutput mcasp_afsr,4 c0 D  \; G7 v
output mcasp_ahclkr,6 ~# C6 D9 o" W4 G6 g% A! h8 m
output mcasp_aclkr,* u9 n  p5 T5 |
output axr1,
6 W: g0 B6 z( {+ g" r
assign mcasp_afsr = mcasp_afsx;8 V4 n, B: U2 D) g2 {) {! [
assign mcasp_aclkr = mcasp_aclkx;
; E" N7 H8 r8 bassign mcasp_ahclkr = mcasp_ahclkx;  d( K9 l6 W/ ?! i- h
assign axr1 = axr0;
. j9 G; K7 ?1 j# p/ p

7 A0 Y+ G! V8 G) j$ P. J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

1 W7 d4 P* W. K
static void McASPI2SConfigure(void)+ m0 H; z$ y% h1 j7 z; k0 }
{
, `; Y1 y; R+ [6 a/ ]6 SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
. d+ w9 r. D0 \7 OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& w: |2 Z( l& W, AMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' r  n# A7 t4 X- k6 ~* yMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* E' l7 g3 g' `7 {9 rMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 p$ i9 y6 F, H% X+ v3 ]MCASP_RX_MODE_DMA);+ C# ~7 D$ w8 f" m) ~0 h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( x$ \0 s3 x- M5 x9 NMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% A+ G  N( ?4 g! @0 `" UMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # U1 D( i& ?" n' N$ E! h$ D/ O
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ C, |6 p+ R2 K/ U4 D' }9 `8 Z$ DMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, " N1 O8 L0 ?  H, Z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: L8 a$ b. r6 F, E, v4 }
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 x6 F1 a5 |* J7 c6 R& I
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 Y( @  K0 _+ h" O9 lMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: J& z" {4 A0 ~
0x00, 0xFF);
/* configure the clock for transmitter */
8 J! ]9 O- h9 ~: ~6 Q( mMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 X: _3 Z3 J5 J# zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! |1 I+ D" a: c- m- E' c8 @
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% J) l. M$ |. b5 r0x00, 0xFF);+ v9 i+ d% t5 ]
7 R; q, u  D6 ~( M: ~! t
/* Enable synchronization of RX and TX sections */ & J8 p& C% a- `& e1 f; T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ k1 X* `6 Y$ J. z0 S5 IMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, `% s9 j- o( u3 L3 V. D" ZMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' q5 r7 ~+ X5 b' [% `9 {
** Set the serializers, Currently only one serializer is set as
4 M  h+ J' V6 a7 e# h" V6 _; m** transmitter and one serializer as receiver.+ S/ F* `% U0 W, I( n! }
*/
6 _$ o# p0 h# ~0 pMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
0 J  @3 x/ X  ^McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: r! B/ w7 u. O** Configure the McASP pins
' H, j$ Y* K5 V, h3 c/ q** Input - Frame Sync, Clock and Serializer Rx# h5 Q+ O" T2 J0 Y  [# j
** Output - Serializer Tx is connected to the input of the codec * s* c5 ^! I+ \. [: I& X6 j  ?2 w  |
*/" i% Z8 k9 p2 Y' h' p) Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ z' X. L; C. }" oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ f, a, ~7 ~/ o* G3 K/ @; hMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ N- b- @, g1 q" v. K
| MCASP_PIN_ACLKX( r7 T# U  @& p5 f
| MCASP_PIN_AHCLKX
8 F$ l1 H5 e2 c; q5 b! s8 q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. o1 `  i( H4 B; a" S9 P+ B0 c# s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 T: P, W5 M6 g+ @; Q1 n8 Q| MCASP_TX_CLKFAIL 9 f: g7 c# q3 w3 v5 o8 d- P- E/ T
| MCASP_TX_SYNCERROR
4 j, Y4 n5 f" L2 q7 j1 p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- f8 z8 w7 |3 v) f( n2 t/ O| MCASP_RX_CLKFAIL
; x+ u* R# i/ R2 N4 ~2 c; b' t| MCASP_RX_SYNCERROR
2 H% g3 J5 ^5 Y| MCASP_RX_OVERRUN);2 [; ^  o! M4 m  a( g
}
static void I2SDataTxRxActivate(void)* q$ p0 S3 C7 c% D
{4 d7 l( x! p! {( I, N( e# D! V6 U
/* Start the clocks */
5 W: |( }5 ]! |8 fMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 I# w' W6 F8 y( F; f5 o
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
. V4 Y6 v# O8 a. l3 i4 PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: L! r7 }6 N$ X
EDMA3_TRIG_MODE_EVENT);8 m0 x2 Y( q4 T8 b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: W3 I: M! Z) ^$ Z$ K. Z1 r- V' BEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, @, G5 w* U2 b/ y" w- F4 q2 @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);; j, R- m4 ]4 M" b+ C5 `
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* N8 l/ L* F# U' I: f
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 a4 a3 i' I% `8 b! h! qMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);% J5 H0 k+ ?0 ?' N8 ?6 _
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. S1 M) b- J- v; y2 O, V
}
! |8 @. p$ j0 d4 ]7 K' _) ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" r1 K' k; S* V5 A2 u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 07:11 , Processed in 0.042401 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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