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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11801|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& n  e9 V& F3 V' T# finput mcasp_ahclkx,
+ |- t* a: T2 U5 k6 _* i5 N0 G* vinput mcasp_aclkx,
6 d7 w, g9 ~0 S; l% Cinput axr0,- L' u  n1 g: n" ?) v

5 v5 T9 A( C) f! Z6 }/ J# k, qoutput mcasp_afsr,  D& R+ M7 }/ U. E1 c
output mcasp_ahclkr,5 W, P9 C6 [6 L$ N- p" x- M
output mcasp_aclkr,! X, A1 \- q' Z
output axr1,
( E' ~, Z: I& c7 c6 j
assign mcasp_afsr = mcasp_afsx;
- t# u" u6 Z2 k2 B. ?6 z) A1 uassign mcasp_aclkr = mcasp_aclkx;
5 h2 V7 @& w7 G  `/ `assign mcasp_ahclkr = mcasp_ahclkx;
/ ]' o! L  `, Rassign axr1 = axr0;

+ g0 D2 E# s' w+ x+ W$ f/ S# f7 j$ `" k$ e: F- I' g" m3 ^8 a' H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 r- l, K+ z/ ^: k) M$ \( ?
static void McASPI2SConfigure(void)
8 X/ k  {  i1 _) a( R! B{0 ]" K/ S; W2 t. i' d0 ?" h
McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 w0 J# }- Q2 S7 ?7 M& O1 S
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 Z% _5 M; V1 ]6 N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) _9 I% [. s1 s7 hMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. Q* s2 Z# A& z4 X+ |  ]7 gMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& a4 Q8 ~6 b% T. a- {- k- E
MCASP_RX_MODE_DMA);
9 L2 Q- F4 K9 x, Q: uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," d) `0 I+ G. W2 y/ i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- N( ?+ p/ l" Q! x, q% Y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( |8 F( Z/ C+ d/ Z! A) P8 eMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 k5 V* M! N1 g6 o$ [% F# J
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ ~& s5 ^6 A$ Q0 H- G2 G2 F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. J2 q: c, ^" U! w$ B" Q) j- \
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 z$ d: S9 A! n3 u& A% i& L8 p
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- M& m$ A- n" N" T* f3 oMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
6 A7 F* i" E3 o4 X0x00, 0xFF);
/* configure the clock for transmitter */
( u, x) k: x  z% Y6 [9 F; GMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 X7 R; w' e. Q' {* f8 y1 b1 I
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 ~' f. b% _2 g: QMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" k0 \) ]: `2 B+ D; `3 m# \8 l0x00, 0xFF);
' s2 J; V+ ~, E6 W+ C+ g% R1 u4 \' d% ~4 @+ R( [- ?
/* Enable synchronization of RX and TX sections */
/ {; h$ X3 D5 }3 bMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. L$ r& p6 w7 b
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 C. \3 e4 q1 g: s+ t+ J# cMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! v5 r2 E2 k, x/ d$ G
** Set the serializers, Currently only one serializer is set as
6 x1 B. J" ]+ [; N, ?- b1 V% w** transmitter and one serializer as receiver.- f& c2 B, s# A5 J' C$ r+ g) ^( h
*/
; ]: u. A/ s& K/ o+ YMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) _9 N. ]2 c% [$ l5 }$ \! X/ ~' d
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% ?% e1 v5 K/ d& r7 i) b** Configure the McASP pins
+ `0 W3 y2 ~5 j' [! W: H, ]7 f** Input - Frame Sync, Clock and Serializer Rx  K% z" k) l+ F5 ~: O0 Z4 s0 j. S
** Output - Serializer Tx is connected to the input of the codec 9 I0 [0 H$ h0 X2 d; v1 D0 ?. e
*/
4 H8 D) I. g" m5 yMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
5 c9 h: p1 u/ ~7 A* }) W/ A% yMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));1 y- C) H% b: l% p
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX4 Z9 W1 E% h; R. l+ C& ^
| MCASP_PIN_ACLKX/ N' T1 @/ v, J: s. R! L. D. R6 N
| MCASP_PIN_AHCLKX: A; G) u/ n( Q, k3 \3 U
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 }" x4 {! b+ r- u* XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: _" p0 o2 O3 B6 V# k| MCASP_TX_CLKFAIL
7 q4 T, x8 d1 W| MCASP_TX_SYNCERROR
) r) o0 n3 h& D| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - f* r9 M2 K& }8 D# Z0 U# I
| MCASP_RX_CLKFAIL
' D/ @: m6 P$ u  L9 B1 x, M| MCASP_RX_SYNCERROR
2 t; r) q: t4 B* C/ S4 Y| MCASP_RX_OVERRUN);$ |, `) a1 P0 T" N
}
static void I2SDataTxRxActivate(void)
: m; v2 a/ O& O2 I% y% Y  _8 K: u{
/ p/ R6 r0 M, i. c" r! `/* Start the clocks */
) w% d( m8 p9 f  tMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, j1 w3 h- x, f+ G4 q
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* k) C/ j5 K3 B! p# r& n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; }1 }! H* X2 |$ }1 _( M& _
EDMA3_TRIG_MODE_EVENT);
3 U3 {0 _  c, [5 b' H! A/ sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  p- S4 B" D- U! D) cEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) ?* e4 j5 @$ n* T" jMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- z# m# {) S5 l8 ~; iMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 a* F" N! G# f" {while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, t7 C- ?  B$ F1 [# ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 R6 g  n+ y8 x% G/ z: m( Z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 X4 b" \* X% E( m1 h}
' ]0 H* H7 g3 o5 b* D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" _, N, d6 t3 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-14 18:09 , Processed in 0.039210 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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