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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10782|回复: 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,
7 f) \3 q) I, w% U) Iinput mcasp_ahclkx,
+ ?7 N. z! c' |" ]0 Z+ X' \input mcasp_aclkx,
5 R% |/ w7 u$ Ninput axr0,* n( G6 c; {) H) N+ X0 ^- f! O! ]

- S( ]" |; L" W- w& l: n- M0 voutput mcasp_afsr,# q- S& q: t/ ~: g! J) N
output mcasp_ahclkr,
/ n+ U6 E5 {& Z4 a7 }2 r2 v/ |" |output mcasp_aclkr,- H8 G0 u- R. Y% @. M
output axr1,0 ?3 R; F0 A" z9 ^+ Z
assign mcasp_afsr = mcasp_afsx;
& k( h; m+ y; u3 Vassign mcasp_aclkr = mcasp_aclkx;% L, _0 ~8 @2 Q4 r6 _) E
assign mcasp_ahclkr = mcasp_ahclkx;! K! E* R0 w+ g  b6 X8 t
assign axr1 = axr0;
% x- [4 f( ]4 |5 Q$ N' J- f: {
; d7 `/ @" F8 }# z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 z" c1 _# [/ U
static void McASPI2SConfigure(void)& m0 W, ^) K# N( x+ k+ ^+ }
{
* @9 K# T, }  q8 u' sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
& G' e$ O  v/ C' }9 l$ kMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 j8 \8 ~, V. k. u0 X9 SMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- d' S! B6 ^  Z2 ^4 c" h  t
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */, i; ?* G) |5 u, l4 M
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! x" q# l. y# ~, n' ^( l( rMCASP_RX_MODE_DMA);6 c. @8 t) r" ~+ U+ \+ V
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  H9 t, j8 \" o. `9 }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ ]" Y$ G, i5 Z; Z6 L1 g
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 c% C# j! h9 \# z, ?MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 c# R, \" M) b1 X# I
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / A5 Y6 g8 m8 ~, H! V
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, `5 n* H$ t$ i7 l+ W. L
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
" E9 L" s- x1 e" B. a4 jMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' {; p6 r. e% b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% N$ s5 c$ c; U! v" C5 \0x00, 0xFF);
/* configure the clock for transmitter */
3 u( v4 u4 f, _) Y" kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 l0 S, k3 s. d6 W4 J. pMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " V1 X4 |- T$ b9 i9 Y( t
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) @/ U5 J* C/ C( I& d6 c7 U0x00, 0xFF);3 _7 w0 e1 v* L

% n* l% m. `; y9 G  O/* Enable synchronization of RX and TX sections */
9 j; c! E, _- o2 H  gMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 @/ s4 h6 W% N/ Z( F1 kMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  S2 u0 q" p0 JMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 ?: e! W0 I+ s  K6 r. }! q
** Set the serializers, Currently only one serializer is set as0 [0 C& B4 F7 n5 D+ O
** transmitter and one serializer as receiver.
5 F4 J6 d" F# B, ?% N4 u4 L0 r; b*/
4 o- C1 r% n2 w' AMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 u  G  v- `- z2 K+ a9 v6 d  bMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" S) O) F9 g+ q
** Configure the McASP pins
' ?* S: ]( K, m** Input - Frame Sync, Clock and Serializer Rx0 e* G5 k: I6 \# Z+ q# X) @( I
** Output - Serializer Tx is connected to the input of the codec
& p% u3 e1 K- P+ z. ~*/
+ m' M. p( c) l# t( R, [% r9 CMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" B* S) U+ R! B! J0 ]$ u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 n8 p8 J7 K- U! h. i
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* V" @  D  W9 ]* ~1 Q7 W, S
| MCASP_PIN_ACLKX
& z! {7 M7 E7 Z1 k2 || MCASP_PIN_AHCLKX% b" t" P; ^% F. g+ m3 z& D) D
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" D+ V" P0 t# d$ f# I
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - y0 y/ J* D. ~; T( y: y" x" z
| MCASP_TX_CLKFAIL + F; ^. T/ ?5 u  H. z
| MCASP_TX_SYNCERROR3 H4 G( `8 @. n/ t
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& c2 @0 C. X4 g) X, r4 C| MCASP_RX_CLKFAIL) I; g7 T( s2 Q: [/ f- H
| MCASP_RX_SYNCERROR
) X  C8 C6 r( [, U! a7 [) S| MCASP_RX_OVERRUN);
- B/ K6 i7 I2 a: ^}
static void I2SDataTxRxActivate(void)
8 E/ b  O2 ~( G3 G; Y/ T3 w5 C, n1 F{0 y# x% |$ `0 [4 ~( U  ~
/* Start the clocks */
% v6 g7 J' S) dMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 m$ B" n0 u3 d6 U( ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ Z6 Z. z7 c/ g" H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& g/ V+ m( c( G# Q! r- g/ z# yEDMA3_TRIG_MODE_EVENT);, c# h8 t' a5 z8 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# P$ o) Q; e; j0 I5 p( ]4 i" `; M& Y0 c, GEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 W' l; \: e* s6 L. b; dMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 w4 d+ t1 L& a: W* U$ J) jMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  ?0 r' \5 M0 N5 Ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! Y4 f7 j  _$ lMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
+ W5 L) ~# }, L) q- rMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ R8 B% S7 B) `) b; \& R1 s
}
' d$ O* @& F2 a- N" a' G& g. t
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 x. O4 |6 R2 ]8 `& H7 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-15 18:53 , Processed in 0.040797 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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