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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12673|回复: 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,
+ ^+ ~0 A; N; F9 n% a/ sinput mcasp_ahclkx,2 r1 I% N9 {, S3 B3 Q9 R+ m$ P
input mcasp_aclkx,# b# j8 j3 d8 j" T2 {: u1 T" _* l
input axr0,
4 b3 X* D" n* B
) E' y) P' R9 y# P7 Z9 d2 w1 Zoutput mcasp_afsr,
0 [9 {+ M. h# A- G4 x' loutput mcasp_ahclkr,
; R4 \  V2 Y$ t1 a" p3 B% boutput mcasp_aclkr,; O* @& C5 ?. t* j8 Q6 d% Y$ k: }* E; u
output axr1,. y2 `1 j; [! r" b; s0 {3 w2 v. N
assign mcasp_afsr = mcasp_afsx;2 N* W  W% ]- J+ u( x! E8 F: e
assign mcasp_aclkr = mcasp_aclkx;: N. s# a$ C" u+ a! M8 l
assign mcasp_ahclkr = mcasp_ahclkx;
& Z& l; ]9 }) |# @5 R0 T4 n" W: xassign axr1 = axr0;
) I0 h) L# {$ z1 j

0 U: t# x) l0 A$ i! @; [
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 h, S, b3 n& h1 x" s
static void McASPI2SConfigure(void); q3 x& D. F1 e- H3 P; _7 R
{) V& j- h5 B9 v. ^
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ M9 c% u; T0 y) o( ^McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 N' M7 m; N3 E& b& GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ R. w: \% R4 H. ^$ J8 G6 I, e
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& g& X- d# T4 T& eMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ p% r  X/ s; w( f1 r9 v7 {; g
MCASP_RX_MODE_DMA);
( j0 _6 @- I" U$ n8 O1 D/ m+ u8 AMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! _0 U6 T# D# cMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ F1 h6 p/ P2 G; z0 q: wMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, $ Q% M. z1 Y( T
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);7 \% z& x5 G" W; t  G7 n
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & T# ~. E/ @" ~* U- ]7 R4 x
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% |' z. Y: u$ E  O) ?/ H4 V- l9 dMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; c/ H9 T3 u  Z9 a5 c
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. R" S! L* o1 Y' ~0 H4 J  U  kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ b- E$ y# \) z/ P( A; E* ^0 r0x00, 0xFF);
/* configure the clock for transmitter */
) J, D. |. S( hMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% r3 x! F- }+ K( QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 P/ f) L4 `+ t% g/ x& ]( x0 tMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# R# T  d) K3 Q8 ?% J
0x00, 0xFF);. D1 [/ b3 D: `. l
9 C0 v6 {, o5 h2 ^% x' T8 _' G% p
/* Enable synchronization of RX and TX sections */
/ X/ a/ j/ S1 I; Z! M& BMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 e4 `% L; [, o6 E% ^# V- TMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 p+ _* v! g* K1 `6 P& _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! ^/ m3 T8 F) k9 z" n
** Set the serializers, Currently only one serializer is set as7 F( M, I, B1 L/ }/ n, V
** transmitter and one serializer as receiver.8 B( I& O5 d2 Q1 j
*/! I3 d. q# Z+ C0 _
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; I, p/ V- g' y5 rMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
. O3 a, v3 J. w- L! @' n& \** Configure the McASP pins , Z; U4 c0 r& t% p' C+ A
** Input - Frame Sync, Clock and Serializer Rx! W% z  y; i0 N8 |
** Output - Serializer Tx is connected to the input of the codec
1 l2 A/ i9 ~9 ~2 p0 @) P! P*/6 n, K3 ~- j, N7 ^+ _2 D
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! X; W3 R( Y" Q9 F7 Z+ k7 dMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 l. l4 K, N7 n- [" V) lMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& {' y- R6 T5 ?  F9 q
| MCASP_PIN_ACLKX
6 R: E: `7 I- I0 Y| MCASP_PIN_AHCLKX2 }1 W& N, Y" p* ~. o8 c# r  A: ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 i4 ~8 P/ d+ Q: ?
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: C" e- D2 n' ^) U/ ]| MCASP_TX_CLKFAIL
1 g+ q- p2 I; |9 B. V| MCASP_TX_SYNCERROR
. X5 v! b6 V, }9 J9 l| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
+ y2 ^! F, M4 @/ x6 b8 N( ^| MCASP_RX_CLKFAIL
/ ~6 ^4 T) _5 D7 _' l| MCASP_RX_SYNCERROR   ^/ Y% N. |1 q" i  x
| MCASP_RX_OVERRUN);
" h4 J; ]! P: Q1 {}
static void I2SDataTxRxActivate(void)
4 [" h6 ^/ O6 t8 w$ r; {: ?$ L{
: G4 O) n! y2 h1 }- ]9 n$ W/* Start the clocks */
4 O/ r6 ?7 ^6 r4 w6 ~McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" M* [; [2 v  q; P* C; N; B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; q' ^& W: g- u; Z) T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,* O1 t) i3 ^; i! ^; d, K2 s: e
EDMA3_TRIG_MODE_EVENT);
$ s- \& t& ^4 f/ _; DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
7 P' q* ~* n! o8 j; i+ KEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" }( x# `& p$ a. DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ Q7 J8 }3 ?6 `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. n/ z& H' i: y; k  E5 M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 K' d6 \" Z, i1 ?- ]McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 j5 ]' U2 U. ?
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" L* b2 a0 Z# f% c, C}
2 R) _" Z8 a1 H
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" H" a- n5 C, D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-2 22:04 , Processed in 0.040593 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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