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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, i" p) |$ ?, U7 ~( B; ^$ L, Q; H
input mcasp_ahclkx,
' n8 |7 l& B2 H% N: E- T5 R& Tinput mcasp_aclkx,9 B/ E0 e$ k- i7 r% U
input axr0,( R* D  @+ i* J' R
* I# n: e& s& r. T0 `- t0 `( `+ f
output mcasp_afsr,
- b) B/ w: |2 Y1 ~* o; Moutput mcasp_ahclkr,* V1 M1 y; Q8 a, T7 h6 @! l  F
output mcasp_aclkr,2 x; f6 Q3 V3 x- d  d
output axr1,
2 U0 I: k; e2 C- Z+ e1 c) \
assign mcasp_afsr = mcasp_afsx;
2 R( B8 Z/ G5 w  I& v- u  r- jassign mcasp_aclkr = mcasp_aclkx;* C- w+ u1 m/ e# W% N
assign mcasp_ahclkr = mcasp_ahclkx;- R  F! Z$ |( Z9 I
assign axr1 = axr0;
1 s  C9 T5 S  d
/ n, k0 P( }. |9 l8 G+ \& i$ |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 s% Z1 g5 ^5 [: e4 \- C: q
static void McASPI2SConfigure(void)
2 S: N: @; ~$ z; [6 }2 A9 t{+ X# G4 y5 e" J# e7 t
McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ W& ^$ L+ v  Q; ~
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */! w3 b- n5 ?1 N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( l1 |0 f0 u) z( E* L% V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 l+ T6 v' O( Z" H4 t. I, N$ a+ Q% b# _
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 I" V& F3 J2 j" E- xMCASP_RX_MODE_DMA);! n. ?/ D- N! E3 `
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 A7 ?8 h1 g7 q$ y' Q0 q6 ]; u& J
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! ?  e" f' W2 v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 Z% ?. ^- [2 M' f# X. sMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) K4 L0 `) J! d7 K: zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 g  `6 Z. G' Y: s, a5 h! c6 _* h# q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; k' \7 T7 S2 J* G, x. i& r& tMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. H, m) h/ E- F- @) q6 Z, v5 a' e- z7 dMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 w4 m% `% A: o7 i* l  S# HMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; O; y' G% E: \( {4 z9 q% g" y
0x00, 0xFF);
/* configure the clock for transmitter */
) q! R) M: m+ d  g, |McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* m1 L) l* x3 I: d( x9 n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) t0 T- u, T( a  _3 n+ b$ b
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 F7 E8 O$ p- s1 |2 \& {0x00, 0xFF);
4 t/ E% [) c) L' o
" \% g! Z2 v$ z, u8 k$ t" |' a! h/* Enable synchronization of RX and TX sections */ 2 ^9 ]8 |# J. t' ^* t
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ ]. l& S5 g' _/ B2 jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ d# I+ e8 h4 m4 b' W' T
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 G8 R4 M+ t5 X% s7 O+ q5 q+ s** Set the serializers, Currently only one serializer is set as
' a& m( Y) M2 }6 L5 f+ h. j! s** transmitter and one serializer as receiver.- p" p+ k+ e( c9 s$ l
*/, X% g5 I) T3 \: D( p/ K2 b7 n
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* o( z$ s+ i* H: T6 k/ D( EMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 b  S0 e% @1 E( W* R
** Configure the McASP pins
/ L% A( B/ B' f- ~- q** Input - Frame Sync, Clock and Serializer Rx
1 {3 U' h; q4 @. U9 D** Output - Serializer Tx is connected to the input of the codec
+ l; B! P7 ]/ D3 {' `1 n' Q*/! O$ R+ I  G$ g4 _* j( F. _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 Z1 Z+ B0 L1 q# z1 S  H! h* i% ?McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# b! i; m) E0 M5 k4 y/ I7 V* U
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX  r" r. Z% d5 w5 u
| MCASP_PIN_ACLKX
- V3 _! V) u" V# N" R' Y) d- E| MCASP_PIN_AHCLKX& j- q3 G' j% Q3 t( y) m. A* m0 N
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% x( A" n* E  u2 o6 _( e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 b! ]6 r0 {8 `' X| MCASP_TX_CLKFAIL ' \1 o& R$ J  a
| MCASP_TX_SYNCERROR
+ U% F) Q! ^% u| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 K# b: V# o/ a& Q* g1 I5 C; x) Q4 Q| MCASP_RX_CLKFAIL5 Y( f# M, D, U  d5 d2 u8 ^7 y6 T
| MCASP_RX_SYNCERROR ( \# a' d1 }- y5 \0 ~1 G
| MCASP_RX_OVERRUN);
2 `/ v$ b2 `' z6 G, w}
static void I2SDataTxRxActivate(void)5 K6 a' m1 T4 R5 y0 \4 }7 A5 S4 ?
{
% p1 A. C7 L; G  v1 B7 @6 y/* Start the clocks */. c2 c# Q8 T0 M6 D7 N
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" ]( d5 b: o. g9 ~
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
, t3 w9 I' e) F, pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,8 J% }  E0 |; T/ w& i, Q, ]6 `3 [
EDMA3_TRIG_MODE_EVENT);
- H, I+ |- D7 K- SEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% N3 G0 ?; }5 W; p. PEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- q/ q0 h9 d: [* p$ h& A9 y8 D5 A
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' J$ a* V+ R0 x; H* T
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 Y9 U. e; t2 v7 t. Y" a
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 M! R: Q8 J; O) }McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" [+ \% S9 W% b% `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 x$ }: U8 U- S
}

4 Q/ N/ F5 r  [; U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 N& p) g6 `5 {3 \' b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 23:05 , Processed in 0.035399 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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