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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8607|回复: 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,9 ?' |. x! a+ L3 f& X  _2 F! a% T
input mcasp_ahclkx,
/ T% r( I1 n3 oinput mcasp_aclkx,( h  l1 x" B/ w' A7 T9 R8 \3 T& e
input axr0,
, K- @2 R/ t0 e% A; B$ r0 P# k9 D* F1 B9 M
output mcasp_afsr,& x, {- y  t" U2 [4 K# T6 L
output mcasp_ahclkr,* h: l: Z( J/ g9 n: o$ K# C5 c
output mcasp_aclkr,
0 }! E( K$ ]  Soutput axr1,
/ f& N/ E2 z- S4 u$ F- u
assign mcasp_afsr = mcasp_afsx;1 ~& W8 u" `9 U* |) ]% Z
assign mcasp_aclkr = mcasp_aclkx;+ T8 [- d& k$ q! N4 C8 b
assign mcasp_ahclkr = mcasp_ahclkx;
* d5 Y/ Y: h, t+ j9 R7 H7 N* Uassign axr1 = axr0;

# @$ h! Z4 K# l$ I. }4 c9 X( k3 o* h# B0 \7 q6 D. V" m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# x* F" H, k% G: O9 u/ S
static void McASPI2SConfigure(void)
, O2 H: C+ j6 p* |/ h; s{
- y% E; W$ R5 l* pMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
, }# C: W! j2 B' w% u; c7 ?1 RMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" R+ H( U( y  M/ _/ {
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: n$ _: ?: O1 L  ?8 l; g! QMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. }" \  {6 g) pMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) E0 O- m' @! r6 NMCASP_RX_MODE_DMA);& u+ C* q2 A. M, |
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ J) Q& }% ]3 |1 B5 S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% X% s% a$ ~7 z0 J) Z  iMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 i. ?: n! x6 v' mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 K& o* D3 F1 X( K) qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) A7 r/ o$ W3 e! r
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  @; l7 @) D- w% p5 b: Q! V0 r5 ]McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. Q# j) F8 w  U; p7 D5 u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 r6 i, V4 u5 H6 S# }, {McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ u7 q$ p1 ]  s: [0x00, 0xFF);
/* configure the clock for transmitter */
4 p: [1 {7 u$ ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 o8 Z6 P, f# H, I4 M: W- a! ~2 iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   R2 a/ O7 m6 p) v$ T* l3 ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 @, E& L- q2 U0x00, 0xFF);
- R- s  {( U- D' l$ V, K# _( l0 _* e* B. t/ N  x
/* Enable synchronization of RX and TX sections */
8 s1 o" h0 j* s* `1 PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, _; n$ [2 n1 K. H3 ~, |5 dMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
" l: X* ]( P$ c9 ~' aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" {: i- l. L9 m; J) P! h: b** Set the serializers, Currently only one serializer is set as
! e5 r8 ]! y# Z: R+ O** transmitter and one serializer as receiver.
/ J) _/ N  G2 ]$ w; k/ B* h8 ?*/0 ?0 ?. {3 q+ g: C3 \" p
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: ]5 T! P) B: x/ e, sMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** v  l0 u; i/ _5 H( \8 u
** Configure the McASP pins
+ @: @  ?0 g- \' M3 \5 K) A$ o** Input - Frame Sync, Clock and Serializer Rx1 l. i. C: V4 G$ o
** Output - Serializer Tx is connected to the input of the codec
" h# R! L- x* D8 k% w* o*/! U/ j  i; S0 @5 e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
. x3 }% b2 D" E( y" AMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 p" n1 W8 z8 K, l! s! ~
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. l/ g  ]* D8 r' N: j
| MCASP_PIN_ACLKX: P5 Z$ i) l; b' P, ^1 G  \% n+ M
| MCASP_PIN_AHCLKX* _: o! f3 [" A/ \7 _4 ~
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ W( V/ K3 H1 x, g: s$ ?McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: {! d1 W  Y8 s) f. W9 Z| MCASP_TX_CLKFAIL
0 d0 e1 `5 s5 J* \& I7 Z) t5 O| MCASP_TX_SYNCERROR
0 X; e: ~7 ]7 @. v| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR $ W% y5 h  y& V( ~
| MCASP_RX_CLKFAIL9 I, x  o. p" L
| MCASP_RX_SYNCERROR
/ z5 Q- m+ K+ p6 J' E| MCASP_RX_OVERRUN);, k* l8 Y9 _+ S% ?( ]
}
static void I2SDataTxRxActivate(void)0 b+ {9 H+ l0 o
{
; r" `1 c# f5 F2 K* z# @/* Start the clocks */
0 i) X$ o6 d& I5 Y' W: {7 mMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);  W$ I, y) V. `5 P  r* v
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  r& M" n, B' F( d( ]EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ p' q) G: Z. |8 g1 J" m
EDMA3_TRIG_MODE_EVENT);" S' ~* A# R$ L% `" Q3 V9 v/ S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# R2 P$ E% n& F8 e3 ^- HEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! W: s, A" A2 eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% O5 r- L3 f, u) @
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- L4 k2 v" P) I' Gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& X3 U, N9 p+ u6 }! y3 ~McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' k' F$ l$ w; _: w; S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);; O- m, W5 ]( i
}
+ z7 C+ T3 K0 `2 k4 {
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" ~1 f2 \- |' X; F1 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 20:24 , Processed in 0.039576 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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