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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9599|回复: 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,
3 u" ]' K& n6 Y2 O, @4 [input mcasp_ahclkx,) C8 j' X8 V/ f/ I$ V6 w
input mcasp_aclkx,
$ G2 o8 @* w0 l7 iinput axr0,6 R. a/ e7 ]/ R, K# u( T
- m! V6 ^. d" O  ^! c, O: S1 K; P
output mcasp_afsr,8 T; Z4 I; {, g" z4 x
output mcasp_ahclkr,% [* v( C! m+ f, |! Z" d( W8 R
output mcasp_aclkr,+ n2 x% G% w' P+ m
output axr1,7 x7 a' P' V, W& h/ p' S/ q
assign mcasp_afsr = mcasp_afsx;
3 M, q; z! H" A: R4 t5 J+ fassign mcasp_aclkr = mcasp_aclkx;
5 G& s/ g  \, ~* T. [assign mcasp_ahclkr = mcasp_ahclkx;
, s0 [  b( J: {. S! B3 c! o6 Lassign axr1 = axr0;
, E- t& [5 Z- G& s+ N2 ~

6 J6 B2 g0 j, u9 B+ U0 K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
  R# M' O2 L: b9 W  t: c
static void McASPI2SConfigure(void)
% s, b, S+ t$ ?+ O- X{7 A; r& o0 T/ u5 S: [6 J
McASPRxReset(SOC_MCASP_0_CTRL_REGS);. Z9 |/ ~1 P. G" \7 X
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 C( C- L# ?" ?& J
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
1 k2 J  e' I6 w; y9 I+ X" F# KMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* Q5 L: h2 A  Q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* q( T! J+ K6 x2 t0 hMCASP_RX_MODE_DMA);2 ]! X0 o! s" y
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 H4 H: g  i7 z) ^7 `7 MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) J1 c' D$ m) L3 G7 g6 g" H' M% GMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
- q) L( t4 }" q+ R2 `MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) e( D" d! J9 _. l6 K) _
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 V4 t/ x- x3 s4 P( @" t* n- YMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ g: t% V1 @' d* A1 `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);' ?% Z4 v* Z0 r& Q
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); - e1 K/ ^4 V2 F: L3 d( l! X+ D
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 M* g" J0 y' j- i3 I, q: {% o
0x00, 0xFF);
/* configure the clock for transmitter */
/ t( c+ A: t# N& `. \) XMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  }6 \) N  N* l* o  `1 N
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; |  C  j; ?. h: g( [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 H8 u: @+ B  m. {1 ^/ a4 C
0x00, 0xFF);2 `+ J0 [) }& n+ U0 _3 C/ N4 R
: L9 Z; U: c8 [' A$ K1 R
/* Enable synchronization of RX and TX sections */ 5 j, L" [8 L: h+ v
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
4 P3 Z$ C' R2 S2 Y. T# o& B9 D9 uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
0 ~. {6 [6 |$ ~# s# O# m" Q' FMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ U3 n4 G; g8 [. E" x# P( g** Set the serializers, Currently only one serializer is set as
* `( t! ]/ q3 H7 l. W** transmitter and one serializer as receiver.( \. k: a- }8 ^2 ^7 Z
*/
+ N1 }! l/ b6 U6 |+ i/ R+ p; b; CMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 H* y6 X% b; c, i% K' V# m3 |( t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) C$ r( S# C+ D+ i
** Configure the McASP pins
* w5 Y4 t* {( A) n  A, k3 b; E* p** Input - Frame Sync, Clock and Serializer Rx
8 ?( W3 W7 {# q0 D** Output - Serializer Tx is connected to the input of the codec ( H% Z1 N4 o" z2 l" x
*/
4 S% E/ u8 ]! L# KMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) Y5 X% ?1 ?3 p9 S+ o- SMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 L, \" V5 |& ^. ^" Y" DMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! G3 P4 S8 V8 _9 ?0 U' T% a! g- b| MCASP_PIN_ACLKX8 `, @2 H1 p) ~) X8 f7 k2 g
| MCASP_PIN_AHCLKX
  Y3 w/ A) c3 ]  Y. r! ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' W) k" \. e: n- b$ e& F6 ~9 A0 SMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ G: ?) w0 W7 v' y: z| MCASP_TX_CLKFAIL
+ F- C- w8 \4 O6 H; d| MCASP_TX_SYNCERROR$ f. B: c' ]$ w$ ]' F4 }
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - v2 X, F- c; \# F# w
| MCASP_RX_CLKFAIL
: |! J! Y8 w% {; a| MCASP_RX_SYNCERROR
5 e. ^, {0 `5 [; l  l5 w| MCASP_RX_OVERRUN);- l& B0 u" e' j0 v
}
static void I2SDataTxRxActivate(void)- F0 e; R6 O3 I4 a; g, a/ S( [- f
{
2 i, |7 `2 n. v7 m" @* c( H/ l- i/* Start the clocks *// S" B' [5 v' A* t% s6 l
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. Z5 F" ^! c/ D" F6 G5 bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; D6 ?- b, t9 B0 O4 F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,8 |  `! o1 T# A, b: X' O
EDMA3_TRIG_MODE_EVENT);
; R; f( s$ O& Z) N( C* IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 ^0 l- E8 k  {( k) f3 ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& y# I, Z' u2 o$ D; \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
. M1 B1 P. _. fMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& ]+ l$ O* l/ a) V8 b1 z* M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; W& e  z) n% h# l* }. m, k" O
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 C! u  ~, J; K& ]. \McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 n0 v. q# e+ D; C}
3 _2 {! s7 @# N+ M  u6 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  e, a) b  \7 m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 00:55 , Processed in 0.046604 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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