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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
5 V. ?; Q' p% ^' o- sinput mcasp_ahclkx,& f+ X" j$ b3 A: u& E/ j
input mcasp_aclkx,1 P5 L5 J9 N) L5 Y- A/ ]# m
input axr0,+ D" e4 C6 h& x  C. q! ]

1 A) }% c  Z7 ^6 g; g5 H2 voutput mcasp_afsr,
. Q6 V) e4 }$ K' _# @3 D7 i7 qoutput mcasp_ahclkr,7 y' w4 L+ F$ H# K3 q
output mcasp_aclkr,
, W$ U; c) B# F# s  E7 aoutput axr1,/ e5 x# @# F' @, a
assign mcasp_afsr = mcasp_afsx;: B, g# \4 T9 f* b: m
assign mcasp_aclkr = mcasp_aclkx;
6 j7 E" \5 n) R, j& `: `assign mcasp_ahclkr = mcasp_ahclkx;% V5 M3 I! v% ]& @3 s
assign axr1 = axr0;

7 |& w( o' s/ {. m  {! T' k0 Y% G- g% ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. a5 }3 z5 L% z2 n, ?# ]) A. g
static void McASPI2SConfigure(void)
" v' g4 I/ u5 c9 e! ~2 ~{
# }7 v' b$ w5 AMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 n& u/ i+ t; j9 c3 |( o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( x% Q4 b; R3 a' Y2 f
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 h5 q8 I8 ?! h+ f7 y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; x" W5 n: k+ D: nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 V3 E: M% {( T) c
MCASP_RX_MODE_DMA);
* k3 H  r' Q. \$ hMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* S6 f6 M$ ]7 j, |0 e0 LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
8 V- u2 y3 u: B$ [0 UMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 s. m7 A3 E: d2 H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 V3 s) L" n( k' e" }! t) ^
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 e/ F8 y1 N- ?( ^& J, A+ i6 n
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) Q' j' H$ c# z6 A2 x% e6 lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
# j8 M8 a/ q; o$ S: C% gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; P; ?" l1 V; \$ ^McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 Q$ u6 h% V2 D) b2 C! b* A0x00, 0xFF);
/* configure the clock for transmitter */
- D" c# A" n* dMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; p$ h6 @5 [6 z  i7 R) B
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ( H! h% }8 A) Y$ v2 R8 P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, `5 \8 U3 }# `& P0x00, 0xFF);. f% V+ i) e7 x1 i
) x, a3 `! e0 D1 L2 F3 v6 {$ J
/* Enable synchronization of RX and TX sections */ : E! ?; t6 D  @' o, c! ~* |& f3 F
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 e8 h  O7 Q' k! p# _McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" Q0 h# h+ n/ p! ^. y1 Q* e
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** K' t4 X$ B4 B1 j) ~
** Set the serializers, Currently only one serializer is set as
2 u8 l* q4 Z. v$ T** transmitter and one serializer as receiver.  d( t1 _. y* ^
*/
7 }- _  \0 k: A) {6 G- WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 O' s! F1 T0 `: Y- W  B# c
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) x- h1 @& q# ^" ?+ l4 |** Configure the McASP pins + f! y6 U/ h  F- e9 c
** Input - Frame Sync, Clock and Serializer Rx- M4 T- T  f$ n' c8 N; p: u8 x1 L" h, q
** Output - Serializer Tx is connected to the input of the codec
  A3 I( n6 H. `5 V* ?*/0 }6 q6 h  [: F# Z9 P
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 b7 r8 S" ?% F. P% KMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));1 M  _& G3 A  n; Y; D% `2 v
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( A' J: o2 k! c| MCASP_PIN_ACLKX
6 {& i! E  D7 \  N6 d/ k| MCASP_PIN_AHCLKX
) V! x3 C2 X: ^3 f3 a5 s( ^1 || MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" D- p, j; p( g0 d4 HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 h5 c% r! }. l4 _% l
| MCASP_TX_CLKFAIL
; U8 |" y$ q  D2 Z| MCASP_TX_SYNCERROR; j+ P0 K+ j! L; x
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - a7 D# h" h$ U7 x, Z' D' C' O* F
| MCASP_RX_CLKFAIL6 x. G5 d/ N7 ^- T
| MCASP_RX_SYNCERROR 5 @- X5 C- u* V8 ?+ ]  p5 n+ `
| MCASP_RX_OVERRUN);
  t  q& o4 S8 Q2 u/ d# l}
static void I2SDataTxRxActivate(void)
# O) u7 v* Q. x' M{
" b2 s  P' t! j1 y+ u/* Start the clocks */9 f0 E6 I  M9 Y- d' r
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 _) q: P# {' h" f& H2 s
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; q: r0 q" ?' c0 k5 v" W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% i) z& L  U6 K( I7 ^7 @5 ]( J
EDMA3_TRIG_MODE_EVENT);* K# R8 h1 O1 k) x: j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 0 f4 f! @# F( y7 S& G- ]
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */1 ]( N* a4 t2 I" |% ?( ~
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 ]+ e$ u: L, X9 |& q5 J. |McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */0 H2 b. f& L# Y0 y* H$ F3 U$ r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 q% l$ T6 ~7 b7 i9 r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ |- P( ]& W) S0 c+ u) ~. VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 O, Q2 u/ @6 k1 g
}
3 p. r8 G9 c5 J& y2 |9 I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% n0 b4 |) Q( B8 [, n5 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-24 16:56 , Processed in 0.045438 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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