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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10494|回复: 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,
! G* [% G" t2 `3 o0 A" ainput mcasp_ahclkx,2 ?3 Z& h& L1 E7 t
input mcasp_aclkx,
" \0 E) ?* d" m: Y: U, m. L5 Yinput axr0,
$ m' U" Z% r2 D0 I, |( o$ D$ k7 t8 j  i, m! R0 a9 U
output mcasp_afsr,
- E: Y- f  o. ?' j, u1 ^7 voutput mcasp_ahclkr,
* ]* i$ V/ R& X" ooutput mcasp_aclkr,
6 A. B) I6 @. }output axr1,
' r9 E# y* Q  @! |
assign mcasp_afsr = mcasp_afsx;" C  p2 T! L1 K9 a4 |! O
assign mcasp_aclkr = mcasp_aclkx;
0 M* f3 c6 `5 y0 D2 ^. xassign mcasp_ahclkr = mcasp_ahclkx;
! H* \# w1 r. V% p9 Z5 Jassign axr1 = axr0;
( G+ a! b7 ~1 l2 d
/ e+ W) ^9 C# X$ _* C: n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 R6 w  p5 J7 _" Z
static void McASPI2SConfigure(void)  ?: `' w; o+ l# @
{; L: D% S2 a. g% i; J; s
McASPRxReset(SOC_MCASP_0_CTRL_REGS);# E7 o5 w1 J7 b% p! m
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) V$ o# r% `  v. ~" D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 Z* j6 k# X' n' Q6 u
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) @# Q. w8 U( g( P" y/ oMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," Z3 B8 ]! ^, c/ k7 g- G* V
MCASP_RX_MODE_DMA);) e" D. X( X9 e/ H8 F7 X- L$ U
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) G4 ]( B  v8 ?' h( qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" g9 o$ @+ G7 W0 XMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; x/ u1 o, w' b4 ]1 {( h9 I+ w1 IMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 i8 o7 W4 x$ D" b* W
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, # J- j. u% [% y/ t* a4 b
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 L  N/ y; z( U* {, n, k
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* a3 V0 ^. I. a9 v1 PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 u- ~; }5 l8 `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ Y9 k! a( n8 ~0x00, 0xFF);
/* configure the clock for transmitter */
7 O& o& ]5 |3 tMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 _  P! d3 U, ^" m7 ?McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ ?) Z# |6 ^3 H0 w- k2 Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 F' u% X+ a& c0x00, 0xFF);
) Z2 r. {9 y4 K3 a1 u2 a! f
8 ?8 P+ i& c9 e0 m/* Enable synchronization of RX and TX sections */ , [0 t  m  A7 }. ]" l, ]# d% o8 z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- {" t, u  d7 D: v  VMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 z$ ^9 D  ^+ P( k$ k1 oMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 N- f' r  E* B: N** Set the serializers, Currently only one serializer is set as
  `. r; X+ P% I  L/ v) ^3 G** transmitter and one serializer as receiver.
$ g# L' W0 r! d7 g8 G+ B*/& H0 g* A: _* o  d8 f
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( q9 R# M) G1 Z# G; Y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, H9 o2 T5 U1 n
** Configure the McASP pins
4 a. q0 g) K, P; O4 X) i5 `** Input - Frame Sync, Clock and Serializer Rx& h& s6 l7 H% ^: M; H; J* w
** Output - Serializer Tx is connected to the input of the codec
" g4 z2 \& `" d* s*/- n6 u( Y- |7 M; M; D
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);# p9 J0 m9 w2 H( x6 O2 O5 T6 l1 h
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ c9 a: j& t6 F1 p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 l9 l  e1 G( O, |* s
| MCASP_PIN_ACLKX
- Z! ?9 U; P& r( F- g| MCASP_PIN_AHCLKX7 ~. X( ~4 r; B4 p3 K0 t) M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 R$ t- g; o0 F3 G6 S
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 p- b. b( u- i| MCASP_TX_CLKFAIL " V; n1 l. a3 j" z5 i4 D
| MCASP_TX_SYNCERROR
8 m% M' _+ e+ `# q0 J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* C- ?1 h3 t5 u! t% L' x| MCASP_RX_CLKFAIL6 L/ j6 c, ]( z  n3 s9 f, C- p% ]
| MCASP_RX_SYNCERROR 1 r) b" e" [4 t
| MCASP_RX_OVERRUN);, c2 W7 K, E$ d# ^. e, R9 Z
}
static void I2SDataTxRxActivate(void)
, M7 Z3 U0 C6 T- ?, F' N{* X4 W6 }0 t- W. G- _3 `
/* Start the clocks */6 R/ Q# M9 L1 n' F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 c, ?6 Q) K3 V( T- n9 LMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 Z* {7 ?( o/ Q0 d7 W2 m1 vEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 j) z0 @4 C6 A6 J
EDMA3_TRIG_MODE_EVENT);2 W2 L9 x  s  j- r2 z% z  N9 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 G! {% W: K, h5 }/ {  Y; i, C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 H9 X4 Q8 a  S6 EMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& w" J- I8 R2 t4 N, P
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 w* X$ i& q8 `* ]/ S3 x, _6 r- gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- P5 g7 J& V0 u2 [4 h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);; C4 T; G% H* _3 ~& X
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' M1 Y6 j2 N: D3 N% @8 c- ^  y}

2 m3 H1 h+ g5 B* R! _) W: o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
' x# ?& Q9 j( j$ o5 W6 j" i5 J! ]( Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 04:12 , Processed in 0.040538 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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