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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
6 D! K3 v0 D1 y& q. s& u$ Qinput mcasp_ahclkx,9 H* W7 d/ O$ C' s2 J
input mcasp_aclkx,
. F0 ^' g2 z4 G' p! G( `4 U/ _4 Z8 _7 j0 yinput axr0,8 X/ [' t% d  o2 }, W

5 a2 l/ l8 Y2 [output mcasp_afsr,
7 v: q" N9 D, ]# L* F- ~output mcasp_ahclkr,( c* z2 m$ H/ ?; C& W
output mcasp_aclkr,+ V, A5 @, N/ y8 k9 d
output axr1,
- U1 u3 E. Z  M8 I
assign mcasp_afsr = mcasp_afsx;
; b$ e5 c  a# U3 Rassign mcasp_aclkr = mcasp_aclkx;; d! s: D. n5 m2 ]
assign mcasp_ahclkr = mcasp_ahclkx;
) T+ O. y2 G# W7 ?  bassign axr1 = axr0;

1 E: r; e! q1 W
8 }2 m) H8 R& }: g1 x& ~  c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% Y$ _: N8 E2 }
static void McASPI2SConfigure(void)" x6 T' Z* C* F9 ]
{
/ M0 Q! d5 @2 g8 h/ IMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 N. Y& p: d' T
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ R3 V, g3 v! D2 B) d8 ?McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, D% ?: Y$ ]% P1 m7 X/ Y6 x9 DMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- a7 I- f7 D4 @& p  O" T$ y" t4 X  cMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! r5 ?6 r' q: n) L" k
MCASP_RX_MODE_DMA);5 C: m2 q9 A: G- E1 N! I( _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! j$ e/ [- z5 W) g% O) }2 p+ F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 c! l% J! |/ Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ C6 @/ g+ Y  E5 q+ MMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) w2 L: Q) p* f; ZMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, . s, o" V; P7 R% D1 u5 n4 y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 y9 H8 f/ A& R* X# D5 t" |
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 R% {! H4 {) x4 [; G5 `McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, J! o  f) u$ U; f7 [McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 o* Z# U8 a6 Y0x00, 0xFF);
/* configure the clock for transmitter */
0 [. M/ Y  h- Q& W3 K1 j3 UMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
! H  o2 t% g$ {9 x; K4 j4 \! r1 D- @% UMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. ~  L# g  g4 K1 C/ rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 I3 N# u9 C3 @4 S/ ^0 T: J& R$ P
0x00, 0xFF);
7 Q; w+ Y1 b' h0 Q" q
4 U& B& J1 x: X5 h6 R/* Enable synchronization of RX and TX sections */ ( j; N1 c# W7 V; M6 T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
6 P( v* r5 B) [( }& e, }& xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 T$ }: g7 O# b" ^3 UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: d' ^$ G" t% S; o% A8 j** Set the serializers, Currently only one serializer is set as
# Q- E+ N( G$ p# d: I% M** transmitter and one serializer as receiver.- f7 r" t% G1 t% }2 N  g6 C
*/; M, X) Y  J2 {3 [
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& Q$ d7 C6 Y! cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ ^$ K% j! D' N8 q
** Configure the McASP pins
0 z* @* \; z# }3 W** Input - Frame Sync, Clock and Serializer Rx
& y2 s; b5 G) D% Q" A% M** Output - Serializer Tx is connected to the input of the codec   C. N" ^' e% F) h. s* `
*/7 C9 C7 b9 A' t+ w6 p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# s2 {7 v: Q0 I1 \; RMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# I  N8 j2 J1 F+ s. ~$ x% f
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ j& T/ x: d' O5 C) s
| MCASP_PIN_ACLKX; u$ L, k, d' d+ Q! s, a
| MCASP_PIN_AHCLKX+ L' n7 j  }& @$ e; @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ V! L/ m" E/ i2 f. DMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% a0 G( d" D3 [3 e( d5 r% y0 k| MCASP_TX_CLKFAIL
2 ^3 ]% B- ^/ }, D) L| MCASP_TX_SYNCERROR8 G3 }8 C: ^% H$ g
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) ^, p# c3 A. N: G3 `+ q
| MCASP_RX_CLKFAIL7 G% E) P! [5 v
| MCASP_RX_SYNCERROR
) K# M6 a7 C& `6 ~  N1 R6 @| MCASP_RX_OVERRUN);
9 }. r( z  t$ A! r, a3 G! B7 h}
static void I2SDataTxRxActivate(void)1 A5 @1 j5 o$ J4 m* g
{
7 f6 O3 I5 ^$ R, ~# o1 a/* Start the clocks */
, G; r8 i/ {" o0 V3 M$ o& WMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; @& q# j# N8 h5 W
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  |2 |3 i( A& ?( u7 \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 P  W- k+ s7 w# C- m9 k7 Z
EDMA3_TRIG_MODE_EVENT);
( f; y4 U/ S, i* B$ ?! TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" @" U9 R" M& U4 b4 A6 vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 @/ _# |% t& d: \# B
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) B, r7 W& |2 o4 u. r5 [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! i6 ^1 @+ O2 l3 C/ b  l' K3 A5 V
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* ^: _5 I2 g3 }/ V/ t. xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* r7 {# ]& Q- T& b. a3 Y; a4 z. pMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 G$ R1 ]+ a5 d( D
}

  R% f( X: i1 E
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( x6 A( T. s/ o# V& S) H+ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 02:13 , Processed in 0.044377 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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