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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12354|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
( I. d0 h8 k6 M( j9 ]; J1 ~input mcasp_ahclkx,. J% Q4 M& l# C; o5 t- @* g6 f
input mcasp_aclkx,
4 ]5 b3 h( F. o: W  Y4 _8 Uinput axr0,# {* U3 X/ h6 w3 p# ]. u1 D

8 Y# _' N- |2 U6 m) V6 Poutput mcasp_afsr,
4 ^# U7 L1 u# T: I6 H. q/ |output mcasp_ahclkr,
3 Q) }. u( D% T# A# h( E8 Routput mcasp_aclkr,
- [! D4 X6 L' n3 U9 f6 s8 j- Routput axr1,3 D3 m1 l+ c7 f9 P) L! G5 `% K
assign mcasp_afsr = mcasp_afsx;
! i5 O2 o2 R1 R+ `/ L+ ?3 O6 |) e# g$ Lassign mcasp_aclkr = mcasp_aclkx;
1 q- @, X; t& d0 f. x& |  O0 f0 Dassign mcasp_ahclkr = mcasp_ahclkx;
: M0 \, t$ x( V/ U6 ?/ h2 @) Z3 Xassign axr1 = axr0;
0 W3 ]6 t8 y  I# C4 E* Q

: [9 W: [: e; A2 _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; @* [/ G) l. B& i7 x& E6 G
static void McASPI2SConfigure(void)
1 E% _% ]8 M# s9 B{
9 ?# _: K  t- L) P; AMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# t6 h- B6 a/ X! Q" q, QMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ `) Q0 O5 _: l' Z4 JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* r- Z) w9 N. a: S  m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 p# h, m( N$ a9 p1 N
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% t( `/ G8 A% O/ NMCASP_RX_MODE_DMA);
4 Q: z# U: h* }8 p: E8 W6 gMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ o) V" p9 U  A5 {  F0 U6 C2 _
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 B5 T% s! u. s
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- M0 J2 t4 T9 l4 s  ^$ IMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 |; E$ }1 X% I% f
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 2 ?0 l! g# {9 R) @) x/ `7 w7 z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 e% Q/ t- J/ d& C3 j+ v" D/ }$ NMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 \0 o* O9 P, d+ t8 S. JMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 }9 ~" E2 d( g1 ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' w. R5 H, |: s. z
0x00, 0xFF);
/* configure the clock for transmitter */
& _# G/ l0 E  o* x- l$ d  Q/ GMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 `' q8 L1 \) J0 Y& N% i1 {1 e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : ]+ n6 C7 K; Q/ i  r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* X6 H. R) T8 O9 {0x00, 0xFF);
6 ~( ]# ]. |0 `* ]# t0 I
2 x: a( [( O  _; G& R/* Enable synchronization of RX and TX sections */ & B" m) w+ j3 y6 _1 d6 a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) L9 @4 g  h, H2 fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. @/ X7 X5 x' {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 T5 i' J9 \% U( g' j** Set the serializers, Currently only one serializer is set as
( R, m* H& P% }. @2 [** transmitter and one serializer as receiver.8 M. M/ v' ^; V+ v/ w: Z( N' }
*/  M. n: \! i+ X
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 n: Y9 I" H# _' h
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 ]8 N  k  H7 \) P( _2 a+ d; H7 z& c
** Configure the McASP pins
) V  Q7 v* d9 l5 l! O** Input - Frame Sync, Clock and Serializer Rx' E) b2 y# ?2 m; T$ q+ D
** Output - Serializer Tx is connected to the input of the codec 5 L9 A% g- j5 {+ \  z$ {- t% j
*/( M# m3 V7 Q) b0 \# v1 U5 c: X
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' @* o. J( e# |7 DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% T& y( J# i& d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! G% J2 r# Z$ O/ z( d5 O2 p% E/ z| MCASP_PIN_ACLKX
$ @/ `; `, N" N9 Q5 C! k! ]/ S| MCASP_PIN_AHCLKX
2 R6 y0 v( ~% ]' o2 \0 x| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 J5 r4 u  K% s( H! U) ^
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # y) Q& n5 c* W7 t9 R% e
| MCASP_TX_CLKFAIL
! F/ _, \, e  j8 R% R" K6 L6 a1 L| MCASP_TX_SYNCERROR% B  |7 R! B! Z( [, u' t1 ^
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 [# U+ Y/ s( O, m0 b4 O| MCASP_RX_CLKFAIL3 d! k1 i' \8 l, X) \5 H$ g
| MCASP_RX_SYNCERROR
5 B3 F$ K# t3 h; m3 R| MCASP_RX_OVERRUN);
% b' w( [0 A0 ?5 S2 G}
static void I2SDataTxRxActivate(void)9 t8 M4 a9 g$ N5 ^" R" F# n
{
: V6 G5 @0 N. u4 m; g/* Start the clocks */: v, |: l/ [0 _. p  s" T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
& b! p/ y5 k$ `% }: BMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 a: m1 D# e3 \8 g: }* j2 @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. [% P5 T( Y# t$ ]8 J1 h
EDMA3_TRIG_MODE_EVENT);" J6 M) a1 u6 u% y9 \0 q1 d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( X9 Q2 [( W) W/ x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 _* @$ S5 q  B8 w% H
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( d# j: `& w! ?3 f: cMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 s$ K; e+ H: w9 t8 o1 d: S- `7 ]$ T
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! h7 K5 ?9 ?# k2 f! N  S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; n# C! y3 V3 n) A& j8 L% o6 i( H) MMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ P6 M. d6 |6 g6 o" u$ O* T}
6 C& v; ]; X: Z: ^: J9 o% b* u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 z. Q1 t+ w/ w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 12:17 , Processed in 0.044580 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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