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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11420|回复: 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,
' W: L2 O) h5 X+ @' qinput mcasp_ahclkx,( Q/ w0 Z8 F- ~
input mcasp_aclkx,4 |9 X# v7 ?5 q+ D3 {3 j9 u, P
input axr0,: l1 F' g; X* D  u* l) j

. N- k4 i0 a2 R3 |0 xoutput mcasp_afsr,/ w! a: n) s" s0 _3 b* F
output mcasp_ahclkr,
6 f) q/ Z" O$ p' K  {: \% ^' Z% o1 Uoutput mcasp_aclkr,
6 l7 H# _1 `+ [7 Qoutput axr1,
) i% ~3 h$ G# ~8 I' B* F, d6 X! J5 c$ n
assign mcasp_afsr = mcasp_afsx;7 h1 c3 }( w- y' F8 i2 q
assign mcasp_aclkr = mcasp_aclkx;7 i2 C7 c9 v5 M, t- M, S9 U/ j- b
assign mcasp_ahclkr = mcasp_ahclkx;) z3 h, X7 j) ]3 X1 u% e
assign axr1 = axr0;
- }' z4 A/ D% x1 R  f& o* w5 x
( |6 Q) f$ n5 e: b' j9 `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) ]* s9 O6 C2 W
static void McASPI2SConfigure(void)1 p% e( C3 |6 @& W5 K
{
( P* a' u2 b6 g$ [3 t$ J; L. V9 sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);4 ]' g7 k1 O" r$ `
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
5 g% l+ e) f6 ?8 n/ SMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 w0 ]5 V. J$ r  P; [$ I) v4 O
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// ?' h% O; O) P# X: P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 V5 v8 ?  F. M+ f
MCASP_RX_MODE_DMA);1 L; Q& b. N# N% u
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 Q9 A& c7 k- H  @& `) L% {$ {1 wMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// `9 r1 I2 |# I7 b, K
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- w. ]0 |! L* g9 LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ u. W2 b$ [4 i- l9 gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ T8 Q' H. O9 j" F8 ]9 s& W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  N% u& ^. w; D9 RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 T- Y% a* f' Y: r7 w$ V& U1 sMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : g. Z( t& l/ @- G
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& t; F7 G8 I6 ]# ~! T' l
0x00, 0xFF);
/* configure the clock for transmitter */
% C1 I# U% h6 {2 Q1 z) A8 E( A; N* ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; L" _# L. p- q0 U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% K/ R3 M4 u- Z  C* E' jMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' j& R8 T1 a3 o" L0x00, 0xFF);
% A) [6 F; L  N) S+ v3 L# _1 h( Q( c+ a' f
/* Enable synchronization of RX and TX sections */ 9 P2 a: C, F# b0 D; R& z: g! D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: D! f- g% N+ Q* E. i+ J, P8 p+ U( SMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
( e8 Y& t6 p( |5 z' }0 `% AMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ x$ o$ F7 w2 u; p+ |3 K' d- A3 O
** Set the serializers, Currently only one serializer is set as# w1 `1 F4 c4 q" t9 k% l  n$ A" {7 p
** transmitter and one serializer as receiver.; E, A  n$ |8 x% t0 ]: i3 |
*/& U/ l: P3 S, L$ ]/ T0 C
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; E7 n, A" D% R8 x# h: g4 `0 H" y* pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: l. o4 B: M" v% M( z+ N- g. I** Configure the McASP pins
  r% _( s4 T( t" `0 N: m: m% {* ]** Input - Frame Sync, Clock and Serializer Rx
4 e3 }/ q7 N( m4 O( M, G** Output - Serializer Tx is connected to the input of the codec
. Y5 `! U2 T; J6 ?# `8 p*/: E& c$ o0 Q4 t$ U
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) g4 z0 h+ N+ ?% B& |. b+ D7 C
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 \) @$ |1 \; w% K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* d7 F. C! V: q, C$ E1 M+ k# e8 j, i  m| MCASP_PIN_ACLKX) ~- `6 S$ ]9 S; s9 T. X' n9 ?
| MCASP_PIN_AHCLKX; T* \  `, S$ n, D, K5 a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. D3 r) l6 X# I
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- D* b) l8 m* q' B% g7 }| MCASP_TX_CLKFAIL
- {$ I! V  T0 }, z- j1 w$ F| MCASP_TX_SYNCERROR
1 `9 c' J/ K# n3 Y! ?  ?# h; r| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + U/ |3 [9 ^$ ^. b3 T8 B
| MCASP_RX_CLKFAIL/ o8 h5 ^: C8 y* Z  \) G% z' _  m
| MCASP_RX_SYNCERROR . b5 G, F2 i: O
| MCASP_RX_OVERRUN);* B( @8 N/ ^% V1 p6 K- L) h
}
static void I2SDataTxRxActivate(void)* g4 ]/ i4 L5 t  M9 Q  d
{, w0 m( c' [+ K# q1 `
/* Start the clocks */, U; D2 C# n  P) y4 |
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" t1 v, P6 B  U  n: _  K
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ f$ s+ y5 c5 k, t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) T; t4 R- a! L9 w% g
EDMA3_TRIG_MODE_EVENT);, p; {# y8 D1 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 L1 t! U( ]. [" U1 A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  Q) c# D3 F+ U, H* |+ ]2 ]McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% [7 `" x: h$ p3 aMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 l* }- v/ `; j" F, Z8 Z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 I2 V  c8 B" n7 VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* ?; X  V+ T+ ?2 m4 }McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% p8 \4 i6 h& v}

  E: ^( U: \$ U! o8 x  V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: Z# x% X8 h. `* c$ D3 h+ L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-4 21:06 , Processed in 0.051263 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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