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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8480|回复: 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,, @- U' \* a' t! r
input mcasp_ahclkx,# s0 ~) q( ?' |: t4 L5 ?9 V( O
input mcasp_aclkx,; h0 \6 h; p8 f9 H
input axr0,
4 \, w4 c  L9 c" e
, n. [; z8 G4 H; F  _+ }5 h& J# j+ Uoutput mcasp_afsr,
; K: r- W' C7 @" goutput mcasp_ahclkr,9 i4 n; B7 y4 P; E9 n: C
output mcasp_aclkr,( b9 ~* k; P7 N; {0 E
output axr1,, v8 }' W5 [- o- U& ?. f) s) T
assign mcasp_afsr = mcasp_afsx;
7 X; ]: H% b6 W6 e6 d( Vassign mcasp_aclkr = mcasp_aclkx;. H& a9 k  g. ]: j: n3 B2 @
assign mcasp_ahclkr = mcasp_ahclkx;
1 h1 J6 x! R' n+ e2 ?, bassign axr1 = axr0;

1 N; ^1 d! [+ g' T) L2 o% n* ], P: Q$ W& \, @9 t& z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 o7 A/ |: M0 C' K6 h
static void McASPI2SConfigure(void)
5 c: }8 l% I9 d{5 z  r$ e4 E& j( L: D3 i) b* f6 R+ A
McASPRxReset(SOC_MCASP_0_CTRL_REGS);5 R* Z) k/ F4 J% |8 q  w6 O& ~
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# z3 X4 p' N: V1 p% cMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 |/ W% P8 U. C/ @8 v
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
' u4 \4 N) A1 k4 x  M% pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. Q( o' Z$ f7 C. W- b4 L- g
MCASP_RX_MODE_DMA);! G+ J9 f6 |. w/ S7 F0 ?! [9 Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% X$ Q* x( u6 Y' P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ R- E: A$ B- V3 S! I8 j; IMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% r8 W3 z& F% OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# x3 k% e$ n  Q/ O" \  {4 y) gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: G# d0 H* J. e  S4 X9 H, fMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 _8 S5 _% L' g* d( i( kMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# U+ P( H7 C* Y/ l, f& H/ g
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . `4 V: {3 m/ C: N
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. j! ~6 Z9 r! j4 B, D0x00, 0xFF);
/* configure the clock for transmitter */7 }+ o) D: h; n
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);3 C, V( W4 V# _/ x; V9 L1 M. S, }6 {
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 @8 t3 f2 u6 M- vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  }* j* s6 `3 ]& @4 w6 ]+ s
0x00, 0xFF);
* j2 p# `* T; }5 U, i. H
4 j4 V: j# W" U% O( m4 T, a/* Enable synchronization of RX and TX sections */ 7 ]$ v) Z. g( w6 I. ^# H+ L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! Y# U2 G: s6 W0 O3 X% q2 Z
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# }- d5 Q7 k0 v
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 d( x  q( g6 u** Set the serializers, Currently only one serializer is set as
5 `* A+ E2 |( p( O- a# x** transmitter and one serializer as receiver./ V" E$ D# z9 g
*/. `: Z  ^" v% I- y! M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 d2 C$ ~6 D1 [: S8 R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 u( s% X/ j* M. b. O- k# W
** Configure the McASP pins 6 `, G" `+ S( t+ o7 J
** Input - Frame Sync, Clock and Serializer Rx, V  Y+ o% o1 L8 f4 M
** Output - Serializer Tx is connected to the input of the codec : W9 z7 r6 w. j  s/ S2 Z
*/% S* |! O; n" @) _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! t: _% Z2 O0 Y, v
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) c/ i. y% x: W7 I8 g
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 q. z, C9 w6 B/ ?) \8 X
| MCASP_PIN_ACLKX  x4 W6 e+ ^7 j+ z' h1 b3 a& t
| MCASP_PIN_AHCLKX
4 p  V8 W# N6 k9 q; x" n! J| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */& \8 X6 F- {, V2 U* @
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 K: T" X) ^9 Z/ {* M5 U, b& l
| MCASP_TX_CLKFAIL & m' ]5 D9 W) c2 e
| MCASP_TX_SYNCERROR
- o, V2 O+ B' @7 Y) s5 o4 V| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, d" G+ g( v6 Q7 i7 ^" ?| MCASP_RX_CLKFAIL7 X: X: G, ~2 e
| MCASP_RX_SYNCERROR 5 Y5 l+ P3 Q$ Z9 g) k; }) O* P# ]
| MCASP_RX_OVERRUN);
  G8 L4 \. ~3 S}
static void I2SDataTxRxActivate(void)3 {2 b0 m! B8 \* A
{4 C3 B' ]! B7 P4 _. R
/* Start the clocks */
9 D: M2 T; u5 r; O, ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& B4 o' m% }! V3 }* n  F1 o$ M
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, }( L+ y) ?/ K; A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
0 K% ?$ N  T8 a& F& i5 NEDMA3_TRIG_MODE_EVENT);! s) q/ z. \6 z# I! _0 ]4 P1 M6 l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 n% g; Z4 h8 R6 {' Y" D' ~! G! T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
$ S7 ]+ s$ q9 @" ^" nMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 J* ]: ~- `5 F8 T/ I3 r
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% |% i1 \. ?8 j6 U. J' ~while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! r; S8 [9 e" S! R4 O# V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- N- Y- `7 r5 c+ \& \/ w4 V$ x0 Q- \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% g, P6 E' c& S# Y2 Q9 `}

% G, e' I7 o1 n7 ~
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& f" u, v. E7 R8 p. n' F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 20:38 , Processed in 0.045058 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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