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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,3 ^- b: ^- A$ U$ \( z  Q% D/ W% u
input mcasp_ahclkx,  O2 w# F8 w# N, j7 A% W  X6 n
input mcasp_aclkx,
4 |9 r7 C2 r0 s8 E  b! _2 ^3 Linput axr0,, l* f2 y- D5 A( M' c& E* Z

% V' j# Y( x1 H2 N8 D& I  Ioutput mcasp_afsr,
3 U! j6 Y1 U8 ]6 I0 x5 ?! \" p; ]( Doutput mcasp_ahclkr,
) v, l  T1 i% Qoutput mcasp_aclkr,
* R  T$ l7 N) x8 P, woutput axr1,
/ }7 l7 ?+ @% }0 z: H, S
assign mcasp_afsr = mcasp_afsx;
4 l, z  d% {1 i, c3 s9 |5 W( |assign mcasp_aclkr = mcasp_aclkx;
9 m" ^4 v' q9 f4 z" o- y5 Tassign mcasp_ahclkr = mcasp_ahclkx;
) n* S7 l+ ?5 j0 eassign axr1 = axr0;

  c5 R" W3 }" \) O& C
$ O% ^3 R* t" a3 H" x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# p8 D; R) }) ^" A0 b5 Q" p
static void McASPI2SConfigure(void)
- R# F: r$ ^2 x' V4 o, S: _2 Q{  t9 m& n. r/ q8 Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' `* X  P- T& K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; G, u8 h" K3 ~; V. L+ k1 x4 _McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 a8 D, o- s. j
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */% _1 T5 M8 p/ U& w
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ u6 [' Q* N- U- |( s
MCASP_RX_MODE_DMA);
/ X) P5 k7 S. ^3 e- Z' n. i# l) eMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ V- {) Q  `- T5 X/ l) l/ H
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 a* }8 ?! {0 i3 H* n
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ! e6 G! L, n5 V1 L+ m
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* C6 W) T# ]  n) v5 S/ M9 R
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" v0 O7 {3 c) b. O' _/ R- xMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 U0 u1 \" C. LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: i( k  U3 E- R8 _4 C" AMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ M4 ]$ z& v7 t! W" R, E) d& cMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( U# [2 _5 s& O! l# ]/ N7 x0x00, 0xFF);
/* configure the clock for transmitter */: F6 E3 l, A, B2 z+ ?. p
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 L6 L, K$ F1 S6 c" I( o% D
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 I) _( G+ X  \& W- ?( |
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. d- m. L* }2 w2 b0x00, 0xFF);
( A3 Z0 ?# q1 z) T2 V' z3 p6 b+ H  ]; E2 Z
/* Enable synchronization of RX and TX sections */
9 ~( ^0 p3 V% S& C# s; i# XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 g5 F2 t  G$ A: a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. l$ f, C- y# N2 P) k0 B
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 C; [# l- y) b" u4 g( q$ r' j1 S** Set the serializers, Currently only one serializer is set as9 ]/ U8 J, P4 @% z+ y* m* p: W
** transmitter and one serializer as receiver.9 k5 K6 W) C' L  o0 H, D4 z
*/" A( L( Y( z9 E: C% b
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 e0 E. ^( q( H0 R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" j. X! o! ?7 Z& ^7 C. H** Configure the McASP pins . Q9 L/ B" G# B4 R2 h
** Input - Frame Sync, Clock and Serializer Rx- ^- K1 i" u  S
** Output - Serializer Tx is connected to the input of the codec ( }0 S$ K1 p# u. [
*/: d% T# Z* L6 y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 g# E1 U1 I6 I5 @  T0 j8 b/ z# uMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 @6 {- n$ I2 D  X* F, HMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ w, e7 D$ \0 L| MCASP_PIN_ACLKX( \9 ^$ P" V' O7 k
| MCASP_PIN_AHCLKX  V  o4 `8 i. S5 @5 J* H3 K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( G" M8 a8 o) V/ F* Q& Q: }
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 p8 S% `  p2 T/ h6 q
| MCASP_TX_CLKFAIL
4 d; D7 R2 m0 f2 a5 s3 m| MCASP_TX_SYNCERROR& S- _! I$ x% N; F$ L
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% m/ ^) u. r: A4 Q| MCASP_RX_CLKFAIL
; x6 S" F) K; C# @; w2 ]3 A| MCASP_RX_SYNCERROR
. a8 j( R8 p1 ^: S8 A| MCASP_RX_OVERRUN);1 }+ w. t0 \! l+ a9 d8 K6 `
}
static void I2SDataTxRxActivate(void)1 z7 n, K4 J1 |
{' y) ]0 T& g" o+ n
/* Start the clocks */- h. H- b# l  E) X1 S5 d0 l
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# `! O% F, i1 _% W$ n) C2 D5 r' VMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ T& @! `& y4 b! s0 ^+ ~" mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  }) {4 z5 U: \4 Z6 Y' A2 TEDMA3_TRIG_MODE_EVENT);! O- `/ f; y  D% Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # Z/ }* z2 ~5 d& f, p0 Z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 R) i4 x1 ?+ q, V9 j4 _+ e0 {5 M: v' lMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 m7 K2 k$ ~2 p$ f9 v& cMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' B. n/ ^: D2 y/ lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! P" y; g0 s# g, a  l+ K, `$ UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 ~7 D6 V2 c( w9 e/ I
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 v1 R& [) @! z, f& f
}
$ W0 R2 a3 w) m1 w6 D# B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 m& u5 D. D9 L- c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 08:06 , Processed in 0.037894 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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