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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9105|回复: 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,
9 c2 J4 n( M+ m2 V( o$ rinput mcasp_ahclkx,$ S& C' t1 n5 g* |  Y* o, e4 ~
input mcasp_aclkx,. l# H7 O" I! E( t+ f# ^. u
input axr0,
/ R0 a7 @. k& m2 z2 \4 t% t! X) C: P
output mcasp_afsr,
: ?4 I: `) j7 L7 |2 Xoutput mcasp_ahclkr,
' A5 R; C# h" |4 Toutput mcasp_aclkr,
, c* o8 D/ N# o  h2 I$ X$ noutput axr1,
: J- Y) g* d. k2 s
assign mcasp_afsr = mcasp_afsx;
# ]7 i, t8 u( Z" nassign mcasp_aclkr = mcasp_aclkx;, n2 D$ l8 d3 [- J& g2 G/ p9 d4 f
assign mcasp_ahclkr = mcasp_ahclkx;
6 s; J0 U2 [' u- Q3 b) V: O5 \assign axr1 = axr0;

' l2 M' D% u$ S$ n' j
/ U% u0 K% a8 ?( q( X
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, R2 c; H% g; G9 H- R2 L
static void McASPI2SConfigure(void)
: {9 B/ ^- E/ m! e{! ^, ^# N4 u/ n' w& R
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 c) X  y9 R( y& m# d. nMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" z+ V: B; @( L# y$ gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 M  Y; @# l) K! D$ S- V, S
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" e2 l6 d* x3 w( {
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 z7 W) v9 ?. T3 C# CMCASP_RX_MODE_DMA);6 l3 S" r0 ^3 T& I9 i6 {2 E
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 q% e( w% t0 F' O7 f
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 M5 Q3 _  T( s* h" x3 H4 z* z% t2 O0 x
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 ]& i4 }6 g7 c& t; H- ]1 X* N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& H4 l: w8 C2 t1 y- gMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( T+ z6 s0 d  w/ A) l# N5 i
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( g7 x3 p, Y8 vMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 N/ B- b9 j4 ~0 C- U; n" s( {' pMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 M8 z4 {+ H1 D* K& nMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: ]/ C5 R  e9 }
0x00, 0xFF);
/* configure the clock for transmitter */; I. k7 I* h' A
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- c4 \5 v1 T# K# D- W3 j/ d. h; f1 o
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
* e3 V$ [: ?. R2 N; BMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
* k  M; B- c  ?8 z2 I3 X0x00, 0xFF);
2 L: d# D' F+ W* Q; |
2 l% O2 q6 D" w/ X/ j  e/* Enable synchronization of RX and TX sections */ ) L5 U4 _" t* ?4 C: ^/ O% K7 ~
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 [+ b: h3 C3 Z4 ]McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 K1 D- b# {9 V0 s$ cMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; c" {, O( @" g  ~6 b0 m
** Set the serializers, Currently only one serializer is set as
( |; O/ u7 S  W4 `# p( c' X7 F** transmitter and one serializer as receiver.8 V) x7 a( Q4 Q/ U
*/7 x) |7 T* t7 r& P4 K2 @. U8 u
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 e3 p) D" g+ Y1 n8 \+ L4 v& j( k
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 {% A8 o* Q& d- Z* |( r: n** Configure the McASP pins 2 {0 y; t+ v$ P% N& d* o! k8 {
** Input - Frame Sync, Clock and Serializer Rx4 D, E: Z: P/ n+ N+ D; I/ M* k# ~6 O7 s# c
** Output - Serializer Tx is connected to the input of the codec
' M' g6 N$ `& f1 h* }$ E: ^- ~*/
6 E/ l# i3 w" K( N! J* D2 L; U5 TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ i! t; b5 @2 z' ~, _1 g. aMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ X& a( N# ?" g" R) K9 I0 p" H* z0 }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 P" h7 `% A2 }. a; }/ L| MCASP_PIN_ACLKX
7 d$ X1 g1 j- D  C8 D+ G% e2 B| MCASP_PIN_AHCLKX" [# f" Y" N; g; g# k$ Z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 s0 D: P, @6 K  {
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! \2 A# ]2 ~6 N0 G| MCASP_TX_CLKFAIL , O. B! ^" t2 ~) f
| MCASP_TX_SYNCERROR
. n/ E# ]* ~; ?| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " B9 d& Y+ ?0 c% [+ l# U/ H
| MCASP_RX_CLKFAIL6 h. z$ B8 ?% |1 `9 ^" W
| MCASP_RX_SYNCERROR & t" S6 j: f4 C5 y4 T
| MCASP_RX_OVERRUN);3 ~: J8 i, b1 n9 S2 W
}
static void I2SDataTxRxActivate(void)
: S3 c  ~! O" x8 M9 D+ @; l( y{
$ u( A$ D$ U( _4 n; U9 P$ e; b: t- w/* Start the clocks */
6 u. G2 a( V8 P+ M. X! oMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# _3 c+ L' e, b7 ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) d& s/ \! |6 s8 A0 L1 @. i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: a0 k( h/ `8 q, c  ?
EDMA3_TRIG_MODE_EVENT);% k  V& V4 R7 k2 ]9 a' d1 f5 m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - a4 y0 Y: X: \
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 q. z% L% F1 O! b4 c  tMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# X/ u+ G4 @8 z+ bMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* `& ~% o# m- K' Nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" q" f8 q/ e- U+ E; I$ K
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' T" ^* A' B7 d# ]( N( e
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);) N* F- V+ q+ _! }* e: {8 ~
}
5 C: [7 m2 N  }: n5 [: D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# s; [& R, \8 y+ n' I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-18 19:05 , Processed in 0.044037 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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