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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9611|回复: 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,/ Z* r5 b& ~" l- C9 d# K8 N
input mcasp_ahclkx,
* S2 h! i& U+ Q& G: K- Winput mcasp_aclkx,! E$ y4 u# X5 x7 X
input axr0,; x: t7 y! E5 f* }9 M

$ Y* k+ R. t5 p9 d" E3 Youtput mcasp_afsr,+ H  C. u5 M6 e/ I$ B' v
output mcasp_ahclkr,9 n  {2 P/ n. c% B
output mcasp_aclkr,
4 m# Z- [2 m0 [  z0 ]- [4 i$ C/ @output axr1," a( R. z& C; O. j4 q% a" L( g  }
assign mcasp_afsr = mcasp_afsx;% j0 i8 m2 V/ y, x' e
assign mcasp_aclkr = mcasp_aclkx;1 P* a) m+ c# _; p0 Y& X: w
assign mcasp_ahclkr = mcasp_ahclkx;7 ]/ t& {9 Z) }, J
assign axr1 = axr0;

( T5 c2 l, u* F8 M" ]# Q
( K# b( N: y+ a: H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 B; e( h( X2 c; e  v
static void McASPI2SConfigure(void)" d* T" }& t! h0 L9 |& p5 I
{) l) j8 \5 V1 J! j
McASPRxReset(SOC_MCASP_0_CTRL_REGS);1 m1 k9 h8 l, {2 H2 Z
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) n1 \; P2 b1 \! wMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; R+ F) d8 X/ u4 u# i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- ?" x9 S) s$ D0 ^0 f
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 s7 m& p0 a3 \8 u' @. W9 {( QMCASP_RX_MODE_DMA);9 t+ _. }1 }% ^4 m: C
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ j& J( b, O. L/ [MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ T) g3 k  l% WMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# p# @3 [  P7 F8 L, cMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- f- O8 q% r! P3 K
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 q8 T; }, s* z0 A$ }  _MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  W# N6 A: k1 O  W! w3 `. m0 ZMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 S8 n) Y# d) L$ _' R* P0 E' [McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 s8 o* G: g# @# H! F6 H+ v/ b
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 _1 |& z0 l3 Z& y5 Y- l
0x00, 0xFF);
/* configure the clock for transmitter */
1 \  P- X' ]4 O8 }McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 D# c) i5 I  [5 q; L$ QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); - @3 S, E/ _& V  d. P+ f
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  Y4 d& I- y4 G. h5 s
0x00, 0xFF);
% o$ f; N0 b; W, D% I, ]
9 \5 \! o( B! L* f/* Enable synchronization of RX and TX sections */ ) L" L" }, W- U8 a$ x$ n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* P% L! O8 L  ]
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 W/ s* k, h6 x+ ^! NMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*+ S+ `# n& `/ Z  O; B; h6 E! y
** Set the serializers, Currently only one serializer is set as$ k$ |# x$ N0 f" O
** transmitter and one serializer as receiver.
' u. E( X! \  @+ a*/1 c; B$ t5 N' {$ k# w. @* |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# c, _- I1 y* gMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& N& g- }0 @4 k$ L+ h# z  C  O** Configure the McASP pins
4 C; [1 H4 u  L& B% P* [( u** Input - Frame Sync, Clock and Serializer Rx& I6 h1 S3 S! S! A1 i( p1 B
** Output - Serializer Tx is connected to the input of the codec # L. h$ P. @5 j  D4 F
*/) ]- E- [/ r3 C
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);: w4 y' }1 C( ^5 a, |% p
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, o+ _& A# v" l; y; r. V. z8 i, EMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ p! _- Y, f2 P% Y( j/ R5 C0 {( R
| MCASP_PIN_ACLKX' e9 k/ Y& g$ @
| MCASP_PIN_AHCLKX3 Z8 j& Y5 Z: G
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  Y2 ]) o1 k, KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( c# V/ E. z; F; Z& L3 S* [4 ?
| MCASP_TX_CLKFAIL   p" H: @% f* \' P& S
| MCASP_TX_SYNCERROR
# m/ c" H9 Y- X4 A7 _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   v; {& f& x: }0 U) z. N
| MCASP_RX_CLKFAIL, J( d5 J' v. I8 x2 E
| MCASP_RX_SYNCERROR
5 v4 g/ e) b4 G* y& Z| MCASP_RX_OVERRUN);+ Y6 ?$ L8 S3 d; x3 m/ [/ d
}
static void I2SDataTxRxActivate(void)
- K; U2 `* D) y- l! t{
1 o/ ~. G4 ~5 W' L- f7 k+ ~& P/* Start the clocks */
& h3 b$ V" ~7 [/ AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# n1 G# O9 {( i! e
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; e& t# b2 a5 g% V7 v, e3 q1 O
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; @% K. f" @# p3 p$ S/ {
EDMA3_TRIG_MODE_EVENT);
/ v: k$ F3 q, T3 {( |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 I( _% l# f! N- ^( S, N1 a  e# |( j# YEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ w% Y; W% {7 D/ K* q# g8 rMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* r) `0 Z; T# B  }6 PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. R$ m! p: @2 K4 c% m6 t$ P8 Q) jwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  q+ v4 u5 [1 B9 @1 g8 o  h- X: a7 |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ V2 N. q' k+ D( l5 [4 `5 M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 E7 Y6 }* C7 z* K- n2 _+ [; Y
}

4 r* u/ y6 w8 C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 C, o2 p( u+ N+ a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 08:12 , Processed in 0.041081 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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