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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ G4 l, K0 Z8 r( b( @
input mcasp_ahclkx,
' z+ z+ Y# K- B( y+ ~5 p; z, @input mcasp_aclkx,
4 o# S1 d6 B! E7 Ninput axr0,
" y+ D& D* Q; u6 E( n: p) j4 y* c$ f' J
output mcasp_afsr,7 n6 [  J' l  B: i
output mcasp_ahclkr,
5 t8 j! Z% Q9 h( x- `: Y& e3 f$ E7 ]output mcasp_aclkr,  f! T3 k: D8 y! \$ @3 X6 p; I! A
output axr1,0 q/ A7 E/ S7 i5 \, N% s
assign mcasp_afsr = mcasp_afsx;6 `% I. R' i; A2 L" w8 `4 B) N/ g  {1 k
assign mcasp_aclkr = mcasp_aclkx;
; o" C$ E; E" tassign mcasp_ahclkr = mcasp_ahclkx;
8 K' N# {7 f. g- Y5 A& o! H% g5 U' c/ sassign axr1 = axr0;

. k7 ]5 M( z. y, W, g9 G1 a) [/ x5 ~1 n  u" k9 N$ _2 N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 G) F5 o  \  H$ F
static void McASPI2SConfigure(void)0 o6 [6 w* q4 n4 L
{
5 V  \: r0 ?2 I$ \& o- ?McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' {9 x0 z1 H3 k/ e* o5 B: aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 p6 K6 w( p+ ^
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. s( K7 y2 e* d6 U: {: LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* q5 B6 A7 r! N  mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 ~' j" k. P# Q, s( b4 X2 i4 p
MCASP_RX_MODE_DMA);% @8 Z+ G/ |4 T- n; F: ?: w
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 c% D" }1 _2 O5 t% A" i$ g6 F: T- R  I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  r# E2 n: z3 Z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : [/ e: H- W3 t
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ X; @* @4 T9 n- {; E  vMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 1 L, p% |6 t' F
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; r2 u: M$ \- s: q4 l
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. T( X$ e; X0 j+ f# W; UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# R" f) J) ~3 ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: {# z, q4 i* v7 f* Q* m
0x00, 0xFF);
/* configure the clock for transmitter */
& U0 o4 A, p) ?+ E; E8 K2 i4 lMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 A5 f, D+ v6 X1 _- dMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ F8 m9 X5 x' R# f0 c% fMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! i( m3 ]6 C1 h# g1 |' {7 L0 \) K; h
0x00, 0xFF);- ^6 N; O2 Q+ @, W: z1 d" ?& C) H

  l/ t: n$ U6 `) I. o/* Enable synchronization of RX and TX sections */
/ G6 ^( z) Z0 H( _" a; ]0 HMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
7 [9 |% G' q$ L' tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 n% b) E- l" ~6 d3 F$ q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 A' A# D% P8 [9 A. b+ o' o** Set the serializers, Currently only one serializer is set as# p# k1 q. V8 \" ^* \
** transmitter and one serializer as receiver.% B3 F# C* ^; j, Y0 t& V5 X
*/
# Y: E% u1 V" y( N! }: {McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- a. k* {/ _* V+ t; e' E- Q4 Q* H
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ F5 R7 t0 w9 E. _' u& \4 s% m+ Y
** Configure the McASP pins 0 \9 o/ e  C' b/ }+ E( ~
** Input - Frame Sync, Clock and Serializer Rx0 F) s% a/ y# E
** Output - Serializer Tx is connected to the input of the codec
4 E6 z1 g) `* M: g' ^0 x' q: G*/
9 B' A$ W) g" BMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 U0 E3 h' Y* W4 U* y/ c0 {) dMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 i& t( j, U; \) S' ~" S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 d0 l' M8 u3 P0 O$ O0 B
| MCASP_PIN_ACLKX
' U+ F* F0 G% F2 r* V1 [0 W| MCASP_PIN_AHCLKX3 F4 \5 W5 Q) M' Z, {
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( K5 b- A/ h( y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
7 U* Q) _7 E6 z2 L9 F4 L( N| MCASP_TX_CLKFAIL 3 G3 n( a6 G% Y: r3 F- g
| MCASP_TX_SYNCERROR7 |  s$ F- B' y3 A/ E3 Y: X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 x! A) Q( Q5 M7 Y1 z8 B- t% @+ || MCASP_RX_CLKFAIL
0 H$ {5 F% o* q- s4 \| MCASP_RX_SYNCERROR
6 _# N" j9 |) |, M| MCASP_RX_OVERRUN);
  O6 H4 z( F/ j& x& T$ G) z  ~7 v}
static void I2SDataTxRxActivate(void)
# I+ e. W9 x( L2 X" c  S/ F  p# G{
% w5 U) b$ q! D8 e3 C7 T) p/* Start the clocks */
) p1 N( `- _0 X2 D9 MMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 V, X1 \. M8 i3 y/ t/ d- |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! ?; W( @3 Y& I  w4 I/ e# P  l, f# [EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,$ U! C; A/ t! ?: g% D5 K
EDMA3_TRIG_MODE_EVENT);" B6 u0 r4 `, j9 @& }% T% K8 H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
0 a/ d4 D& z2 J8 d0 S% ^EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 r- y- V* s5 s6 w- X+ v0 x; @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 ^- {+ b6 ^, l$ BMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# s$ K' I; J1 D9 M# B; rwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; E! G( }$ K% q; A, R; r1 lMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 m( ?8 t% y/ P! q. s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 Q8 X  |# @+ Y2 W: ~}
# K. {0 N$ A7 s8 s8 F% q7 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% x- s! p. L, `7 _* ?0 c/ g/ l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 08:20 , Processed in 0.047100 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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