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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,, \& @, }' b& Q. _. B5 D! Y$ h
input mcasp_ahclkx,: {3 L. W# u  b. N
input mcasp_aclkx,. z& U& F: w0 Y% m  @' R
input axr0,9 n5 P* U7 ?+ T# o6 a

4 w) V' ~6 O( l) X' Aoutput mcasp_afsr,& f/ l% {, O; T
output mcasp_ahclkr,
% `9 Q) B7 B7 T' C, _5 Zoutput mcasp_aclkr,  X5 v7 q+ M3 |6 z
output axr1,
  `( j# ^" V: B
assign mcasp_afsr = mcasp_afsx;0 [* \! y* S' A. W
assign mcasp_aclkr = mcasp_aclkx;
6 I/ j0 w8 p7 }& R( V* F) Oassign mcasp_ahclkr = mcasp_ahclkx;: O8 o* Y/ J% G0 x
assign axr1 = axr0;

% ?2 @# n+ ~5 S* b& J. ~" x. q) j' O1 F
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* K3 r# t; H+ \0 w. q2 |% ]
static void McASPI2SConfigure(void)- j/ }- P" c) F6 P
{1 T  y, G& ^" t+ N8 G
McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ ^4 z3 D9 B, v9 \
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* V0 U1 b* l; P9 D: \) j+ O
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ f5 b* r$ I7 b2 t  y4 `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ O8 {! H' g$ F; d$ [* K
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& u+ N) x8 [1 K  F
MCASP_RX_MODE_DMA);( A8 `  L" j) H  U: c: P! ?
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) ]$ M& ?/ u/ o; {5 ZMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, A% d! ?! g" g/ q+ X$ q, FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 A8 y  S; p( i& p" C& TMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( q2 L: }; J- j1 |& S
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 }4 C* A6 A: J5 v1 d, |9 NMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; s0 Q+ }: c) O+ j2 w! C# B# M* J$ \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( ~1 ]5 q( X) w( GMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! L* i6 b3 I" {2 wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
, \% I, Z0 T. ]/ c9 v8 b/ K0x00, 0xFF);
/* configure the clock for transmitter */$ F0 q6 S# L7 z( q. B
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 i) F, w; M2 qMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 [6 |( f9 ^. E
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 Y- z$ z) ]% `
0x00, 0xFF);
' @+ ^$ ?% |5 k; v- E1 c! Y# q" E+ _4 E* d+ }
/* Enable synchronization of RX and TX sections */ 6 K7 B* W! k$ s) {% m! F% A) Q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */$ Z# m  C0 l1 M8 F
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 T  X, T6 a) l6 z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, w) T; W; b" `# @  Y- c** Set the serializers, Currently only one serializer is set as. y  h1 P# I' M- R
** transmitter and one serializer as receiver.
# p- P( n( _/ C* d7 w, _: ]; N*/0 u' C- M/ k; z: w  J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 p! W" @' L$ m9 ?+ [/ G: P* Z. n
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, f& ^+ n6 a- L( @$ ?. Y4 ?+ n** Configure the McASP pins
  [/ ]& V% V" U5 p** Input - Frame Sync, Clock and Serializer Rx
2 {1 ]+ M6 i: E) z+ p7 t2 E** Output - Serializer Tx is connected to the input of the codec
2 y" z0 c3 p% r' T  x*/
4 }) }5 U* C- g6 h9 C8 ?  u" VMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 ^) e2 s1 I( R$ rMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) e0 B$ g- H. b& u8 }$ a
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, g9 e6 e; k9 ^% Q| MCASP_PIN_ACLKX( l3 ^: d) Q7 ^3 v4 f
| MCASP_PIN_AHCLKX
# ]; r& `, \" A* g3 @. q) m| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ {/ A1 C6 g) a* Q4 X( E% XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / x& r/ y  G1 d: a% }
| MCASP_TX_CLKFAIL
# c7 L  r8 d& h/ y+ A| MCASP_TX_SYNCERROR& a& t/ b# [0 t4 N) ^* c' k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ I% c$ ^8 |% e# O| MCASP_RX_CLKFAIL
+ s0 b1 |' ^; ~( r| MCASP_RX_SYNCERROR
* |+ L# R* W4 }& b. h; ^| MCASP_RX_OVERRUN);* e$ l  y# c( ?
}
static void I2SDataTxRxActivate(void)3 g! M" T: e, `: ]
{( b* U8 m: E8 l5 ^1 ~
/* Start the clocks */% u% t/ n: O- M/ w& V1 [4 I( ~
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. e2 p, D& h4 \# V- ?" n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 I: R7 e, r& F9 ~' I4 f" M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 ?' n$ |, g( {. W5 i
EDMA3_TRIG_MODE_EVENT);
$ @9 V) k8 m4 U& k. n# YEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
1 P( R) F0 p- n: E6 [% b9 hEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
7 o4 E! ]& w6 N7 ^+ i  eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* d- Y) D$ a( D" B# i6 l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' Y& f' p- h0 q# G( B5 E/ F3 vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ w1 c1 Q& {& x' J" V
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ w- A% }  M9 B9 G  i
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 m; t0 _6 {" u* M/ t9 l9 s# }
}
% c. m* [. J" R$ B6 M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 q- [3 f/ ?. \$ g4 g- p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 17:23 , Processed in 0.045912 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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