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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10933|回复: 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,! c- W/ [2 J, t- _! |# n
input mcasp_ahclkx,# ^4 r9 \. i8 T) r4 R2 W
input mcasp_aclkx,9 {% _& c+ _+ w4 D6 i$ h" f) v
input axr0," A, a* o( R! Q; a3 c2 C

8 O4 E7 @/ x4 s. routput mcasp_afsr,
) i- A8 w& l  zoutput mcasp_ahclkr,- ?: D/ F2 R6 |9 V; T* m+ A
output mcasp_aclkr,
3 k& x; k# H. \$ \& {6 Koutput axr1,
5 n" P. K1 J6 x7 k1 F& @& F3 [: @
assign mcasp_afsr = mcasp_afsx;4 F0 x& W, b; A; s* F
assign mcasp_aclkr = mcasp_aclkx;- M4 n. H. `8 D8 C7 M
assign mcasp_ahclkr = mcasp_ahclkx;" r0 s, y0 c. h9 t! w
assign axr1 = axr0;
. Y# O4 @+ o- ^/ ]
6 `9 L  b* ~" k/ M1 _& \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ S0 z2 w- z; @7 |5 R: F5 Y5 y) j
static void McASPI2SConfigure(void)
$ K7 ~- J0 i) f' o" y% [{# r( v1 v" I& K( v# z5 o
McASPRxReset(SOC_MCASP_0_CTRL_REGS);, R6 d/ _; d: ^: s; K* d
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  G# ^6 t/ y8 f; b% H/ v6 H- v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
5 u; j, m: r& d' lMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 i- A3 ^3 V/ G' p" e: b( }9 D9 k  YMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 I8 ~) X5 U9 |& M! F
MCASP_RX_MODE_DMA);3 j( a$ {7 j& n% L0 G
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( m! G8 Z( ^' r& h* jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* j/ H* Z  M. [5 @: @McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, h* u* F4 n# r; q# B" G! mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' P9 p2 z# |$ ~  ?0 ^McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& R& P$ K+ e) \/ |* N- o! d- {0 @; P- XMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 b, {  g( e, CMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: k& E, X' Q0 W% v8 m" v- M& j  f" eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & Y, J" i  A7 `* h5 O
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! u/ `+ ]: V$ R* K% ^% h& v0x00, 0xFF);
/* configure the clock for transmitter *// }) q4 k2 F% X; I
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 p' N4 V0 x* p. |( x% C1 p; x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : }% i* ]6 r6 G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: [+ D" l: g; f! B* x2 i" O
0x00, 0xFF);$ S4 X* P& i4 B4 \& K. |9 a
; _$ j* h3 v9 a& m% \" D
/* Enable synchronization of RX and TX sections */
& D; ^% R$ b& X% v( wMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- b7 D9 P) `* M1 R7 ~$ F/ y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! U- K- e# l3 F4 ~2 nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 K9 q$ {, }& [1 }5 G" Y** Set the serializers, Currently only one serializer is set as, y+ `+ N& [# `  D6 V
** transmitter and one serializer as receiver.
# p& E) e; f' E. t/ w* K*/+ G. o! ~# F& H0 [/ v
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
2 V4 g5 t5 v1 H1 v" dMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 z7 |1 S5 y  f2 i3 A, V4 B
** Configure the McASP pins 4 E9 l, h" ~  t. [
** Input - Frame Sync, Clock and Serializer Rx% i. q0 ^$ e: t, e2 w( {. e
** Output - Serializer Tx is connected to the input of the codec 6 h/ z0 e, p1 |$ A' ^5 }. o! K+ p
*/' v4 l+ A$ A6 Q& [2 a7 y; i1 B( @+ |
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ s/ g* D" n4 Q, wMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));; A) K3 E, s, P; s% f; w+ Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) v/ I( i5 Z  {7 l
| MCASP_PIN_ACLKX4 s0 |9 R' d) \; {- |* O
| MCASP_PIN_AHCLKX
( E- _3 \8 z( X' || MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, Q; d/ n/ x) v$ X, {( IMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 K+ U) @& K  @# W5 g| MCASP_TX_CLKFAIL
) l, ~( R+ c% k" v) j; Q' a8 m9 G| MCASP_TX_SYNCERROR
% L9 h) c, U# m, I* G' A: E| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + r' z: _( U3 I2 o. |$ K4 U$ @
| MCASP_RX_CLKFAIL
) I8 a9 q) D- z& ^, D8 m: W/ ?' B| MCASP_RX_SYNCERROR
' G) z; Q; W$ T# q| MCASP_RX_OVERRUN);, d- ?% c$ K+ Y4 a0 C1 `) E" n
}
static void I2SDataTxRxActivate(void)9 ]& }0 v2 c8 x) M; }
{
$ z* u( u& L7 @* h/* Start the clocks */1 x1 c9 q& |, H. w5 Q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( S; V( I  r  V2 r* T
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 x' Y( V5 k. |9 R% z; y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% \! n, ?  d, wEDMA3_TRIG_MODE_EVENT);
# [0 Z( ]! }# o$ ]+ h2 P: {! B' DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: e' x: [' S; ~EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, m: K, F# N! }% MMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 L) X" P; X* E7 N+ q* O& l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* P% Z; h9 ]+ s) x! ~5 F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// [$ k! [* L6 O' H8 M
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) I; ^& r0 t2 ^/ I' G
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 D' [" V2 z, f$ s}
0 Q" j, W3 ^, a) {' J  V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 I7 x; _3 a' V, L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 17:49 , Processed in 0.042486 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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