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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8928|回复: 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,
2 f* F$ Z3 v* y5 yinput mcasp_ahclkx,; q* P+ q! i; @' k) @9 J
input mcasp_aclkx,' G- F, h9 N. C
input axr0,0 r9 Z' ]# V$ W* G1 x1 C4 J7 e
% E6 M1 G7 p8 A4 S3 l
output mcasp_afsr,6 i; H, `! F+ g
output mcasp_ahclkr,
4 j& j3 a2 U. X0 ooutput mcasp_aclkr,, @: {6 C' |1 b1 T" {5 \4 \
output axr1,
/ \4 }$ F2 n1 p* M! W
assign mcasp_afsr = mcasp_afsx;9 u9 u" }. {9 M, N
assign mcasp_aclkr = mcasp_aclkx;
( U9 d) u3 f0 W9 q* _6 Fassign mcasp_ahclkr = mcasp_ahclkx;
$ W1 `: U1 z6 O( f& w5 E. Sassign axr1 = axr0;

) |  c. e2 I) v7 Y  Y/ S
& b* u( @1 a# k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ J- @6 c" D/ y& s' `: o& {8 X1 o; h
static void McASPI2SConfigure(void)/ ^# Z+ e, E4 T7 @* }, Z+ L7 a
{
! k9 x$ c, z- Y+ `, aMcASPRxReset(SOC_MCASP_0_CTRL_REGS);# G; V/ @0 ^" z% S
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' G, X- ]6 G! j8 j
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 _" y6 J/ @( @# u9 [
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- _, l  A0 ?4 ~$ e( ?5 Q5 {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," Z0 f1 D7 M3 `0 x% S1 N3 t
MCASP_RX_MODE_DMA);0 t/ S2 W1 Q/ B! H5 n( j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) `* C; d! V6 U6 ~1 O7 c, d* fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, S- K+ L3 K; J. c+ M, M) m
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ( i1 `: h$ a, r5 r0 U/ H" a; ]
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 U- N& K3 U) }* g4 g
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 y4 x# |8 D+ Y' g; v, `MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) W9 k. T3 R3 Q0 P) gMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 d' d5 _; y* [# W) H( r2 tMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 B+ K! O4 l' X) Z$ F* CMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. X- c' n2 }; z1 W8 L0x00, 0xFF);
/* configure the clock for transmitter */
6 B! T" s- k) K& oMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 v7 t, s) C, ~; S- o- c1 t# m
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  S9 z, L! G) T& O! u) W' NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- W9 ~. v& E- l$ [& {. n0x00, 0xFF);
7 r, C/ m  A. ~
  Y8 ^0 t1 z' T- a% D; D# u/* Enable synchronization of RX and TX sections */
7 j9 Y1 e2 p! rMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 y! ?6 \" q% A* l3 _' [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 C$ J! P( A/ n% f8 f) g0 uMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* C& U7 K4 a" r& \+ m0 j- z** Set the serializers, Currently only one serializer is set as
/ @- h& q" D8 Q; A' H** transmitter and one serializer as receiver.
$ Z4 S% {; B: v3 H* b) H*/
; @+ m+ A8 v  b' T! J( X5 wMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, }$ `  z+ O; Y9 A( R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 p0 x8 `+ K6 e8 Y3 X3 M+ l6 u
** Configure the McASP pins 6 ~! ]+ L. h1 }
** Input - Frame Sync, Clock and Serializer Rx
2 q+ p1 O: M0 v** Output - Serializer Tx is connected to the input of the codec 5 w2 K1 }8 I, S. X& @9 e) o
*/8 o3 n, P7 J" z9 |; ~! n7 N' w& ~
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 r% [" P' K7 l7 O( J, s; ~3 [McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- ^! X' g/ e$ u9 o+ y2 O3 `3 J
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* h3 ~% L, L% d
| MCASP_PIN_ACLKX
% @5 z# ?# e! R0 r7 t$ `/ q| MCASP_PIN_AHCLKX' x0 j( Q& p0 Z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, n% ]; ^/ X( w9 w/ s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: x/ G8 X" L$ l; k0 |( d* t9 F| MCASP_TX_CLKFAIL
9 C0 X3 R% J( U) d0 S| MCASP_TX_SYNCERROR
- D: f+ F! c! x* u* K| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( Y8 Z0 Q! f& l
| MCASP_RX_CLKFAIL4 z) n1 {* x$ ]4 }# U
| MCASP_RX_SYNCERROR ) t; X# u* Q: M7 y" w1 w( }$ k
| MCASP_RX_OVERRUN);& ~& i2 |  X- ~! w% t% @% D! c2 E; p4 ~
}
static void I2SDataTxRxActivate(void)
% B) \' B0 i0 v, i( h3 |{6 D( N) R0 p% f- g, n! b% X
/* Start the clocks */
0 s- f/ p/ z% S  q  U* b' u' [McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- {3 N) Q. K8 K6 l
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* V. |( G& }6 D+ g& p; _' ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
1 s+ R; o9 C( w3 v9 WEDMA3_TRIG_MODE_EVENT);; X% M$ x$ z  E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 N9 ]9 o, E/ rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! l0 G. e+ q5 i6 ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& K( P- S5 r: U' `3 e$ b7 K/ G, ^McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( E: H5 Q: {# J9 [, w" y8 m
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ g1 A5 p7 q+ N4 y( H0 ZMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 l1 z5 d) ^9 zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% i4 E- T" h, ?* P) d5 ~* ]}
: R; F* e: D8 w; x# r# ~( \# t/ ?6 r
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, g4 J! h  s9 b7 l- O0 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 14:32 , Processed in 0.045464 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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