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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8884|回复: 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/ M7 _; b8 @
input mcasp_ahclkx,
% E1 Q+ \: f9 C9 Z4 h7 ~input mcasp_aclkx,
- i* Z7 q. J& p7 \& c0 T6 d! Z# Iinput axr0,
+ H( J/ o& V  i4 ]+ v' j5 h' P. o% ]1 n: k& F! P& J
output mcasp_afsr,
+ Z* m) e7 V( \  ~% P( v8 Routput mcasp_ahclkr,
' |0 r2 P4 I) [output mcasp_aclkr,: W3 i. Y* }8 _4 y8 R) P  E: N
output axr1,
* K2 B* N- n) G1 h
assign mcasp_afsr = mcasp_afsx;: V1 {/ H! v  N$ ?
assign mcasp_aclkr = mcasp_aclkx;6 j2 k% A' E  J
assign mcasp_ahclkr = mcasp_ahclkx;
9 R+ P$ n+ R( X: qassign axr1 = axr0;

6 ~% b& ^# v  A& Y% Y: g7 }" ?& M; q
% x4 ]4 N4 x" J  u6 M6 J% m9 H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 G- J6 _5 k) q: q- _; I
static void McASPI2SConfigure(void)% D* u7 }2 m7 ]/ h& S
{
. `* v* b8 n1 r: Z- t# o: FMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; {# I7 g! L  XMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& i9 ]3 R" H" RMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 ^) z5 O: {: M; O3 ]) m9 t! L/ Y  Y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */( Z- h' |+ K. u2 p5 E& y0 y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ T" h  n) b7 t7 r+ YMCASP_RX_MODE_DMA);$ D# C0 N5 [/ T6 |% _0 O2 j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 ?0 B& E8 Z% vMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' {2 p4 Z% F2 c
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. L$ o& \5 C, GMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 f! y4 F7 E3 I  }  q  oMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   B9 W* d  c4 k3 F4 z! p
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 F. c3 n: r: F$ w  K2 [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( K  p) H; O4 J
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + t5 l6 p) a) y5 t" `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) A; @. \; K* \# s8 A0x00, 0xFF);
/* configure the clock for transmitter */
5 n% G. `7 L' b3 n( I  wMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, G$ }* v" H( ~' e5 z& W! h) M
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( H% i3 u' B8 p. p/ D, O0 nMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; p+ ~* n& L7 _/ s$ B1 c1 `0x00, 0xFF);
. N- O; K: s  I# f2 G% _
* m! w6 h+ I7 j. y7 S" G8 y/* Enable synchronization of RX and TX sections */ $ ?7 q8 I& B3 i" _. P2 B, x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 |/ ^$ q" X' R7 f3 P( q1 S0 iMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 q. B: \" ~1 g! `# x6 ]; r9 }" rMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 I& L' l8 m) S3 C8 o
** Set the serializers, Currently only one serializer is set as
* s* k  M) q( `) W& F** transmitter and one serializer as receiver.
4 m6 U$ `/ Z6 D" I# }2 B*/8 ]- N8 [- q0 p1 d$ E2 P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);8 a* `0 M/ q8 p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' A: q# E5 Z. H0 }: L# H
** Configure the McASP pins
- j9 j/ ^1 ?1 o% `4 Z2 `, o$ h$ X** Input - Frame Sync, Clock and Serializer Rx: u; _. D/ A/ o1 ?( N: \7 o
** Output - Serializer Tx is connected to the input of the codec
  w+ [) `2 h4 p) o! E*/! P5 k7 d# B2 S# g9 B8 L
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 a$ m! Z4 G0 s1 }7 d$ m4 \7 g; NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& m% q9 l/ @) e& J* Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" i' Z7 c; A2 b, Z9 u| MCASP_PIN_ACLKX9 X& V1 i: e2 L3 H1 |' [3 e) i
| MCASP_PIN_AHCLKX
/ R: h4 {; Q7 }1 ?5 L# o( `/ J4 y| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 ~0 T, V8 D6 t% o5 q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 q& b* v3 i* b( u) @5 z  U" H/ J| MCASP_TX_CLKFAIL / w" }8 J) {0 n, K/ |. n
| MCASP_TX_SYNCERROR- o9 f0 }% a+ G- a- R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 n; E! P4 D  P* f* R| MCASP_RX_CLKFAIL
! o) M% j) I! W# @4 z| MCASP_RX_SYNCERROR
+ a) J+ Q" V* V) H| MCASP_RX_OVERRUN);7 ^  V  A+ I' @
}
static void I2SDataTxRxActivate(void): k! ~3 H8 X$ X- b
{
1 T* P/ v. `* B/* Start the clocks */! h, _  B) Q: E' K+ B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; i! i2 g! ~. YMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ g( |- U  ?7 x- M! Z0 t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 n% V2 p$ a0 N1 W) {5 W9 NEDMA3_TRIG_MODE_EVENT);+ [/ C2 j1 s8 d& d; C( E: M7 B2 W+ Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 g6 }0 N7 x/ @5 CEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 U" ]& X/ v9 x. ]! W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* T+ W! \6 p' k3 `3 Q# f' y2 XMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */4 U2 D+ p- H' I, v  R1 p" t8 ^( g8 p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% x9 D! q8 h, _& a2 d$ jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);) R& F" A( @  V1 |# X2 H  V
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) W6 C3 k7 Z$ {. |}
+ Y  P  T+ O# k) w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  q. ]: `- z# Q# x  y8 U" G/ ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 00:29 , Processed in 0.041244 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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