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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13597|回复: 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,# f, P3 Z5 M9 F* g6 p3 F: @
input mcasp_ahclkx,
; |; G# \! j( r( b$ Linput mcasp_aclkx,
2 Z4 |8 w. Z3 linput axr0,
. O; ?$ S' v  m. a: q- f9 x$ t' f9 x! G: R
output mcasp_afsr,
, e4 l0 W+ ?9 z1 eoutput mcasp_ahclkr,
/ W4 E- w/ {- V; m0 `$ o: Eoutput mcasp_aclkr,
8 f7 A! |9 B! B: m) goutput axr1,
/ s! ^  ]* }9 d& Y. C
assign mcasp_afsr = mcasp_afsx;& o, Q; s1 i, s: y' n* @9 K
assign mcasp_aclkr = mcasp_aclkx;( h" B: g& @1 P3 Y! S
assign mcasp_ahclkr = mcasp_ahclkx;
8 x" ~1 [$ l/ m+ P. h' ?assign axr1 = axr0;
' [! }' ]% x8 t8 k
  P$ i; U1 R4 K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 E7 |" B& U) p  G3 S6 j  z
static void McASPI2SConfigure(void)5 F! \% j- P9 ]# D# G4 @" q3 z* I* G
{
2 t: C5 t# ~& n' y3 ^7 D1 U) eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);1 C6 R) g% @* W) R& W+ _; a
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, x8 R, a) j5 H% D7 q6 VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ j, ?; |8 @- Y) Q- }/ f; c* Q6 nMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( N. g! h4 Y) B2 `5 M  @, Y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ l; [/ o, K- ~9 xMCASP_RX_MODE_DMA);+ o* u. f2 ?6 \5 h/ G5 V
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ |3 E3 Q& u6 H+ @* n# \. F+ m9 w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- G3 @! R/ j, F4 Y: y7 N) }
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
+ T. M: @4 `+ Q: ?( {) i- pMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- q! J( }7 A, t, b9 J9 F$ H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + [; H! Q6 r+ v. D
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ v! D) n+ z. D# z& r1 j6 P7 d
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  e6 n% O/ W+ N: c2 ~McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) @) L  W" y7 }% t/ }  Y2 T; ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) C7 H9 N  j4 T" Q4 s$ t5 q* N
0x00, 0xFF);
/* configure the clock for transmitter */5 ~, R# I) U, c( n1 |- l* e6 s8 O
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 h. y3 i+ q" j# y4 i4 J* h3 J6 MMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) Q' f9 \' P& o/ f" S# [: Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 v' n$ X, n9 ?& s, k8 f5 c5 z
0x00, 0xFF);
' E; }! b! o; R. s/ b. ]  s* V9 [# e% y% j9 F. y* a3 F
/* Enable synchronization of RX and TX sections */
1 O0 n8 m0 m& j6 }McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. c9 W% ~- ~1 V( c" i0 Z0 eMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. \9 h' f1 O) F, p  b: kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- m5 t6 R7 Z' O& b) F$ f** Set the serializers, Currently only one serializer is set as, p* g. w/ U7 l1 N: J
** transmitter and one serializer as receiver.1 c. i/ b6 Q2 |+ B- ~
*/
* ~+ [0 ]6 }, P2 fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
5 O7 W/ j( q9 R9 e5 U$ T; PMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
' a, _+ E, N1 [- x( X** Configure the McASP pins
2 G6 ?. i% m2 q4 q( M) p9 j1 F: O** Input - Frame Sync, Clock and Serializer Rx. k+ i- l( o" u3 N& H1 p% K1 `0 ^
** Output - Serializer Tx is connected to the input of the codec / e6 E1 ^" e* |" A4 f( m! y
*/
( a+ s& Q: s  q- Q, VMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" {1 g) J! _3 K9 l
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* q- u' i8 G" ^: NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 Z5 u& x" c2 y  I3 A. X| MCASP_PIN_ACLKX5 p" j; J& A( R4 o
| MCASP_PIN_AHCLKX5 r7 X. Y! @3 X. X4 ]
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 L- P( n& d$ h
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 L5 W4 M' Q8 [8 K| MCASP_TX_CLKFAIL
" z2 ?6 B& o6 s% N1 y$ G- _' P+ N  l| MCASP_TX_SYNCERROR, \0 v# e  k7 G, d  ~  N
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 i( s1 w, C$ v0 ^( |9 [
| MCASP_RX_CLKFAIL
9 y1 \/ v: [4 p1 u| MCASP_RX_SYNCERROR
. m: t* ?+ ]( N# l  C& T+ C| MCASP_RX_OVERRUN);
, H$ X( Q. L) }5 T8 K}
static void I2SDataTxRxActivate(void)
2 E& F3 A0 p; O$ ]+ t+ C{  ?4 V7 ]1 x" _
/* Start the clocks */
1 m# Z4 ]  b) h9 s; a( n+ b* u. MMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 a3 r) }2 A/ z# n% uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 ~' \& S: C# u7 PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 W& a9 B9 W, gEDMA3_TRIG_MODE_EVENT);8 A. c# ^7 a3 d( n8 |& v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " P, L. C$ p. f
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% Y% N" W2 o3 O' F* ]9 V6 I0 Q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 l+ G6 F- N  B# q# d8 m! o# j5 ?
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 O# T& v$ f& H# B) {
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ p  H5 l8 D2 ?( `- }/ m3 R$ s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);! R+ w8 f- ?: e, E7 M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 @, D5 t7 R' O' C+ [" j  q9 R! g5 [
}

3 Q4 ]: Q8 e) N' T: e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ g6 ~3 V. Z+ S( Q- ~* Z) G9 k' Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-10 14:54 , Processed in 0.040722 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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