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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11259|回复: 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,. i  g: {+ D7 c! x
input mcasp_ahclkx,1 Y: }6 ]: d) _4 d
input mcasp_aclkx,
$ |# x7 W3 z9 N8 ^* S: `( Pinput axr0,: z" F2 Q: b- t) O& J& N
3 P. d" w. X0 z5 e% f/ O
output mcasp_afsr,. e* }+ `+ y2 R& r8 `/ Y6 W
output mcasp_ahclkr,' B% q" d% s, [& Y5 I" u7 N1 Y$ h5 i
output mcasp_aclkr,
9 x5 f7 p$ y! g+ j- @7 Voutput axr1,, T$ S5 h2 i( m, s% n" r/ B
assign mcasp_afsr = mcasp_afsx;4 w/ U; \* i1 K$ t5 t
assign mcasp_aclkr = mcasp_aclkx;* J4 P* O$ K# t4 `4 m
assign mcasp_ahclkr = mcasp_ahclkx;
+ T! G1 _3 v! K% aassign axr1 = axr0;
1 z/ Z2 k* ?8 d; T
+ g2 e4 u" y4 g! z6 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 ?. E+ i- `6 @- v& s
static void McASPI2SConfigure(void)
8 ], q7 z6 K  U, _0 [{
4 s, n( Y; M& K9 IMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
% O0 c: B" f0 s, I9 aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 c1 t& e, J( I6 O( y; f, H3 r, J; yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( r8 d3 [" }6 b# R. `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: g. y7 r; ^7 m" @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  E" N& O+ ^7 n1 Z
MCASP_RX_MODE_DMA);$ v+ m3 {, \$ {) g$ f6 e7 N0 `- N
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 F/ d/ v  ~8 w' x) aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; s8 ^- _% L. i! i/ A  @# z' r0 Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& b4 p6 E" o; i$ v5 X  ?% z) lMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" M' n7 Q  H% g! m, aMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; ^4 \/ L) ]# J7 p7 h9 R& S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) y, {3 ^6 z0 U+ BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 m5 ^. j) z# X4 G* \" ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ d* Z6 f- `$ oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,9 _  l' G6 e6 J2 g, V4 b  `4 w5 u
0x00, 0xFF);
/* configure the clock for transmitter */& C" M. o! v- T! I: G! c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 K0 D; M) @1 U# j7 i/ PMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % J/ b6 O: C2 _& }) X
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% C8 P/ B& s/ [4 @1 G6 o: {0x00, 0xFF);+ T, U8 v8 y% S! r8 J$ d( w4 Z0 I& R
( C6 {0 U' H0 C6 F+ x4 j) c" E
/* Enable synchronization of RX and TX sections */
& T5 R- S: t9 k- u& {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! x+ C; L( o( v* F/ ]: X9 aMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; z. |2 Z: M  ]+ E4 M  cMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ {6 `3 J  S; s( S
** Set the serializers, Currently only one serializer is set as
  C" l0 P% v$ N** transmitter and one serializer as receiver.
6 U/ G6 f/ L5 N2 l*/) [5 W" Y8 q3 |- X! q% ]
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ r5 P, L4 v3 g* v
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 P# R" |! @; p. @* u, \; |
** Configure the McASP pins
. W+ g- z( M/ M2 O  j  \' w  q** Input - Frame Sync, Clock and Serializer Rx8 c: w# I0 N8 I% E5 ]7 W
** Output - Serializer Tx is connected to the input of the codec
: Y+ ^1 _# q7 o*/
' t0 y$ I/ e% DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 j% p: b4 C/ U7 L) FMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 z& p& u9 X2 ^+ \$ |- }, M# m$ a
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX1 E5 _8 v9 v. h/ M7 z2 k, }
| MCASP_PIN_ACLKX8 D/ j) \3 ?. x0 Z
| MCASP_PIN_AHCLKX
& U5 P  t6 ]# {5 || MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
2 T1 p6 M9 |% @' S3 h9 I  i! wMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ z- U8 S# b. I4 p9 A| MCASP_TX_CLKFAIL ( F  D, H& V/ D( L# e  b
| MCASP_TX_SYNCERROR2 ^# Z  v& W& [% b3 B# L5 X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 G% u2 G1 m7 R& y; N* R* V
| MCASP_RX_CLKFAIL
1 l; s/ h; y, u! o| MCASP_RX_SYNCERROR ' S# M7 F2 u" R! Y- X/ T; ~
| MCASP_RX_OVERRUN);
# B7 F3 Z+ ^7 g& C# @4 ~}
static void I2SDataTxRxActivate(void)
9 Q# F5 Q  ?* A) `2 @. h) T) S* ~{" [- x* B3 L  T7 i# d
/* Start the clocks */
3 h) C( a: A. Y% C# RMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; v' A& r7 i4 R7 Z$ S& ]0 Q  m
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 I( j7 _5 `5 I1 W6 s/ M  MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) H; Z) D, U$ d% Z4 ]3 IEDMA3_TRIG_MODE_EVENT);1 c* k1 T( D) W, I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 o: V8 T0 B1 L# j
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
4 t3 A) O" r, l5 f: tMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 h, U7 P3 U* C, _% b9 E! nMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 I- u) |" u# O4 \+ Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 x/ Q5 U+ W: w) ~) n$ H6 ~; jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
9 L* ~  R, ?1 T) x) H5 k0 MMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);: o( b. W2 t* k# E3 L" O( w% k
}
2 D# N$ {2 A/ ~$ m
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( W8 n' M+ J( A1 _# H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-28 12:29 , Processed in 0.039511 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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