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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8456|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx," T+ [: r& _; i' K
input mcasp_ahclkx," T+ h6 T" q1 E
input mcasp_aclkx,' ~) ^$ U1 f9 [5 j
input axr0,
8 k8 E1 `) D) X
# r8 B& R- e, boutput mcasp_afsr," Y5 O% \3 x% l; Y* F; P
output mcasp_ahclkr,1 v5 \7 Y% T' D! S5 U0 [$ h
output mcasp_aclkr,
( J/ j9 L! H' H! qoutput axr1,, W# e) g: U& x9 ]
assign mcasp_afsr = mcasp_afsx;
) B& [2 i  v0 xassign mcasp_aclkr = mcasp_aclkx;
# q% a9 A  M( `9 |assign mcasp_ahclkr = mcasp_ahclkx;( _8 T8 R5 X" r
assign axr1 = axr0;
# x2 b( a3 w! U# L* r( g
  P: X/ c  f0 r$ o0 x* ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 D- q1 G: m* P9 ]  b5 |1 T$ ~
static void McASPI2SConfigure(void)" h! t4 |+ j3 ?" g0 t' ]
{
1 r5 q) F2 r% S  d2 w: xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ J4 i& G, ?! [! T5 `# GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 m; v6 l, ?" u$ i2 P$ e" U  H) K8 HMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" e8 r7 o+ C5 e) P1 f4 pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; E; q0 U0 V/ W) h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( @3 y( l4 f5 @4 ^$ C( s5 f$ {, Y
MCASP_RX_MODE_DMA);$ m8 H' K- Y% ], F' h$ X1 A2 C
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& \& V+ T# S3 d7 }MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ u3 T3 f% G: a8 t# eMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 Z- n$ f: L% V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
# `  T4 q6 D8 J: q% |- xMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
, y& g' O' }) m" QMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" c6 W$ q# u! FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! G7 k1 C; b' ~2 f/ PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 A/ ]0 g' m" ~% [! d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 r) F3 }1 F; W% ~
0x00, 0xFF);
/* configure the clock for transmitter */
) Z5 |, T0 K- V+ bMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
! j! v( k' j6 Z) YMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 n! P! f: ~/ L& p& h" EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
5 v7 J: d2 t. Y. E2 K6 B+ q+ U9 f9 u0x00, 0xFF);( j/ b; m6 C( R* m# V2 q/ @8 ]3 S3 t; S
( a3 `  K: l! z7 K4 B! q" y! a. k' F
/* Enable synchronization of RX and TX sections */ ; b$ E$ I+ D' t$ [' E4 g
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) ^9 D6 A; Z7 j4 n7 \& @8 u8 YMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 v' @8 Z4 {4 q, K- M# `+ v$ u8 bMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; U( O7 u* ^2 u3 k0 ?  U( K; U2 C
** Set the serializers, Currently only one serializer is set as
6 z* c; w( C' }7 C** transmitter and one serializer as receiver.  `$ ]3 \1 s" g) O( V3 P
*/
  w  v% [, x, ~, Q1 g0 {McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; K4 `0 ?4 d2 C+ P! SMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 t) y* k3 o3 Q1 V$ j  D** Configure the McASP pins * @- p, E; {5 J- {8 Y7 }+ F
** Input - Frame Sync, Clock and Serializer Rx' [8 N! K1 G! q
** Output - Serializer Tx is connected to the input of the codec
, i8 |% j2 Z/ k5 G& a4 [& E*/
9 D: b0 m. d; O5 w0 eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 e! j+ i+ k+ }+ C& g" ZMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" U0 e2 e$ I5 T7 J4 \" h( q  L( d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 {- N- ?* L: Q; ?| MCASP_PIN_ACLKX8 h7 C2 q5 f+ I4 B( L, ~, Z# _
| MCASP_PIN_AHCLKX1 p1 |* p! A$ Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ y  @) O+ V: r; W* W
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 1 P2 x( q) _: D' y
| MCASP_TX_CLKFAIL % {, r- q8 L. X9 {
| MCASP_TX_SYNCERROR
" `8 e, X& J# e; Z+ T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 \7 g) D% _/ C) b' v4 v8 [) Z3 C| MCASP_RX_CLKFAIL
/ w% s( o3 v# C+ O& || MCASP_RX_SYNCERROR . S; y/ Q# f( \" n' R$ F
| MCASP_RX_OVERRUN);3 n9 P( I; n. q4 d1 j4 U
}
static void I2SDataTxRxActivate(void)% a: Z3 ^  r$ ~# d6 `$ b* @' y
{
2 U; b. }; o& n) g) K" w/* Start the clocks */: E" L3 `& H. x3 D; _1 o  s
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 g2 \. W" w9 d% G2 t6 L6 U& A$ V
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 O1 x5 k+ U; P' l: ~! v# n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 f1 n$ s( \  l4 D
EDMA3_TRIG_MODE_EVENT);  r5 A2 [. l& N/ U  ?6 i6 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & Q" B1 t$ L4 S0 J2 N
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- t# z, }2 `/ e$ {
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 F* R! D, M2 W4 u% s# j  ?McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& f) h  \3 }* U9 p# R
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( `1 N- \8 j+ W
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: W0 i8 ~1 T$ W2 @1 t5 uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 s( g" a" y/ T( T. h
}

5 I; T8 n3 _4 w+ J; p. d: }; x7 q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 l4 j  R( C& T' `; n1 N5 v! Z/ ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-23 21:01 , Processed in 0.037327 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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