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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10482|回复: 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,* J* I! J# J; j  p6 D2 n6 \5 l
input mcasp_ahclkx,
+ a/ c# g! \6 F/ L- dinput mcasp_aclkx,/ |% y5 P2 j2 D0 V% ], D! _3 c
input axr0,9 y6 N  g, z6 g% C

( D4 T0 j' y2 F" t# |( h0 n7 poutput mcasp_afsr,- A  Y, k' k0 V
output mcasp_ahclkr,
4 Y4 F4 z. _# s; ~output mcasp_aclkr,2 k. a/ w: D7 X2 O0 _4 ]+ u
output axr1,/ R) J" c! V; }1 }+ U1 p
assign mcasp_afsr = mcasp_afsx;
" @. g# @  |! |+ t& n$ Fassign mcasp_aclkr = mcasp_aclkx;
& K+ }  G! g1 A1 e/ k( Z! jassign mcasp_ahclkr = mcasp_ahclkx;3 T5 I' F7 W+ m; k( W5 [! ~! V; T$ |
assign axr1 = axr0;
4 X0 P' {* W5 C% ^+ ~/ {

  _4 t3 d- |% {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# P, e4 q( i; V! e
static void McASPI2SConfigure(void)2 f, n. c! O- |
{4 z: l; y% l& J. f% g; D7 L, e% n" A
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
( K+ p2 Q& [9 A9 NMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 U! }" O) [  M& f$ J
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% Z2 m% @% ?: R. a/ Y  h3 MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  `# @& Z5 @4 j6 m6 q  U- R
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. ^8 z+ a: m' [- |$ w( r# j% m. d
MCASP_RX_MODE_DMA);
  Y# n& q9 S4 c1 JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: m0 B& m+ B2 ^& EMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ t0 O3 h; {- B
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 N" s8 R* u: p8 Y. ]5 c
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 a1 @/ A% P. I* r- KMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 f2 v: N& R' C, t5 A
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */8 Q0 o' v9 K; J0 ~5 y9 v
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 F/ r/ F  D( r9 w' A- TMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( @( W! }5 }# R: }
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, t" A' t! L# O7 s+ C1 c/ P
0x00, 0xFF);
/* configure the clock for transmitter */5 [; q( u9 J3 r- }6 ]! R' l& h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 f- g  O) a. N6 `8 R3 @$ a1 q6 j  qMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 u4 o" G3 ^3 P( _4 ~; d9 f
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 Q, w; I! F0 l* N
0x00, 0xFF);% ^8 e( M7 K6 L
1 F) I+ f3 O# E8 V0 h2 I
/* Enable synchronization of RX and TX sections */
$ |1 o/ Q+ b$ bMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' S7 f! h' M- l- S: o/ IMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 W! u$ S) e4 AMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- o0 k. Y1 O' q- k" H0 x( R4 }
** Set the serializers, Currently only one serializer is set as0 r( s  R: ?5 B8 w$ F
** transmitter and one serializer as receiver.4 [5 I' h( x& n) C  o' s
*/
4 h/ G! a) I' n9 X9 fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 T/ y& |+ Z3 I; @. V, Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ G. m9 J: t" q6 f  H4 U' m
** Configure the McASP pins 9 t* i) W' ~: M9 _$ x7 c6 c
** Input - Frame Sync, Clock and Serializer Rx
6 I* ~8 ^9 e, w6 b* t** Output - Serializer Tx is connected to the input of the codec
9 e- X' I) w0 z& ?6 B" t*/
" U- S, f7 x. jMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& ^+ _) e5 {- ?/ W- w
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) R5 E- z6 t/ ]+ x  c# c; E
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX7 Z, Q# l$ j' K8 r5 g3 ?! v6 u) \
| MCASP_PIN_ACLKX
/ k0 u3 ?/ W- i  ^* F  J| MCASP_PIN_AHCLKX, l' X) B+ O2 U. h9 Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP *// m' f0 @( t1 Q0 O; I% s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ A; E- x8 f1 w! v. _| MCASP_TX_CLKFAIL % B1 `! [3 v* c) F
| MCASP_TX_SYNCERROR" j' {8 a% v  q/ F2 T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" e- }7 f( d  ]/ b| MCASP_RX_CLKFAIL% P8 i& p, N5 r  {$ L& D
| MCASP_RX_SYNCERROR
1 O1 z2 }! v' g| MCASP_RX_OVERRUN);( }6 y) c; L; V
}
static void I2SDataTxRxActivate(void)9 \1 W  Y; B8 q5 h9 B8 i3 x# s
{) f3 x/ ?4 b# b) C  o0 [) t4 d
/* Start the clocks */
$ b$ ?" [" x9 e: q, \7 {8 qMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
4 C7 s  `5 Q% l0 E6 m0 z4 c/ nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: G( D/ P0 `' k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,: A" e: q; O/ B& k0 y9 `5 \  ~
EDMA3_TRIG_MODE_EVENT);
$ I# k3 r9 O0 Z# R2 c$ L8 _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& |5 k% n5 f5 U% P8 w) EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" A6 Z8 @$ u1 q; J
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 A" W7 X& W' @3 L, a4 WMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 G- s- n$ U2 _# l7 R9 W) |
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: D3 k. ^  e# C
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
6 k8 G2 k4 O5 c' J: KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);: K% R8 L! [- ]) E* t
}
/ L: Q" p$ ~: D. t3 m; K1 U) D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" t, p/ {& s. ~0 p5 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-7 20:59 , Processed in 0.040029 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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