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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,2 u0 i) n( P# B& q( V0 P( o+ q
input mcasp_ahclkx,
- Q! W, I; [. Qinput mcasp_aclkx,
% M: [# Y. V( u( `input axr0,
5 P- P1 x4 J2 K2 Q6 N0 o. [, q8 X) g8 M7 l. M. T9 k
output mcasp_afsr,
& S0 _  W! ~& v4 l% n' s5 aoutput mcasp_ahclkr,
+ t- a) X: m' W6 m  C& zoutput mcasp_aclkr,
8 E8 y8 h! X; ~6 I3 Y$ I0 ioutput axr1,
% o- v( J' W% `, q  \% F- \' b  Q
assign mcasp_afsr = mcasp_afsx;
2 h) J4 B. W5 S) n5 u0 _( y9 p, ^assign mcasp_aclkr = mcasp_aclkx;- g# `8 A# k- C! v) ?6 @3 S
assign mcasp_ahclkr = mcasp_ahclkx;
/ N) `' a  a) I9 E3 [assign axr1 = axr0;

" ^  W, Y* M/ P' e
2 ^6 P% i5 v& k2 d+ a
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 V3 a# ?) i5 q  A, j
static void McASPI2SConfigure(void)# R3 p  U1 s7 X+ M$ o- P3 L1 Y( ~
{
) V, m. F9 B  |! o( ?  eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
: K4 B8 w) @$ ]+ y+ j* BMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' {3 _0 P7 M/ B& _* g6 |
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
1 h; x" G; G3 qMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; c6 I/ k/ Y( H& \. Q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 ]3 E% W- C, @
MCASP_RX_MODE_DMA);' y9 @* y3 Q( E  E$ c+ g- H2 w
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 h% H5 @# T- J* {8 e* X% nMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, R$ K/ C7 \% `' [McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: A& F0 r) g* n, W% Q# PMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 Y* z4 \. ?# a4 [! h8 q- b9 D8 B- IMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 ]/ {% ?$ t% S/ y: Y: [
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# ?" [! l9 Q1 \. E) n
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ H) t8 K! O: \' y; gMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * }& j6 s, A2 D
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* w( x- {$ y* S
0x00, 0xFF);
/* configure the clock for transmitter */" f8 M$ [; Z' ^0 U
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! Y3 q0 p7 u( u4 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # F/ ]0 Z4 O  I, m
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," s6 W7 L: @: [' n$ p7 o& V
0x00, 0xFF);
2 T% t+ n6 r. Q0 j, _% Y2 q$ A) z+ t3 |
) J% \/ F- v0 u* Y/* Enable synchronization of RX and TX sections */ ) c5 s, g, X5 {& I- `
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 \: ~! _3 t8 Q6 T9 o
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 w0 ]2 ~! |$ ]0 j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 k. S( A; m9 M) ^4 j- P6 c** Set the serializers, Currently only one serializer is set as
1 ~6 \, P% h/ r- t6 s/ D** transmitter and one serializer as receiver.
# r$ B- S7 N- L" |% O2 K*/
  F! `* g! q; R. I2 Z3 a+ GMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. ~- L& i% m" X8 v! ^' h1 aMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 X  O) W! o& x8 s9 w. t4 ?# I7 o
** Configure the McASP pins
5 T' D5 H) e5 m. d/ Z3 \1 w** Input - Frame Sync, Clock and Serializer Rx
. L" h; z6 t& a% T2 Z+ f$ O3 Z4 d** Output - Serializer Tx is connected to the input of the codec
8 `! e9 f0 P( `1 E2 J' F( h, L7 o*/
6 B. R1 H2 X1 W$ k0 }- ZMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 n/ s" S0 z$ ]% ]# {1 w
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 l( V) F( u* Z3 I6 z$ I
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  l- {0 |  i0 T" d8 m5 H; g| MCASP_PIN_ACLKX1 c; D8 J+ K# \8 n# @9 W; ?
| MCASP_PIN_AHCLKX) T$ ~1 K# n$ [0 v3 {) M
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ \, A5 p' b4 l5 u: k
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % I) f$ M$ J& [2 \9 B
| MCASP_TX_CLKFAIL ( X! v- P& p7 I- X# A) z6 g: ?
| MCASP_TX_SYNCERROR
9 q' G5 |( Q6 G& p/ S+ c| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  [' d/ v) c6 K# {| MCASP_RX_CLKFAIL
6 V! C9 I/ S$ C) R3 Z" x' I| MCASP_RX_SYNCERROR ' ^# g9 g7 Z* o3 B) U. \! Z& V  m
| MCASP_RX_OVERRUN);
' e1 _! j, L  ?& l5 T) {}
static void I2SDataTxRxActivate(void)
* w7 _" v7 K5 _( c, G9 Z{
* w+ n- d- S0 @/* Start the clocks */5 S* W) J, N: r$ |1 z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, t( T" }. U# ^% T) D7 S
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. ^- }, L! ?# \' G$ w6 i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  ^& \, ~- Y* Q2 V( r! S5 b9 MEDMA3_TRIG_MODE_EVENT);1 M) T# ?+ O0 y& z- n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * g+ h% q$ N! K, _& t: X
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* l- f+ H6 k! N* w" i; j
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: K* f' ?8 l# s9 @McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' n" T% N6 p, k- `
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ k. ^* h7 M. g* L+ ?McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 b9 @: x! k3 ?# {
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 t* ~- A& v3 R5 H
}

( S# r, t! N" P5 i: g. ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
" j4 {1 I3 L: _" y8 @8 x5 V- B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 03:50 , Processed in 0.038359 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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