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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11418|回复: 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,
# O+ O& F' v' U6 binput mcasp_ahclkx,
0 Y  \. j8 h) Q+ m3 j% Q; ]( G( T! I6 L9 Winput mcasp_aclkx,
" |% s- z- j. l5 O; i6 yinput axr0,
9 i, n( n$ z: f) I3 e$ T' O+ K8 ~' X2 S8 f
output mcasp_afsr,3 \$ r8 w7 i- S4 i/ P
output mcasp_ahclkr,
- x: G/ L6 i( O& N5 `& ^8 E$ t+ l8 ]  Foutput mcasp_aclkr,
$ h5 J9 V# G8 N+ R. qoutput axr1,
) ^' P+ w9 N. n" L( N/ u
assign mcasp_afsr = mcasp_afsx;
; C* m% y1 k  D; f" A, {+ n5 fassign mcasp_aclkr = mcasp_aclkx;
9 {6 n, L$ K) A" U1 Y$ tassign mcasp_ahclkr = mcasp_ahclkx;
1 A4 x/ l4 i* G$ x9 jassign axr1 = axr0;
1 p+ F) o* [5 w0 g. k, ]$ |4 Z; @

% U8 {; \' P3 j5 a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 V2 G* {4 ^4 v! O( X
static void McASPI2SConfigure(void)
: {- _( a& T* d8 U! ^7 k. Y{* j. }1 A" Q2 @: o0 c! ~" Z
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
* F0 _  {& M5 S) ]( O9 z" pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) U% M+ \6 M9 @. VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* y8 v$ m5 P, b! H- p
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* t1 P. Q- h0 FMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' x9 @4 S6 o0 R5 {! w
MCASP_RX_MODE_DMA);
# Q* j9 X3 b/ N% U; zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ Y. Q# f& Q) g/ JMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 G1 P$ P, x- _8 e2 T) T* l' w: zMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 o4 b& S! V9 ^7 Q+ E6 g
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 Z2 N% |5 _3 L# [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) }$ {# [5 F1 [5 y3 D* jMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */" T& b* m$ _- H
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 R8 p, C1 `# G6 K) d7 V* m1 l" v/ b( MMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# l' v  N) E" ^7 a1 V2 c! GMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( [+ T0 j" {$ G5 h' P/ U7 n0x00, 0xFF);
/* configure the clock for transmitter */
6 L+ G6 O4 @, {: d5 e- n: rMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! J& {% m- }0 h$ N8 a& }
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: u' T% b8 d2 F0 bMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ b4 v3 Y7 _2 d+ L& l" L' S0x00, 0xFF);
; n: c3 |' G% s; c& z* f! G0 Y0 ^9 B9 l: a" A. p
/* Enable synchronization of RX and TX sections */
. \& w; D6 T& B7 O8 JMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( s1 T4 w9 @: I8 N
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. K8 C4 ]0 r/ XMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 u2 K) U5 e; ]3 a- k0 {7 |** Set the serializers, Currently only one serializer is set as( d* f2 {& R' [
** transmitter and one serializer as receiver.4 P/ G5 D6 s3 k; M5 u7 Z$ a
*/
, O0 J. W- V9 B3 n6 ^% bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 j( r- T8 N% C2 [2 ^! DMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  ?1 R7 r/ K/ `* o2 I) J* l** Configure the McASP pins 9 Y) N2 z/ k& U) l$ O0 p4 X, P6 Q( k
** Input - Frame Sync, Clock and Serializer Rx
0 e( ^5 j- G) m' j** Output - Serializer Tx is connected to the input of the codec / L  e- j9 n+ Q* R8 @0 ]
*/
$ W) K) L, t8 ^7 r+ x& ?& A& aMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 I! r% _2 e# P4 m4 F: J, O
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' C" {- ~* q# W
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% P* R3 N( v. Q6 m6 O
| MCASP_PIN_ACLKX! Q, I- g2 D& n) Y1 y; K/ c
| MCASP_PIN_AHCLKX
# I! u  x  D' k0 D| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 m( J* W0 h3 vMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 h: f3 g/ B5 D+ G7 [! w
| MCASP_TX_CLKFAIL + T. r! Z: X; a+ M( i# c+ Z$ |
| MCASP_TX_SYNCERROR- t3 ?' W0 p9 v% ~; X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; B# b( e6 B7 E' M5 G
| MCASP_RX_CLKFAIL
1 E* {6 m% J% \| MCASP_RX_SYNCERROR
% i2 Z! W# E: f/ t8 Y( D% V| MCASP_RX_OVERRUN);
# T% K- \- B7 G' ^) z}
static void I2SDataTxRxActivate(void)
' D8 z; T0 J" z. {% T/ Z{
# N0 C# W4 i# e# Z* ]2 y6 u/* Start the clocks */. V3 X! y% h: v0 @- C+ s% a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);; t& l6 d' Q- ~: Z( M
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* \2 l5 I: D8 i, F4 d& E4 m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" e0 t# [( D+ L8 _/ S% g: rEDMA3_TRIG_MODE_EVENT);) R; l! o4 C' X" U7 {: R9 e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 H+ O) `$ ~+ L
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 b: n2 n" B% |7 q. q  [McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( u. E3 b3 T$ f" U1 Y3 _$ K6 @5 CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: ]3 k5 J& O2 r1 X0 t% O0 K+ H
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, J8 i1 g+ W7 l7 P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 ^* k# r) L  oMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);( e2 S6 Y7 d; S% K
}

$ r* {) c8 `7 c5 X2 S! _  F# Q9 C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( T& M. A& b5 |+ A% }3 M( }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-4 20:33 , Processed in 0.039441 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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