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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12485|回复: 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,1 A2 G, a- ^* R: h. j
input mcasp_ahclkx,4 c% K. m  @) x# W5 @# g
input mcasp_aclkx,, \1 _% q; g7 y0 K/ A* T" ]
input axr0,
/ I6 j3 p: h4 Q( V5 w0 s3 M0 d( @3 c* k6 v: u. _
output mcasp_afsr,
* o6 {4 G% q. Moutput mcasp_ahclkr,
1 h* ]2 U+ Z. K* _4 noutput mcasp_aclkr,
+ ^+ h3 |* r" v# F6 F  R/ Joutput axr1,
: K% _) j$ K6 v% A- i
assign mcasp_afsr = mcasp_afsx;6 u; x  X+ r+ B* ~+ p2 Q; `/ W
assign mcasp_aclkr = mcasp_aclkx;
6 D+ m) I9 [  ]assign mcasp_ahclkr = mcasp_ahclkx;! K+ l  o2 ]. F+ ]
assign axr1 = axr0;
2 b) z- \' ?8 R" [
0 x; `0 E6 w. J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. H, B# ]. m1 l, [
static void McASPI2SConfigure(void)& w% f$ Z. a5 E
{+ J7 G* n  H+ c7 D8 U: c
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 X: _8 S" q- T( V0 N$ Z# IMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ S2 I* X8 l5 Q& U. g7 J2 kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 z9 L4 \8 E! V3 m  I
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. ^2 S! u, n& E  R) Z: k6 U
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* C$ B" [" B! m9 Z' EMCASP_RX_MODE_DMA);
5 H2 c, m6 R& i7 i8 HMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 L5 i2 ~5 c) p  NMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 R& P/ f5 F* t- O, w0 z$ p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / _. I# f8 G- s+ S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 P" ]7 t2 g! C
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & R' i) t* P" {) b' q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 p7 d% y3 Y5 ^2 pMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* v; a5 r( s0 ?: d& W3 zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% w8 r6 {' q( _! Y. a$ `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ a& D% I: N) g5 q9 K* ^0x00, 0xFF);
/* configure the clock for transmitter */
8 c$ @  p7 k% Y8 g9 E2 G5 @McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# X1 K$ C" m) M) F4 a3 ~McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + i, ]& ~( j8 c1 Q5 c* W$ r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 j% \2 }) o, z4 v& a3 q: T7 W0x00, 0xFF);' S' e& b9 E0 l) W. P3 t" U1 R

( A6 B) n- D5 L! k0 }; }! X/* Enable synchronization of RX and TX sections */   U# e8 O: h" I8 i# O
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; x1 X9 T* q  [! N) ]# r
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 `4 a6 A1 _# d: A+ H  W0 f& K! HMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
+ m6 y% g8 N- B$ ], ^** Set the serializers, Currently only one serializer is set as
- ]7 Z: m  f$ Y4 W8 ?% e7 k** transmitter and one serializer as receiver.
1 l; K7 R/ C& P9 J*/: Q$ O2 o, T8 u" B0 R9 g3 ~# C
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' }) N0 X/ q$ e' G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- `/ h. O- I1 S5 l8 u1 e* P
** Configure the McASP pins $ d7 i8 d, R6 J3 H# \
** Input - Frame Sync, Clock and Serializer Rx
: H- j% ?$ i: Y* W' F** Output - Serializer Tx is connected to the input of the codec
/ Z, h& U5 C& l# @6 |2 r6 U- D7 J" G*/6 M! S4 E  z$ t1 n4 ]3 P9 ]
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 ~- K5 z) P. U9 G1 r/ ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! C5 W3 q7 B3 f+ p7 ^McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: @; S% S) c# z1 J: i. {
| MCASP_PIN_ACLKX
/ s$ L* E5 i) L0 g. l# Y| MCASP_PIN_AHCLKX
8 W, K1 Q; i/ Y1 }) n| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- p' r$ q* W7 H% r& T5 x
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 N, j9 o) _8 d7 x6 g& G| MCASP_TX_CLKFAIL 5 Y3 {; \9 |( d& x* M" v: Z7 D
| MCASP_TX_SYNCERROR
. j4 l8 j7 U4 P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / O$ [4 @" b4 }5 p7 \. |8 X2 g3 D1 M
| MCASP_RX_CLKFAIL2 o- B( D$ t3 |0 {# E
| MCASP_RX_SYNCERROR
* C" p9 |' Q5 I- n4 N3 A* B| MCASP_RX_OVERRUN);+ A0 z' Q; Q1 g# {. k6 n2 U
}
static void I2SDataTxRxActivate(void)* y* d! y& K! K/ f: \
{
2 c2 I9 b8 {- S# X$ }/ s# N7 Q) v" f/* Start the clocks */' \6 X7 [& `; P
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 F4 g" e# p- ~$ ^" F' }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ Y. ~, s+ ~+ b5 P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- B0 ?* V7 t- T' O: IEDMA3_TRIG_MODE_EVENT);
. q8 ^- T" e- n6 h% h6 p3 q* }: ]$ KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' Q+ p  Q9 y0 B! U- o5 l
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* K" b' O1 X/ d) B# C
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
) X8 S7 v' V, ^) DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. [3 p9 v8 Q( ]
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( ^% P9 X1 y3 d: g+ h( Z
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);! j3 T$ l0 o2 p( M( r% X
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! T9 M0 ~$ `# ?7 o. Z' I, L7 g, C0 Y! E% T}

- X3 s/ d" S. z  B. ~# r" v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  x) L7 f  w3 K- ^- s: q8 |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-19 14:09 , Processed in 0.045808 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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