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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10160|回复: 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,
7 I8 q! [( y2 ^; t$ s& b% [. einput mcasp_ahclkx,
7 Y0 t7 z# ]8 ?/ T5 r0 B' {% Tinput mcasp_aclkx,
( w1 U( |  c; _, L! A: cinput axr0,1 [& O9 A( F( r, b
% o( \8 }1 q6 N8 ]; k
output mcasp_afsr,
: }1 M$ j# W, ]  doutput mcasp_ahclkr,
& }; b2 X: I1 s* ]2 r$ b0 Soutput mcasp_aclkr,: e' `1 y4 M5 [( O4 l
output axr1,
# D4 M/ t! U9 j2 y8 b1 w9 I
assign mcasp_afsr = mcasp_afsx;
1 z% G9 f8 e6 X0 P  L1 @2 C7 m# Passign mcasp_aclkr = mcasp_aclkx;  A: W/ c; N# N! m7 Q
assign mcasp_ahclkr = mcasp_ahclkx;
  F: d7 s8 t0 h8 O# J3 sassign axr1 = axr0;

3 c. w- |) |9 K, t: s1 ~4 {' p7 _
5 ]3 s& ^! f/ h) t6 e! w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( u+ ?6 s- Q2 z
static void McASPI2SConfigure(void)
3 F  ]9 l6 w' R! s6 Q{
4 v4 x# Q! a0 e( W) `% m% VMcASPRxReset(SOC_MCASP_0_CTRL_REGS);. b( o* c. k  H1 v! c, `
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ T9 X& J% {+ Y( F' n" JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" n2 q, q9 J1 T+ _+ h. VMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) L1 n, t8 L3 O& D7 k$ s/ f: o
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 B& w% l* W. [( H6 l
MCASP_RX_MODE_DMA);# w( l- L! ^( u4 u6 d
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ A" W9 Q* {; u1 f6 v5 X* SMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 c7 y' n: J, i, C9 sMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 J4 f5 h! ?% ]$ i  T
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 s+ m; r. E+ U( }1 fMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, : e) b( N; T2 X. c
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 p& ^4 P4 q. i- mMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 G! t: k* E# b+ H. @1 E7 z, c5 L
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ f3 l$ {2 h/ e  ]9 c" \. r9 U; }; \McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 b1 r0 ]1 Q* X1 J7 ^3 w- _) S0x00, 0xFF);
/* configure the clock for transmitter */9 m7 d- ]8 x- Y+ e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  p. p# w$ S' t* i& g8 c3 D
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : z! q( T/ G  D9 h
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( P5 ?% H6 i3 \% _4 |  U
0x00, 0xFF);8 X, J6 {3 c1 v; U2 [8 g5 f
" e6 v/ _  x% {' K
/* Enable synchronization of RX and TX sections */ ; T! w7 V+ f: F: Y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( a, P: b/ j1 {$ D+ T  L3 H! wMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* e4 z7 L, V- Q! r2 C
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: l# ~+ K3 N2 L8 g) v1 r: y** Set the serializers, Currently only one serializer is set as( J; ?* C; ]4 J# k! f/ F) b6 S
** transmitter and one serializer as receiver.4 T" U" I2 l& d2 T% J8 T
*/8 e( V. S* B% |) I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& N, `. ^  B3 n1 b; DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ a+ F- e+ J6 F7 Z( w1 W
** Configure the McASP pins
8 J* b2 ?' \! b' O8 V7 `( [! M** Input - Frame Sync, Clock and Serializer Rx; a3 N- @  K$ s7 ~$ Q0 m: N; r  t
** Output - Serializer Tx is connected to the input of the codec
. ]; j( V( V0 D/ T% X# [5 ~7 m, V*// e- \- p% w  ^: I* b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ O$ p8 h5 m; @7 T* S* v& SMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 t$ c$ Z8 z% l2 k/ M- G( `
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) f, h( u8 y0 P5 K" s6 `( Z| MCASP_PIN_ACLKX
4 P, e) [& z- z2 g. n2 A| MCASP_PIN_AHCLKX& y  S1 q& I6 n% W8 o
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# b7 ~" a+ t+ C8 {- C) B& T
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  ?+ N0 R2 k+ e+ O& b! `% e| MCASP_TX_CLKFAIL
" [! J1 C5 `7 o, d* [6 b% I| MCASP_TX_SYNCERROR
+ [' d  m8 o! @" Q) Z. K! j. W" w% c| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : R1 K1 \2 b( I  |
| MCASP_RX_CLKFAIL) Y' x% p7 t% r. R; Y
| MCASP_RX_SYNCERROR
1 K9 ~! R" m! f2 {2 [1 I| MCASP_RX_OVERRUN);1 l9 a- a/ y1 c$ r- t; P! K9 F
}
static void I2SDataTxRxActivate(void)
1 F8 ]- Q% g* k2 M{+ D9 s5 P/ f8 Y! U, Z
/* Start the clocks */$ ?7 i# A. U3 M3 n0 F$ @$ W0 F0 S
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! W$ D( u" H6 ^, K( S. i: X+ u' e4 ?6 F
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 C0 C% \- M* F3 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 a5 I8 }% \4 d7 a" h
EDMA3_TRIG_MODE_EVENT);
1 h% n- V9 C! j. j! B8 kEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 P: J- T4 F; m: T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) Q8 W6 p" e/ dMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; q( K, i0 _% m! ]McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 m$ e  g; h; \/ Lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- M0 X4 l1 k1 EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 W' l2 H& J$ r, A7 x
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
8 ^& k; i7 t$ K}

5 `/ t$ p( k6 u( f+ u$ _4 b6 \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 E+ B5 z% V6 e! k' u- _& @. c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 13:43 , Processed in 0.040765 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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