MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,  F; ^" ]% r: i! W; w' Z1 n2 L
input mcasp_ahclkx,! f: {1 {9 K# E6 `. s$ h& D" Z
input mcasp_aclkx,
' Q* L2 R9 I; r. i" E, Q) vinput axr0,0 F! i$ i* h. I$ f1 E; h- t
* f/ b* f3 a" p9 [: E! v/ U5 S3 [
output mcasp_afsr,) @& s! A7 {9 l* b& }6 q
output mcasp_ahclkr,  c& x4 e4 z5 @/ d/ w) c- y- y+ a
output mcasp_aclkr,7 ^7 p( @7 u: D/ z) {
output axr1,. m9 }. c, t5 Z9 L6 N' T
assign mcasp_afsr = mcasp_afsx;
* t: `; L: C. B8 E2 M3 ?  Jassign mcasp_aclkr = mcasp_aclkx;
* l. A1 \$ |. `# o" p9 i; Kassign mcasp_ahclkr = mcasp_ahclkx;
  L9 U- b' y% c4 o8 |" Lassign axr1 = axr0;

2 W. E+ U6 d' `  O, y* m" |
- X5 l9 Y9 h# Q3 [# J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ R* P8 K" R" C, C
static void McASPI2SConfigure(void)
7 C# N5 `1 j: b! S7 K{
$ S% D. H- `1 L2 ]3 ]! @% Y; ]9 O* _McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 {9 Q4 w' B) d4 R; ^- O' E  W1 l# lMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' Z" I. P( ?& U* Q2 l2 p! t7 U( B/ \McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( Z4 K% P, @1 H
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; ?$ Z+ D0 d, S) \9 k- C* |
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! n. c( d3 O! r7 r( K5 L0 `
MCASP_RX_MODE_DMA);1 s$ M  G9 }0 ^3 Y# O
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 k7 D' ?8 @! Y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! o- F5 Y. ?# m( Y! s- K3 GMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # g! Y6 s4 z7 I5 W' S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 R' p6 N0 m5 vMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / y. o0 ]+ x& a9 Z! g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ U, p# n) V0 r
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 H/ `* h; F; q( n. g, h
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   I; U: Z" A( c; ~% w. d3 a
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 g1 I# P3 f9 Q1 k
0x00, 0xFF);
/* configure the clock for transmitter */
/ p5 f! @* n1 s9 |5 G4 x: fMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ p1 x9 N. C! F' o9 @
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " K' \: F8 r4 K0 k- N/ R1 G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 l, y. V- ~) \/ [. C. A) d0x00, 0xFF);
/ s/ R* ?( K7 P; M$ |+ n& ?6 Z+ X: V
/* Enable synchronization of RX and TX sections */ 4 Q1 o) _, D; W
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  Y/ f! N& x+ G$ q8 ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 v: ?/ B$ Y2 l0 t, x/ Y4 a, QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' P3 y% u6 ~9 e6 q0 u  X: b7 [4 q
** Set the serializers, Currently only one serializer is set as
  h/ `. ]0 a' D- j, h' M** transmitter and one serializer as receiver.3 [1 n: y, M0 N: m, ]% u
*/
; O: o( |% B1 ?McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- ~; B4 h4 w3 ?% |) ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 T1 {/ R7 ~  X7 _. L** Configure the McASP pins
3 |  m. }' r) e** Input - Frame Sync, Clock and Serializer Rx' S- Y% L  q: ?( c) ^1 L! r' X
** Output - Serializer Tx is connected to the input of the codec
7 T( K! D; j$ M*/
: z3 g* g8 Y8 n7 M& M8 oMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 f6 H1 Y" c% U( N9 U, d" F" y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 @6 F' {/ I# c8 K" H) N7 ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 _& l5 q7 S( x* `  X+ c5 L| MCASP_PIN_ACLKX
- @- w; x9 R8 Z+ k| MCASP_PIN_AHCLKX
8 I& ~; ?# c( o5 V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ F* N( Z8 I- R) y7 e' T  {% a
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( N) ^" z( Y5 A: O' N2 U) V
| MCASP_TX_CLKFAIL 7 U4 c% a! A- Q6 I; A8 y
| MCASP_TX_SYNCERROR
9 a6 C/ v/ P/ z* t2 [0 l6 a' || MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 Q# X, H6 J7 E| MCASP_RX_CLKFAIL
; f. e& B$ z+ o1 w& [  o* h2 e| MCASP_RX_SYNCERROR 8 v( d/ C: V0 g  i# k, M% X
| MCASP_RX_OVERRUN);6 w/ q" Y4 Y* X% f4 r8 K' w1 K$ E
}
static void I2SDataTxRxActivate(void)8 F$ `2 Y& j0 t" A
{
  s% W5 M/ j: e7 H8 f  \! ^: D+ [7 @/* Start the clocks */$ k, `* F7 N9 q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 \) N3 G& K+ oMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 u0 i8 f. f0 }* z( @, Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" L! S2 ~4 j0 F- k3 w, [& K1 \9 oEDMA3_TRIG_MODE_EVENT);! Q5 j4 ]) i' ?4 y/ v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / R2 x+ ?$ y" X8 R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */. r! t1 ~8 d3 u( b: N# s. J2 j: I
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; _, C2 O6 G+ M! y+ B* X! u! J/ iMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, B3 X: o( t+ W3 R; \
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ G% ~, T- w9 Q. Q" C8 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);# S- B. q! L# }1 J' @  V6 W# |) ~
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);" u; j! e" c3 Z. [0 c' m- O
}
1 L; Y2 b0 w8 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# k( y1 @3 a! _5 a0 y, ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-4 08:31 , Processed in 0.039938 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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