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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10771|回复: 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,
* a( c' h: l3 _# oinput mcasp_ahclkx,
# N( e$ @  o1 G" Tinput mcasp_aclkx,
. a. \  \) c# g) h  C) cinput axr0,
  a7 e; b0 Z8 o  d# h1 W7 E
$ {6 H" q# v& {3 b) ^, V2 {output mcasp_afsr,
! a+ t/ f9 g& O9 I- `3 Woutput mcasp_ahclkr,
2 g% s! P& v9 R- w0 Boutput mcasp_aclkr,
$ k8 W. f& _& U8 V+ x3 moutput axr1,& k' j' v" t. |# T- d$ P9 E
assign mcasp_afsr = mcasp_afsx;: ~- H+ H; v& r0 v# G2 [1 u
assign mcasp_aclkr = mcasp_aclkx;
. b/ c" ?; M* H1 ^2 t' wassign mcasp_ahclkr = mcasp_ahclkx;
9 j! T' A! F8 B5 v) B9 [assign axr1 = axr0;
& B2 p8 B- g. x- W  U
0 r" i1 V" a+ U3 S1 S
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 C9 e) b- V" b) H' A  y" c
static void McASPI2SConfigure(void)
0 Q$ P1 g, S  }7 W2 j; @{
3 N. h4 O" J4 ?+ H  X; v! P4 @# z2 K$ [McASPRxReset(SOC_MCASP_0_CTRL_REGS);* w* G% C# }+ S' e
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# R7 z# O( w3 S% qMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
3 Q  A, j  C- H! vMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */, U7 w! a$ i+ d, J
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( m7 w& U$ h' r) Q' m  UMCASP_RX_MODE_DMA);
# s* o) b  |- `7 J2 cMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' F+ I) {/ L. X3 vMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 l+ L; ?' _0 t
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; a6 ]3 z, o, R) {% nMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% y" i. _, g5 C4 h- l6 H* cMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ {! A6 X+ v; I# ]
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 ^' ?7 `: H% s2 V2 s; b9 TMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 k+ P2 I4 ~; `1 J# s5 }3 W1 n
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 w1 J. H: g1 w' ~. Z: j* x% rMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( K; b: w: c7 o, K6 d2 A
0x00, 0xFF);
/* configure the clock for transmitter */0 p% L; W  `* q0 a9 k# _
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ C/ r! v$ Q7 d$ N1 _: A
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& B0 V" q* y7 l' o3 V9 C3 UMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,5 }) H1 z7 @8 r
0x00, 0xFF);. M4 _' \( M$ k1 j2 H

  c$ [( X/ I1 x: v3 K/* Enable synchronization of RX and TX sections */ 6 [# L7 m/ C1 K+ a, A! S% c' O
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! ^6 k: s; Q- K/ b5 zMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 t0 I; h3 Q' @5 l4 h. \2 I/ ~6 N
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# c. {) u( e) X* g$ q. U) v. @
** Set the serializers, Currently only one serializer is set as! {. J# ?1 r4 \; b
** transmitter and one serializer as receiver./ [0 j. N7 q: J" y4 k
*/- Y, |" D. V) e5 t, x
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) b$ t% v0 g' v) Q+ C  O: G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*- I+ k2 u" ?5 y6 [' d- v! T' ]
** Configure the McASP pins 5 V$ ~( Q" C; e
** Input - Frame Sync, Clock and Serializer Rx
0 j5 \+ s1 E7 ^8 s( R$ p** Output - Serializer Tx is connected to the input of the codec # i4 N7 Q( K( D  K5 C$ z  A( C2 x
*/
3 ^% J" O4 p/ M. v6 p% g, |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- x6 J1 D0 e  F8 J2 _1 u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 a3 n" _" Z% {- {# a; w
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ k+ n" q* h7 b
| MCASP_PIN_ACLKX, [8 r) R; k5 b' i  P, l
| MCASP_PIN_AHCLKX
4 R/ M# P! _; f( ?| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' K  [4 T) z4 e0 L1 OMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' W' C2 [: }: U; M6 b
| MCASP_TX_CLKFAIL
8 B* e) ~, _6 O( U+ I2 y7 |- q0 G3 S| MCASP_TX_SYNCERROR
+ {4 n9 L& [( ?. \( D| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 W- V4 |- {% z  {2 I6 r* |
| MCASP_RX_CLKFAIL9 S. y4 H6 a2 H9 f" {: n
| MCASP_RX_SYNCERROR
! l' x- ^+ j5 i+ T| MCASP_RX_OVERRUN);7 a0 H0 k* I' x5 ^
}
static void I2SDataTxRxActivate(void)
) @) M6 `+ ]2 j# t- i7 |4 j7 z{
% |- u0 D0 H& I8 T; }9 T2 }/* Start the clocks */
; E5 D7 }! Z) M4 BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 }' w1 B! C" uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 e" s& L; Y, A; f# b; E6 UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ b2 g0 o4 f4 ?9 B; I- N
EDMA3_TRIG_MODE_EVENT);
( k# |# N  P$ M- f5 y$ w- lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
9 W' T. ^6 ?2 t2 H0 bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 _" L/ i% G% T" y1 s& r' d5 H9 rMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ s3 v" R8 z+ GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 U' a6 S8 s4 qwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' R  ?) \5 d+ k& B! OMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 M7 L, t) E: z2 ^6 `# F! B" U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. ?4 X1 F2 o+ N
}

8 T; m8 @) b  F* d7 z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& {. W% ~5 F& t, K, R. V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-15 11:31 , Processed in 0.040731 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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