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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8816|回复: 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,
+ a, ^8 ]. Q# P$ \4 v4 c( yinput mcasp_ahclkx,
5 k$ c: [& e8 t! m% Ainput mcasp_aclkx," f9 G# L6 n& L2 W& e0 @% ?$ v$ {. [
input axr0,
$ i! T7 O$ D6 _# A' ~: p* V" a; k6 V: o$ J
output mcasp_afsr,
4 c% w5 Q% u. X+ o( `6 youtput mcasp_ahclkr,0 L5 a" T8 D  B) Z
output mcasp_aclkr,$ A6 Q* W& B3 N  i) |
output axr1,
* J6 t' A! `& q' X* Z: N
assign mcasp_afsr = mcasp_afsx;7 c, N  w0 G2 U3 ?: L# ]  V9 o
assign mcasp_aclkr = mcasp_aclkx;
( U; c  q  \: g# Bassign mcasp_ahclkr = mcasp_ahclkx;
" O/ F. `# ^7 tassign axr1 = axr0;
/ s# F% `" V6 [% q0 y8 l& [3 K6 V

3 e' U# S" R7 b% Y5 G+ r  _1 u( A- g
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ V8 z+ x/ `, ]# L7 T( ^. c
static void McASPI2SConfigure(void)
. |- k: i- @8 u2 ]8 k{
- \2 K, x- b3 q( r! `# WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; F2 D) O/ x4 B. d% ZMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. p9 e- C+ i7 p* \# `; `; r$ aMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  J& M6 g: Z, d- ?9 y$ ]' P, A: L
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 g' l7 G7 R; G$ y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 _4 v& ]% X5 _% R- H) ~MCASP_RX_MODE_DMA);7 u7 P; E2 d' g; ~+ E7 A3 p6 h
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," j" W; c" C# s- \" F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; f6 Q; l% v2 v6 _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) c: K0 ]( T. D: D( ]
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: [$ n: x  W  ~8 e) D2 C8 lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) _1 i. }' L8 d4 gMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; S) W& W: P* B$ {: D4 e& C. u8 yMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, A: u2 q* ]/ x8 n$ ?# P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! ~8 m4 |- x  B! }) T$ vMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 I. f- f+ f$ m/ |( G) m  R$ ]
0x00, 0xFF);
/* configure the clock for transmitter */
3 g- |9 U9 K, ?# VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
4 D0 x1 X% @! v* n6 m, j6 pMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. `0 {8 H# o, Q0 L& O  CMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
! D, q5 s# S& D% M. c, O0x00, 0xFF);2 I" T0 i$ Y/ a; Z& s" R

& ]9 W0 E; p& u# ?' }6 P/* Enable synchronization of RX and TX sections */ 8 P8 [$ A$ p( L! a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */9 k( v- T/ u" }( W# T, \6 W/ `& D
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ _9 _+ T* Z0 z) b  N3 mMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" c) z% _  f8 W# v3 D, T% W** Set the serializers, Currently only one serializer is set as
% y0 A  I& D5 L% n** transmitter and one serializer as receiver.( ]9 d1 y- E3 N2 l0 U. I
*/9 c: @5 V" e4 m) ]& S
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ u% A7 K" G+ S; T* hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
. i0 }' V1 C" u! T2 [2 o** Configure the McASP pins
& z$ Q4 r# m, [$ u) o7 [2 t** Input - Frame Sync, Clock and Serializer Rx/ q/ \' A: @' C. M1 ^  C1 x
** Output - Serializer Tx is connected to the input of the codec
. G! J+ A5 B. x2 A5 H*/, A0 D9 V/ |5 O
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: u3 o) a$ a2 _( qMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 D2 N- r5 s6 AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 _# U* J  ^5 c5 O' {
| MCASP_PIN_ACLKX
( o& H  o3 B2 G+ S% r$ T' S| MCASP_PIN_AHCLKX/ v: d5 }" \6 Q* Q  t. f+ P8 O
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ z7 ?" _3 P' oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / n  g0 I0 L9 Q) a) X5 M
| MCASP_TX_CLKFAIL
* w1 Y0 r9 A, v| MCASP_TX_SYNCERROR0 J- t/ R( v& R7 n2 Z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   P/ V- g, U. C7 y* e. H1 v
| MCASP_RX_CLKFAIL: G4 i; _( d0 w3 s6 w
| MCASP_RX_SYNCERROR
8 o  g* t, L# R1 Y| MCASP_RX_OVERRUN);
2 {9 R9 C* M3 B, b3 _( ?6 F}
static void I2SDataTxRxActivate(void)1 w. u. M2 {+ P: M9 h* S
{
5 z. R9 v) d* `9 p/* Start the clocks */
* J6 _/ E# p) z2 s7 C1 R/ u, ]McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 B4 F/ j+ D0 @& P! d3 JMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 m+ A  h  _% d2 D6 X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
1 r" |4 Y+ @5 @$ n2 c" V( bEDMA3_TRIG_MODE_EVENT);6 @9 [$ m0 E) Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # \$ Q9 }6 Z  B# g5 c  T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
6 m; U4 A4 {- a* ?7 q+ }5 VMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# P4 u6 G) M* R5 j) P& e
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" i. \, f3 m! v" [" zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% d4 n( c+ t+ F+ fMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
# j( w* \" r+ L9 m, X# X8 QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);; E2 r! y4 `) G# N9 }" S
}
% u7 Y& T& g9 W/ e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 @4 B& x) S% Z' s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 11:46 , Processed in 0.039279 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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