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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11238|回复: 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,
2 W5 E9 x7 |! l$ @. z. }input mcasp_ahclkx,
2 q% L! E" ]; h4 pinput mcasp_aclkx,) Q" @5 c$ m% t( t/ i- ?
input axr0," j; ?; n5 j; L& {1 V- y
3 H0 w0 M6 T: B) Z4 w( q
output mcasp_afsr,
" P/ f8 b$ Z% q( W" z5 D$ Aoutput mcasp_ahclkr,
- k6 t& n/ u/ J) j" c6 Ooutput mcasp_aclkr,; X. D% W$ r" [+ n' h- Z7 E' C
output axr1,
' n9 j* F1 b! ~  B0 P4 u( a/ L
assign mcasp_afsr = mcasp_afsx;' E0 L) B' O8 U; N/ }- q. Z
assign mcasp_aclkr = mcasp_aclkx;/ S* G9 Z* `/ _+ _( T) h" @3 J/ q. M
assign mcasp_ahclkr = mcasp_ahclkx;5 M1 [4 K8 W% z, G3 T3 N
assign axr1 = axr0;
; w" m4 M( V, N+ D9 E

7 ~8 e+ q, x$ G2 M' X+ x% b
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

1 G' D7 X5 Z6 K4 H  t% k$ S
static void McASPI2SConfigure(void)- C1 ]2 v0 A, B1 i' {, Q
{% o/ S7 O4 o# @$ p+ g, q) U
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
: t9 I6 \. _" n; A, f4 Y7 mMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* C. v# E( b! [3 [( N4 G- e( s, aMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; g3 L9 k: x9 x2 bMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: P8 b+ o# @$ n2 o
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ f. p& D8 D, |7 k5 H. T, M
MCASP_RX_MODE_DMA);2 P( M9 h3 y9 p/ j- l( D) _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 }  l2 \8 Z- S. I2 ^9 I( m: IMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# P  R  e2 {7 mMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 u( }: K; c- r" IMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 j3 G9 O# d, o2 J1 S: mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 p7 H* t) B7 j! ^1 DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  b5 D0 p2 a) h( BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* t4 D2 d4 `' k
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" Q7 e6 g4 P. PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ _. p1 f1 r, x8 |( A6 m0x00, 0xFF);
/* configure the clock for transmitter */
; r) p# E- l( B- O) iMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* N4 E8 S$ \) y) B
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + h) g& C' F' T; N
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) X; K: |3 x! m3 b( a3 z6 V+ H9 F0x00, 0xFF);- Y7 R% ?. s9 M6 o

# B( G6 x- ?4 d( ^3 }' C2 K/* Enable synchronization of RX and TX sections */ 7 j8 k1 ~+ k8 w
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% L; S( R* T; ?) b! ^. e
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ W1 ^$ |* @+ d: X! k
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 c7 @( p, @$ d** Set the serializers, Currently only one serializer is set as
8 h+ a& V; k' R$ E; `; y** transmitter and one serializer as receiver.- i  }+ E! S! y+ W; r
*/7 {# D' b; [- g  A& E6 L
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 l, L& Z0 z) e9 t3 ^9 cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 a+ d. ?# z$ B3 X0 x3 g( o
** Configure the McASP pins
: C% ^: V. k5 Y  C) f1 b** Input - Frame Sync, Clock and Serializer Rx
6 @, x/ f* e3 N' `- a** Output - Serializer Tx is connected to the input of the codec 7 v6 v. N: r/ C, f: F1 A% L6 ^0 x
*/
5 c/ p7 s9 E. N# v: q/ d) ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' Y6 {9 l* V; r7 G8 U0 W8 x
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 f- I9 [0 c" ^! ^+ n+ T5 q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( c7 ?( n) }5 X
| MCASP_PIN_ACLKX
% M  H9 F7 w  e- B8 J1 _% U! r| MCASP_PIN_AHCLKX
) P2 r  o8 E( ?1 q9 B4 v| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& U7 N, W5 W8 t$ e, t, B: h. AMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR & f/ c/ i: X/ t( l6 f  M& X$ d
| MCASP_TX_CLKFAIL - i8 e! M* l! k! M2 a4 r% {
| MCASP_TX_SYNCERROR4 b2 o8 m0 V8 H4 |% e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % Z" t3 j2 Q$ T8 j2 \
| MCASP_RX_CLKFAIL8 t% p( X$ A% W. W' w1 }5 E: L- a
| MCASP_RX_SYNCERROR 2 ~7 i2 x0 j2 L9 R4 n4 |
| MCASP_RX_OVERRUN);
9 L0 ~% t' d; |( b}
static void I2SDataTxRxActivate(void)! }7 E% y3 H. X+ \' T; ^
{
) H- ]. t% r) B- D0 w/* Start the clocks */' Q  L( u/ s. Y2 ?
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ ~0 u. i# [+ M; Q4 b: O) sMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 s* ?& _* u9 @# p$ \6 p% J0 E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; p4 h1 K; q. y% W2 aEDMA3_TRIG_MODE_EVENT);/ x( _3 @  ^- G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  C7 d8 q3 x: v0 ?1 z; \4 WEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' ~% j3 h6 K+ n+ N
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
$ O* e! u) z% m4 _McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 }8 B  B3 ~/ a: G) d4 twhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% M) a3 n; A" B9 m: T
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 W9 I% s9 \  v, o9 c
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: g# ~/ b' X- ^/ v% q# R5 C
}

2 t- q* N0 x) s( _: i: u6 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 i  ?* U4 L* p5 a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-28 02:23 , Processed in 0.063611 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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