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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10990|回复: 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,/ x: y# V  F! s* }( J
input mcasp_ahclkx,
2 R' A3 {" V. `0 f& Kinput mcasp_aclkx,: o/ }" M& u% [( _
input axr0," M" C/ J( ~* y

! I& D* v  z; J( @; B/ \output mcasp_afsr,9 O& N1 s' J) G) D/ M, j4 ?
output mcasp_ahclkr,5 D: d7 n$ d% C6 z5 ~* f
output mcasp_aclkr,
7 S* d+ `# I  h0 e* L, }output axr1,
, j* ], d7 H1 e9 s
assign mcasp_afsr = mcasp_afsx;+ B" d( G; p' g# W& w: O
assign mcasp_aclkr = mcasp_aclkx;
. z7 u. w( K" Oassign mcasp_ahclkr = mcasp_ahclkx;. o0 J/ `" c" E
assign axr1 = axr0;

8 F2 @. q& I( Y6 V) G) C2 n2 t$ S8 N
0 ]3 n. ^; x3 n1 O6 K5 b! z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 R% h6 [& _8 ^  V9 u* N- ?0 ^
static void McASPI2SConfigure(void)
1 v( S, [, b' E: V% A$ P: p{, H* j& m% {# O: e  r
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% Y! W% @# ]" D9 G- Q: SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 j8 y0 o" A, JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
) T" ~. u  H5 x9 Q% |7 LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 K9 w# w7 g. `+ Q* K4 d' e
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% `+ V0 G3 @* h; v' sMCASP_RX_MODE_DMA);
! `# W: p; p( k& e/ IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; ?  j: q3 j* x9 s7 {; W7 Z. n! E
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" R8 }9 e2 }! }2 n* L7 y( K. KMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   \8 |7 K; _( k* m! ~. z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 x  i* Y: I; o: D4 ]. ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( e; j- y. ]& S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
: E( A8 t' Q- F. p. y4 O7 a. }0 R7 cMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) |; E/ L  a2 |/ `1 [McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& B' A) i  e7 P, kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) O) A& l/ v, u2 n. K$ ^
0x00, 0xFF);
/* configure the clock for transmitter */
  h9 i5 b& x" b- pMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' A; u/ b) ]1 {  w$ `McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : F2 p0 J' y! R* q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' m/ r! W  Z$ Q7 M# A7 q6 `  N1 ^, D0x00, 0xFF);3 ~$ J0 H3 V8 e/ b& B5 E

3 S, r+ h( |3 U6 j/ b- @% H" n: O* ^0 Q/* Enable synchronization of RX and TX sections */ * D7 u& i8 x" [9 m6 y2 F
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 @1 y& \* Z: R  s8 [
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 e( e7 d' c+ H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 T: `1 e: A1 E% d! B
** Set the serializers, Currently only one serializer is set as4 g8 V, p2 ~  v9 C8 E9 p4 o+ L
** transmitter and one serializer as receiver.
! a- Z, C; a: w- |# j  T*/6 A0 B* ~- }  H9 L+ v
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. a% i6 L' c7 y# A5 P9 F6 NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& f1 p- d- z: T/ K0 \; K** Configure the McASP pins
/ e& T8 b- `9 g. C' z" k" n1 n** Input - Frame Sync, Clock and Serializer Rx% N# A  _5 S7 r8 O3 g
** Output - Serializer Tx is connected to the input of the codec
* x$ U9 d% |7 D0 ~! }*/- ^1 d8 E' I) B2 C+ f
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 m! D. v. b6 J( v; k. s+ K8 _! ?
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 k- [1 q% L$ t( ^% o2 R% X0 T5 o
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
) \& p5 W6 q8 m- F2 d' ~" h: ?| MCASP_PIN_ACLKX, _5 u6 \) Y" E9 Y& d
| MCASP_PIN_AHCLKX  f8 ~7 g( u# a) a; ^
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; J+ g# v% |0 q& ?* m/ \
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # W+ J+ Q) B7 S/ K3 D4 a7 s
| MCASP_TX_CLKFAIL 1 L: l, O, \  W# u
| MCASP_TX_SYNCERROR
# U5 J$ S5 D8 l$ V| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 l7 \6 z* b5 ?( h9 }; ~0 s( Z| MCASP_RX_CLKFAIL0 g4 ^( i  N6 H. c
| MCASP_RX_SYNCERROR + x. N, P& A- M: ?' h% O% V+ l% W
| MCASP_RX_OVERRUN);4 ]  O9 @8 j7 _
}
static void I2SDataTxRxActivate(void), c1 ?8 G% @7 _" E7 C  g2 S
{
9 P4 f, w/ [5 M6 J7 R4 Y* K/* Start the clocks */
+ f% ~* m) L/ r) h  N! ZMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# n% X4 n6 Q! B+ V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 U1 e* p( o- k* F  W7 lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( G# r1 l: G7 C0 }9 _6 QEDMA3_TRIG_MODE_EVENT);0 x- J5 t7 Z* f& _. D' Y  J% P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   r- Q% W  o2 h! Z  \9 }
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 \$ {, y# K. b, f4 N
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; `7 F$ j; N9 m& C: I! i9 `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, R1 R+ z3 k! A1 v5 w8 G; dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# J; o& L8 \/ \- n  CMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: O# K) W! j5 B8 {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);' y! R8 {+ W1 ^, j
}

7 ^" V2 c4 a, R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
5 O. D7 [* v8 S% y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 12:20 , Processed in 0.059689 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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