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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1206

积分

金牌会员

Rank: 6Rank: 6

积分
1206
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
  G9 D6 r+ e& N0 H% i! ginput mcasp_ahclkx,
/ S" [% R+ |1 A* d) qinput mcasp_aclkx,
3 S& @9 O+ o+ t/ f9 c5 K# Linput axr0,% Q4 g, q/ z" W0 u* H2 f4 N
$ C! D. [7 M+ j) ?
output mcasp_afsr,; W: X. n" a3 j. W3 d: ~. D
output mcasp_ahclkr,7 h& v+ d5 H3 X: I
output mcasp_aclkr,( ^$ ^. I; I6 V) S6 s! Q
output axr1,4 N2 E/ M6 p2 G3 |( C$ O( {
assign mcasp_afsr = mcasp_afsx;
" L, ^# E1 j; }9 N1 Zassign mcasp_aclkr = mcasp_aclkx;5 ]6 G( l) S# v8 w7 s4 S
assign mcasp_ahclkr = mcasp_ahclkx;
: g7 I; G5 w" j! ~& X+ passign axr1 = axr0;
+ c6 `' }/ q# m

4 {' @9 f' l0 S& {8 y: _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 L- B6 b, ?; |5 l
static void McASPI2SConfigure(void)( y3 F8 K6 ~8 h; s; G) L9 v7 O
{( S% B8 y$ C4 |4 s" ?& Z
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 A' ?$ K. U4 [7 w4 ^; BMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' q  \: r- Q& O! l1 o) l; }1 q6 z4 zMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& ^+ |  u9 f2 b7 d# C
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 H7 D* w1 L& H. h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* C. [" a/ y7 I; N: wMCASP_RX_MODE_DMA);- p. f. y1 B1 j0 y5 `, t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( h- y  G% n; p. W0 k  |
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* \& S4 N6 ?  T' p# E+ K8 Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, + S4 K! Y- Q+ L+ e7 _
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* R4 {8 W/ `: x4 K! B9 [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 ~: O3 S6 L$ [2 \; qMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 k8 g" H2 ~* I8 B
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 o' T# `/ J+ d- P4 pMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 E/ y5 p7 W) E  \McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# F" V" L+ U- Y/ H1 L0x00, 0xFF);
/* configure the clock for transmitter */1 [7 {- t1 n& v" d( ]
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. J; m/ j, w4 @8 g" r8 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" I5 f; A7 `0 L+ j# h: T$ CMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% g5 h% v  b" x5 z' z4 D( s0x00, 0xFF);( V& X" U7 k' f* `  c

7 q4 p* Y  v! y  n/* Enable synchronization of RX and TX sections */
6 x- ~& ]8 y" g2 B1 BMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, {1 X6 g0 `3 ~; y4 p/ M( q# f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 X- m% c0 _3 D" n& F# |
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 s  M- A8 g3 P6 H1 i# m
** Set the serializers, Currently only one serializer is set as* [" T1 C+ ]3 d/ V) i3 h/ @) f
** transmitter and one serializer as receiver.
3 |8 Y1 a" w+ M2 G3 m; M' B*/
/ W6 ?# m9 a; }, [9 F$ zMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ L. c+ k4 W+ C- w! X0 r$ {5 C
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 o4 D- H, d* g# q6 v! F7 L
** Configure the McASP pins + t% B) M: X7 [0 B; p$ Q. `, l
** Input - Frame Sync, Clock and Serializer Rx
& a1 w9 l! T, y% {; b, o** Output - Serializer Tx is connected to the input of the codec . n  ?  w* Z/ M! I( {8 W
*/  C' h! i2 d6 _5 O) T" v5 I
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 f0 I; `# C6 M8 i6 ^! EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: ?8 `- y5 \( q; H1 I, r+ Y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* ^. V/ k4 K" }4 L) b5 Q
| MCASP_PIN_ACLKX. b8 i, G# v6 j9 W# o
| MCASP_PIN_AHCLKX
1 Q5 V$ j: G+ M3 g+ _* u  D8 q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' V  f8 W9 @4 x- Z5 O! V7 J
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" C8 o/ `5 s' N$ z8 R# w7 D1 Q% Y3 a| MCASP_TX_CLKFAIL
- B; W) K* I' h2 A: B7 Z| MCASP_TX_SYNCERROR
5 u8 P  ]! I4 X! G| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. k, u9 _; K/ H+ e' X| MCASP_RX_CLKFAIL. @6 g# u- f9 {% A9 O/ M% k9 ^
| MCASP_RX_SYNCERROR 4 o* c: V9 X. d1 X+ |
| MCASP_RX_OVERRUN);* B  {" ?/ f4 n, L! [# X
}
static void I2SDataTxRxActivate(void)
: [$ t; N1 t5 b& p. _. ]{
% b. Z& L& H' k3 z3 o( p# R/* Start the clocks */
2 L- ~6 G4 \/ M) wMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ \' I/ H7 x1 `* J' `) ~McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */- l8 O% l9 l0 F3 a- l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,8 h/ ^& E0 x. o2 s, c4 T! G
EDMA3_TRIG_MODE_EVENT);
# e3 u" {* s1 g2 b* DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - r. o% T; M7 p' N+ r
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 S+ K5 {4 b$ @, f6 E, o6 x
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 y5 C7 ^! q1 J8 X' {3 H1 a5 fMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, H1 d5 g5 A0 t! d
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" E8 j. W4 ^8 q" q) h1 y2 o  ]
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 r; U( C5 C+ q* K" m  `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);- u- _/ ?1 K# c* O  R3 |
}

7 d) a! m/ ~" T) J  U
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  v3 H1 r$ }$ j) Q* w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-15 07:48 , Processed in 0.043769 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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