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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11389|回复: 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,
& \/ i( ?# R2 P+ o4 o9 r3 H" e$ Ginput mcasp_ahclkx,: \4 N7 @2 z, v) V0 O
input mcasp_aclkx,7 k4 \9 j1 Z4 L$ u% B" o, ?
input axr0,
, j, E6 n3 ^: e& Z* h9 {/ c5 \
* R5 D) T, ?: E0 d% Q! coutput mcasp_afsr,
) o4 _( X& F4 r8 T$ L4 w) voutput mcasp_ahclkr,3 ^0 F, O7 r' p  J7 W" x
output mcasp_aclkr,$ f. O8 g2 _5 X2 f, b4 r0 x  W+ s
output axr1,9 H/ u9 b' U# m
assign mcasp_afsr = mcasp_afsx;
( {6 r/ N2 ?/ ?5 T. Y3 \assign mcasp_aclkr = mcasp_aclkx;
3 S( h7 y6 [6 O4 C) xassign mcasp_ahclkr = mcasp_ahclkx;
- d9 L3 T+ F8 J+ gassign axr1 = axr0;

, k1 m7 t. ~' ^8 r5 Q  [
' N" W) o# [! p# D! }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 o+ M4 q1 Q% @0 v- ]5 |7 }: S
static void McASPI2SConfigure(void), t$ Y: I/ J: \
{! o  K6 S9 q( d$ ^
McASPRxReset(SOC_MCASP_0_CTRL_REGS);0 R/ j8 w" q, v$ M# \; C9 c
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) O8 L, |: b4 M; r- d) q" uMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; Y6 u8 a" S; t, [' i4 i7 q  Q  [6 W
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! [6 v$ s9 ]+ }0 ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," `* h' i$ }3 F1 Z3 ?/ ~
MCASP_RX_MODE_DMA);
7 ?7 p3 K- g5 e" Q+ ]1 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- b% w6 u! g8 @2 @# T* P2 Z! kMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# f& j% z7 B" K, mMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 X# P- e  e2 m! U, k# q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 T( G; y* b- ~% fMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + p0 ?: ~; h7 ?% z
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- L9 M# R6 s. e5 T4 p! P* K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);) Q& t4 C+ s' I3 q, l: e$ j
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# E3 r' P2 [: m% X6 RMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( K4 h5 L, G9 n8 l! L9 E0x00, 0xFF);
/* configure the clock for transmitter */
4 c, X+ e# h  }! aMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ ^/ e* y. ~2 p/ f. A" m6 kMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); % u5 S  V3 x& l" L
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ P4 p& N! d3 ]
0x00, 0xFF);$ w4 v! J+ |! R+ ^$ |

5 P! ~4 K( M9 P7 ?( N& `( s( J/* Enable synchronization of RX and TX sections */
! u# X. `( y/ z1 r* p( PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! `& b# M9 E5 P1 fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 c  k4 B2 K, z; Y; ^
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; e; @) p- d8 w4 t8 m** Set the serializers, Currently only one serializer is set as
3 Y0 o) o  F: t2 }/ k** transmitter and one serializer as receiver.
+ Y+ n9 g  T" I' h' N" d' y*/. H; y% a& E) l
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% ]. Z: C2 |1 DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*, x- F3 t7 H9 ~+ U: i9 A
** Configure the McASP pins   j8 u( [  a+ ~  A0 J
** Input - Frame Sync, Clock and Serializer Rx
0 d+ y* X* f9 H! H3 t# z6 a** Output - Serializer Tx is connected to the input of the codec
4 {6 l7 g; G1 i8 }$ `*/
6 x0 e4 H9 R6 g6 z! M* K1 C* }McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' a! @+ N( ?8 M) y# N/ z, N
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: O  F% L- N! w! OMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ i$ W8 R# H* P$ w8 b0 U| MCASP_PIN_ACLKX
  K! ^1 p1 ?1 k0 L+ x$ y/ T. v7 f" B| MCASP_PIN_AHCLKX8 Q) G& s; S9 ~4 ]4 ?9 S
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */6 p( v' y. D" s& o- z+ B
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 ^: ?% @( z6 y3 H. C
| MCASP_TX_CLKFAIL ( ?, l" @' c8 F
| MCASP_TX_SYNCERROR
5 v1 K0 e0 |- ?* ?4 i0 h$ O| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 b1 X) X: V0 x1 q1 m* L" G
| MCASP_RX_CLKFAIL
2 r, s9 _$ E4 n) S7 a| MCASP_RX_SYNCERROR 6 f1 C5 S2 \, K/ B% j/ K
| MCASP_RX_OVERRUN);
! U9 [( ?; Y3 R% u7 G3 [. `}
static void I2SDataTxRxActivate(void)8 |! q4 |( w  C1 G2 |
{& n5 {$ g0 D9 O9 R, f
/* Start the clocks *// Z6 {+ ]! S* W8 D
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
( }' A$ o2 o. X# OMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) Z' A4 I$ a# h2 E6 ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 E. t! |. ~! M- B: p) R1 q
EDMA3_TRIG_MODE_EVENT);' R8 m  ~, t0 V: l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 O4 i& j: Z- R* J- {8 U9 x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// r0 O1 K. Q9 ?" u* `
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 |, n( v* F% w" _# y5 t. U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 R+ i, t/ D% i9 S3 O$ K4 ^' Nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// e, d4 |9 n" R/ S1 i8 h! a* j
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  g" r3 S$ u  r1 }8 N
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 ]6 Y. G* Q& e}
$ J% V) r5 K& V" Y1 p3 p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 K' {( k1 a' I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-4 06:16 , Processed in 0.040576 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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