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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11224|回复: 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,
1 t: z4 k& X4 minput mcasp_ahclkx,
+ ~, ]8 }$ M! ]# Hinput mcasp_aclkx,
6 X. x- o5 _8 N& v9 Y- \; G9 einput axr0,3 r& _9 `& |' m4 @1 I# J4 g' p! l5 J) U

! B2 o+ D1 Y: S8 k  O3 poutput mcasp_afsr,- e( R# i! a9 l# R* z3 g$ ?
output mcasp_ahclkr," U, f/ t6 T1 O  {
output mcasp_aclkr,
* a2 e9 _' q/ F/ w$ Ooutput axr1,7 {$ A9 H( Z7 H, P: _
assign mcasp_afsr = mcasp_afsx;
2 o# x; r" F9 O2 Nassign mcasp_aclkr = mcasp_aclkx;  O6 H5 _0 \" J( T
assign mcasp_ahclkr = mcasp_ahclkx;
; ~* [! j( a. c9 aassign axr1 = axr0;
5 H* r% b. U; P
- Y( O& y( q' Y* K- H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ o% h/ U4 G, r6 S! l) n7 R1 P  H
static void McASPI2SConfigure(void)' r5 p$ z: `; ?. \" Z
{
+ ]! f/ V/ G6 b1 O) c  @$ C9 TMcASPRxReset(SOC_MCASP_0_CTRL_REGS);% ~0 @; Z# J  b8 t! s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: @+ t1 Q7 E; S$ t, R3 q  b! LMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. T# @/ h! y3 z, j1 y* r* g
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ z; _7 y8 y% W" u* ^
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; y) u' `2 C4 A/ {2 `- @7 D2 G8 F
MCASP_RX_MODE_DMA);( J/ b. c! [4 f: t3 p3 Z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% j. }5 V+ B( D; W1 a
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 l0 V! N/ {+ g2 ^: l- h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 H: K' ^, U( }3 c- z6 h1 p! ]4 p
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 m3 w! F# u. m, R" [; ?7 C! lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" d7 l8 Z' u# c. HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( Y4 {$ L: t4 }9 ]3 z+ z: C1 HMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 Y2 d* R5 M- r4 S9 ^% C' z, gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / \- p" ]( R& O+ j/ }2 R( a2 U
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ |4 i6 H, a- e. o
0x00, 0xFF);
/* configure the clock for transmitter */+ m( q2 B. s! D# H8 d
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);% S  n3 Z. n6 }$ C& M+ B$ k9 h
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  v# H6 B( M4 |0 M% mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
& }" H3 d) f# w! p' S0x00, 0xFF);1 t( ~1 M: y1 z0 U- }
7 ~/ t1 E7 v1 ?2 Z
/* Enable synchronization of RX and TX sections */ 5 O; M4 j' z2 S+ G& U* K
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 p# }  V5 T- }% \) _% j4 y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& \/ _6 L7 h. z1 E+ U2 b3 _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' u) K, n  v( U; t( R# z; j
** Set the serializers, Currently only one serializer is set as2 N; G# [0 b" {0 ~8 h
** transmitter and one serializer as receiver.8 {4 K4 F5 V. p+ U
*/9 |3 L: |* |$ \7 l9 b. Z3 m
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);0 m% a+ I  h  o4 E, [2 l  l# t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- e0 [5 K3 E6 l& {% `$ a1 o** Configure the McASP pins
% E! `% d9 |6 Q+ M** Input - Frame Sync, Clock and Serializer Rx  w' f: e1 e. {
** Output - Serializer Tx is connected to the input of the codec
* _5 \2 _/ z* V& K$ W*/
1 f: j( p) T& w/ i9 X" c4 g* L9 JMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 X+ o' e, I1 iMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));% x% P- G) A1 V- f
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* g0 |( w+ O! k  Q4 R: J! ?| MCASP_PIN_ACLKX
* {. [0 w. V. X6 _8 Q1 w; ~+ t| MCASP_PIN_AHCLKX
9 F' Z% o% d% Q3 ^- S, x% V| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
6 ~. m& P, N" @( K2 }  @6 LMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; f+ o$ b% z) y5 b1 A5 o' _' b| MCASP_TX_CLKFAIL 2 V; d& B0 `8 k( h
| MCASP_TX_SYNCERROR
' K7 s( }! M- H# j, S; g| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # J0 W$ i) a, F- ^6 X2 {
| MCASP_RX_CLKFAIL, B# _2 ?0 m/ l  U
| MCASP_RX_SYNCERROR
6 P% Y' X5 w3 M: S- j5 G1 j| MCASP_RX_OVERRUN);
' H+ s- x" Y/ Y) a1 f}
static void I2SDataTxRxActivate(void); C) W6 V) v: |
{
+ R- P2 V. [% _/ a: }/* Start the clocks */
9 i! R9 v  d: N  s- {McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- L/ N* Q) P7 H* X1 S+ bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" S/ g5 `+ q+ @1 X/ o# X, KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* U8 l3 K& F- iEDMA3_TRIG_MODE_EVENT);
) K  f0 ]- t% L5 d% EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. [0 s# ^) A/ ~9 P3 v& d5 O8 w' J6 j7 rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
( `+ H  Z6 H' x) T2 CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 K8 N/ c5 p  `0 I* G( M: u7 \/ XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 L* E, P9 V. E4 S: t1 P4 s
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
( m) @, S, `- @0 R" |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! t* c  ?3 {# L) F9 k: N% IMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: O& U# n3 H- d}

) Z, c7 c, q& [# R; L) c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( {6 T( I: |( n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 16:57 , Processed in 0.039740 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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