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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10598|回复: 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,8 J/ G1 b6 y, R4 v) A  w
input mcasp_ahclkx,
8 H! M$ }+ P! r5 W+ B8 Ninput mcasp_aclkx,! Z3 R0 T6 T+ {/ k& i
input axr0,. Y/ `$ ]+ v1 b9 j; k

7 A1 ~# H" D$ Z7 C5 @output mcasp_afsr,
1 s/ O+ e8 t. `! O: u, {output mcasp_ahclkr,+ o# F) B& U( h7 Y' @) L+ X, j
output mcasp_aclkr,0 {# k) T5 q+ j4 q% m" z7 w
output axr1,
) K/ Z# Y5 c/ n5 F9 _. a
assign mcasp_afsr = mcasp_afsx;
# ~: i, Q$ q% G$ Xassign mcasp_aclkr = mcasp_aclkx;6 E& l% N4 B; e. E, I
assign mcasp_ahclkr = mcasp_ahclkx;
6 A+ w3 j1 }; s- ~. rassign axr1 = axr0;
, ^; l, n; _/ [; s/ L
# l* j' b5 T+ u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ b% }: C$ T5 x" M( ~/ s4 V# \
static void McASPI2SConfigure(void)
3 R/ n  @9 a3 `5 ^# B. j{
4 Q/ E+ d! J+ Q2 S& V, z/ UMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 P+ |1 T4 V6 q+ {' f. x) `
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' U( P8 I5 M1 I, i; V% B( e# h# ?& I& kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 e/ J% q1 G) T2 G
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* l7 x5 N4 Q" K4 A+ E: _6 SMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 F" k5 }8 b/ B' X# ^$ G7 fMCASP_RX_MODE_DMA);
1 ~8 F% F! k- H- UMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, x$ Y* D7 d% j+ [2 M
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. w/ _  f) C6 l* J/ h! ?' g
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
) s2 R" y1 q( OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" l6 Q- Z4 m" N- b1 @4 U, j, NMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 R1 y& s6 a1 mMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* X; u8 }8 H' [' ~5 _" a$ D
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ a4 z2 ?* c; S) UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 E& c. d: i1 \5 b) A. h! vMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: I* P; L- u$ w6 j- c0x00, 0xFF);
/* configure the clock for transmitter */
, e3 p" ~) D6 R5 N& bMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 p" M0 i/ @' j* y9 b: b1 n1 p% R
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  M4 @, N; w" v: [. q( rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' p; j) m7 C' \3 v/ `/ x
0x00, 0xFF);
$ }4 j. l. V/ z$ f! C0 R8 x
7 \% N& b3 o. }8 L; h/* Enable synchronization of RX and TX sections */
0 y4 _4 b/ _/ O; ?6 f8 q& QMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 c. B* j1 S' \% M
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( J0 N* e/ w' U' X
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 N+ R2 p5 j8 k) [+ a
** Set the serializers, Currently only one serializer is set as
; S/ t2 y  n9 H( s" e' V# T. h** transmitter and one serializer as receiver.0 _+ y  @9 l$ K9 h; t
*/
3 U3 t$ L- B( F- qMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: p( g1 U' B0 i, z, b( iMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 W7 d6 f0 W% k' D- t9 q9 f2 F
** Configure the McASP pins " G$ S0 n2 D1 A! _7 g! a
** Input - Frame Sync, Clock and Serializer Rx
6 l  @- U3 e7 T** Output - Serializer Tx is connected to the input of the codec   o( G6 h4 f1 ^+ l2 I5 t- z9 i
*/
( D; R- z% `+ ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 o( X; T6 X9 ]8 vMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! B4 [/ a5 @, g% w3 R9 LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- k* R" D% ]& Y* V+ L| MCASP_PIN_ACLKX5 H& ]& x: f1 O3 r! j# O1 e* L
| MCASP_PIN_AHCLKX9 [# R4 F: K" p3 L7 B
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& u4 F2 Q& S. ?" G5 J- ~McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# n3 \3 Z5 j& o| MCASP_TX_CLKFAIL
/ i  U4 Q6 a8 d4 [8 w| MCASP_TX_SYNCERROR, K+ z* L" R# Z) r5 k
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) W* K/ |6 w) c* A7 Q
| MCASP_RX_CLKFAIL
. G' {9 E$ o9 G( [0 @# J  Q| MCASP_RX_SYNCERROR : ?; o3 U' o- [" R, V
| MCASP_RX_OVERRUN);
0 c# Z1 M* J) M4 Y5 S}
static void I2SDataTxRxActivate(void)
. K4 X' R0 K: ]$ I  _{
; R# I3 v' \8 Y9 y/* Start the clocks */# D4 S3 P; _& V+ ]/ _6 k) g
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% @. W9 Y; j! j/ t3 O/ `# T4 MMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. k& m9 C: d" V( O; d* E( g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ x5 W+ [: o* c( y: V6 ?EDMA3_TRIG_MODE_EVENT);3 a. c. e1 Y2 e8 E+ B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
, \: j& ^. ^8 |- M+ VEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" r! p" }: N; J4 D' x
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, }, k# A1 }1 ~, a. [* m8 C8 a  XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 q3 {3 J8 k- |- o" B9 |! i" c! @
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */6 ~/ @1 E8 ^: [! }3 x/ s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: G) y( ^- z/ N. |. zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) M/ T/ E% K0 G7 P5 x; ^- r
}
0 R: U) t# s. j. @" u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  l" j( G4 J- t/ A+ N* {. W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-10 19:10 , Processed in 0.041299 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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