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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8618|回复: 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,1 V4 N( Y) }6 S+ F
input mcasp_ahclkx," S- s$ w7 y( A1 H. g% z
input mcasp_aclkx,/ Y! g! V; d' y
input axr0,( [1 O6 ]$ s4 p4 Q
8 r# m. H- y4 M/ V  a; [" c8 {5 K
output mcasp_afsr,2 E: }6 s( {- r9 d: v" A
output mcasp_ahclkr,
+ F, A5 L* D5 {/ w" r! b3 \output mcasp_aclkr,. V. N3 G* Z! F9 h* E) u
output axr1,$ h3 c* G( D0 o5 Z# q
assign mcasp_afsr = mcasp_afsx;. d, K: ~+ C; L: K$ u
assign mcasp_aclkr = mcasp_aclkx;
6 L* T* C, ]( V4 Rassign mcasp_ahclkr = mcasp_ahclkx;' f1 [3 H1 [, H2 \, v$ H
assign axr1 = axr0;
5 {8 Y5 D+ e4 h. S- c" V' R! N2 s
& S4 x& \' Q- ^. B; P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 w+ H% O+ J' l1 o/ H) l0 I. @
static void McASPI2SConfigure(void)
; F9 L  ~! r* H{
6 G( k4 ]+ @6 P- A# `9 vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 x2 D7 v# Q8 J! [; aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, d+ P8 B- {# P1 D5 ~  |McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: W3 n+ @) S/ w  D
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& t1 Z& ?( z  |" ?$ D8 \McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 x3 {# ]' d( g3 M2 i4 AMCASP_RX_MODE_DMA);
& C1 \; ^" ]5 ?1 p( eMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 A# b. Z% ^! X5 {, p$ xMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: R) o9 _, n- E+ T% T$ i' lMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ( I5 \* p- j# V9 Q* _. x( z9 j: }
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( X4 E% R" V3 R; e, J. JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) ^$ a: ?' ?1 a5 u0 J7 _$ L
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 D9 Z( k+ K7 O2 e
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 [, \. G% D' I; R' H. \
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( b* m: b" |' O- yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,9 U5 ^4 B4 b6 {" z
0x00, 0xFF);
/* configure the clock for transmitter */2 Y9 R  G1 Q7 s+ f1 A3 {
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);2 y$ z5 x% i0 |: u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" c0 m' t0 a' ^/ `/ B/ q( z: ~McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" s' @: a7 [) C( O) X0 _0x00, 0xFF);
$ x( v2 j6 ~$ @; l) Q+ ~
- v0 J/ ^* a* _* Y& n2 I5 [0 s2 S2 j* R+ S/* Enable synchronization of RX and TX sections */ 2 K4 o# J2 m# }7 ~5 V( G# G& X7 l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) V: z- A" Y4 N! w" D
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ r, o% {: \# ~! A
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. D7 Y) _6 z/ ]0 G. a) X
** Set the serializers, Currently only one serializer is set as
% B: ~2 _7 e! K: Q8 ^** transmitter and one serializer as receiver., x, i+ h3 W' E- B% v, q  w( q
*/  F7 h9 R" a1 V) ?: r, i2 ^2 g
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% _! ]/ w( K+ H, P9 d% RMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 M1 s. G, H4 v6 B6 @- c0 W** Configure the McASP pins
5 A7 a5 V8 j  W2 L3 b( G; P** Input - Frame Sync, Clock and Serializer Rx
+ E1 y3 |  T9 t* ]** Output - Serializer Tx is connected to the input of the codec 9 k$ x% m2 p# ~% M8 l8 ~
*/
  x+ j5 q1 }4 h1 GMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ w" y) y- @% \" Q- `3 fMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ ?. f$ T9 A8 A9 N% o# ]/ S# B
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 H: e( x; a# w| MCASP_PIN_ACLKX
0 Y5 Q- Z' A0 X9 @/ |$ L| MCASP_PIN_AHCLKX
3 [: T$ `$ g% x' u& e3 x4 |  ^| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- P/ D7 z+ x: v. m* c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" C) I8 n! a- W4 a- P| MCASP_TX_CLKFAIL
2 w% M. p1 v' Z9 Q# ~$ d) M) A| MCASP_TX_SYNCERROR
% X& u& K4 y3 n, o9 R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 x. a* r- f/ Z. d  P, r8 l, i5 {
| MCASP_RX_CLKFAIL
7 j  n. o7 N4 K3 u8 {& x. `8 ~' d| MCASP_RX_SYNCERROR 5 M8 n8 c8 M7 |1 Q' n$ h. K
| MCASP_RX_OVERRUN);
7 Y! _, e& H6 h- w}
static void I2SDataTxRxActivate(void)
) j( b* r8 ~$ _9 _{% ~, i1 }1 e6 d, r- b3 i# T" [
/* Start the clocks */" r; V0 s: N& d$ a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
& p, g3 ^& ?, e' s7 N! w: NMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 x) _2 S5 C5 TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
1 n" g* ~: f% }/ n, REDMA3_TRIG_MODE_EVENT);
! y/ N+ z" \' ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: U4 A+ B9 T) g/ nEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) O+ C2 ]" r3 }7 A- T5 u# p6 v
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 y2 i$ i) w0 Y$ S$ q5 N1 HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: `  P3 Y0 G4 J& `6 X# Wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ P+ U7 V- j3 D& T! @7 q: RMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* r: i& n5 ]% W5 UMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  M3 Z  P4 |8 d3 W0 L# y+ j7 q}

/ u0 S& I0 `4 H% t) {& X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 U7 ~* D- r0 M" E6 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 07:44 , Processed in 0.037263 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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