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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13563|回复: 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,
  i4 I5 l6 l1 Minput mcasp_ahclkx,/ V* O5 p3 z$ A4 x1 Q
input mcasp_aclkx,
% @2 m8 n' Z/ s% }/ |  I8 o4 Kinput axr0,
! P6 A+ }# o3 b" P. s0 z9 J' t9 ?
6 G" K" G; a) v2 A4 _5 t6 Y3 `output mcasp_afsr,0 v0 w* r6 a# N2 @* o3 s
output mcasp_ahclkr,
  n, U; K" X  l* foutput mcasp_aclkr,
/ ~% m- V: o! v6 E" Ioutput axr1,
4 r. K9 I& P! B# Q
assign mcasp_afsr = mcasp_afsx;% }. V9 V; P' e$ i+ O; I
assign mcasp_aclkr = mcasp_aclkx;1 m0 J1 Y4 P$ Y4 `' m$ _1 H* `
assign mcasp_ahclkr = mcasp_ahclkx;
( K0 `4 L' q+ L$ P. Vassign axr1 = axr0;
" O% e& j7 e$ w3 H; I$ `! s. \* N

/ G- o1 r( @, h5 [- F  Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% {& B; v" a/ D* h/ y
static void McASPI2SConfigure(void)
" o4 @; k& q# J8 J5 q{
, k" j$ L9 V/ Y' p; BMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# [: @" c  {' s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) j5 _5 P3 M, g# ^McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& I3 W* G8 [, m
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 S1 k" \& s) d2 Q* ^4 s* QMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( c$ f$ W/ @8 ^: V$ s7 N, AMCASP_RX_MODE_DMA);( k" t, h" W' a7 k( L
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) i  C  e! B( u
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) v' [" X6 B& n- CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; ^' h' G# X! M2 y0 u
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( }( b7 O: `1 A: ~: H" y% gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 k; k% D6 ]' W& H7 l& ]: G
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" ~9 m& u8 l8 ]$ nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& ^8 ^' _( k7 G: u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 b. q% o. Z$ T* w
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) I; m2 ^' }6 B' Q. _; {( `
0x00, 0xFF);
/* configure the clock for transmitter *// H1 l, L6 m' e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, ^% u  q3 S% O: Z( H# u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 y4 x+ p- v9 X0 T) k
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' g# l, D) \2 ~4 g: T0x00, 0xFF);
) z! X6 n: P& \6 G/ N% {# w) T( N0 {7 f& A/ j
/* Enable synchronization of RX and TX sections */ % W4 K7 ^5 }; T! A( `0 u
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' E9 q3 k$ [% L  U' D8 g$ n: c& W/ S
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( c* |8 M2 O& H, [McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ N1 r  Y% D$ u** Set the serializers, Currently only one serializer is set as
" j) j+ J. i9 w  D4 Q4 l1 g** transmitter and one serializer as receiver.
1 ^1 g+ w8 j: ^- g1 W" j*/4 a5 S* ~/ B& w/ a2 y8 y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ Z: {& h$ e+ `* \2 Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ K( _# ]; Z  |  Q* \7 j0 f** Configure the McASP pins
; q4 G- y4 r4 g7 y' `% s& Q5 I** Input - Frame Sync, Clock and Serializer Rx
* k' m8 P% ?( J# t2 d** Output - Serializer Tx is connected to the input of the codec
& U8 A4 x: a$ r7 w) S1 s5 D*/9 d1 l  `5 l7 d$ K# A& n
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! W5 O- j& h+ m% l( W
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. F7 @9 S, h8 v0 _2 U2 m: \
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX- U" t4 {& q& `: o
| MCASP_PIN_ACLKX9 z, e& p% f8 v8 Q! G8 L  A
| MCASP_PIN_AHCLKX
2 b" s) e# b! a' s& ]2 h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" O$ ]! N) D1 t2 C& s; [McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 `7 B' q0 w- w  F| MCASP_TX_CLKFAIL
  ^' K1 E+ l1 q  i( N| MCASP_TX_SYNCERROR  O, J$ v6 M" A# u% ^" P+ l, r$ B
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & b+ i5 }7 V/ `& I, n2 Z) L7 y
| MCASP_RX_CLKFAIL
  o: G" Q  @& {! W| MCASP_RX_SYNCERROR
5 V- v7 B' A5 X# I: w! S+ t| MCASP_RX_OVERRUN);
' F+ l; F' X+ f) x9 a% `. K}
static void I2SDataTxRxActivate(void)
- }( }8 z, @! ^5 G. H6 h" P6 H{7 ?+ b: Y4 d# t9 f
/* Start the clocks */+ i9 b/ x* S  G
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) B% X& B/ \9 K0 A- G2 Y& uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 g$ z% R/ ^5 GEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX," p% c  e7 k* c5 p/ N" ^: ?0 e& U
EDMA3_TRIG_MODE_EVENT);
  n$ q0 x) d: V; `. K! J0 Q* aEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 j& d/ O# d, f- x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 g+ k: h4 C+ S* Q# @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 }1 d, }7 ^- x9 w# uMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 F. n% l  g1 G' V) x0 ~3 [
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" B, g- q& [% S5 Z5 M) _# F' A
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' J, h/ ]0 I( m. y0 XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);' x2 s- N5 N2 A  D1 \5 P
}
2 G6 ?$ Q! `+ Z( ^4 u' X9 D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' {" x2 g1 j8 c: P0 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-3 17:34 , Processed in 0.041313 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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