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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11648|回复: 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,% }4 h4 }, y! W# D( n/ r9 z
input mcasp_ahclkx,
5 X) h; W+ M( B" y1 W9 rinput mcasp_aclkx,
) u- `- m: d8 s9 Oinput axr0,
; P5 p/ D* @( R1 }2 P
- Z$ _' Z" d+ Z* @output mcasp_afsr,/ N8 `# E6 [- }
output mcasp_ahclkr,9 K: F* d1 R- @" s2 r" m! L2 o
output mcasp_aclkr,( Q) S2 _4 m; D% L+ I
output axr1,5 G9 o3 N; @4 g6 a- |  E' H
assign mcasp_afsr = mcasp_afsx;
  u- e1 I9 l& p: `. u4 bassign mcasp_aclkr = mcasp_aclkx;
) @. [2 Q- }; t4 F- u7 `& ]assign mcasp_ahclkr = mcasp_ahclkx;
+ e( r- C2 c7 E. sassign axr1 = axr0;

6 I6 [! e3 L; w4 d5 {; D
  g& [" X5 z+ x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 k4 b3 S- \' a
static void McASPI2SConfigure(void)  o, H8 L1 o4 ^' G% K/ S6 \  B5 i
{5 v* z$ e' ?% [, |( T1 {
McASPRxReset(SOC_MCASP_0_CTRL_REGS);5 O, a7 q/ S4 U+ k% \0 N
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */: |- g0 L, X9 U! G# ?$ V
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. H1 Z* S& [. e( K  ^- V0 o! I& vMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 L; k5 K$ A! m' E# s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, {' a2 S7 M% T6 eMCASP_RX_MODE_DMA);
5 R/ X0 @8 C9 L2 qMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% O& i; G0 B' a; b1 X5 s+ }5 fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( S0 i4 p) J7 L" e4 H; c4 JMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) ]3 E1 w2 D; s) }5 G1 s5 L
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: U0 r  u9 k) d* P# N
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 R0 r7 |3 p) `: @
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# G( ?8 `' V: ]/ OMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
  }) V- Q1 m2 y7 X, J, v- WMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 v, q7 s& X; L+ x& w8 G# O! JMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 S$ a  ?8 i5 b% |4 l+ J! W0x00, 0xFF);
/* configure the clock for transmitter */
" v" @3 O- W3 rMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ n( _) y( c  G2 h  A* l7 d
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , s% f/ _+ U9 l& e3 v3 W. q: B; d6 g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 W+ ~# [; h: F0x00, 0xFF);
7 o" @3 r0 @3 K! x7 g  @; F; A- g. Z% ]- \6 m5 g+ C* |7 d
/* Enable synchronization of RX and TX sections */
2 v8 F7 j0 W5 U; P3 a0 H! dMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: p, o: i- l* z9 f  uMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 b- P5 V7 |4 w0 f
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ l, R4 _" s1 Z/ z
** Set the serializers, Currently only one serializer is set as
$ M! F  p" T$ c** transmitter and one serializer as receiver.
, L# m5 h/ W2 A6 W( j*/* U2 a  _  b9 {+ z8 I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
" o; Z% f5 B) e  _; R! E# UMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 a. S5 b  f( |, I, ^2 X' S/ z** Configure the McASP pins : P! {* j9 s( J! n" z5 ^
** Input - Frame Sync, Clock and Serializer Rx
. H6 E( T1 I# F3 W8 j# f5 g: N** Output - Serializer Tx is connected to the input of the codec
, f+ ?" p3 b6 z6 g; e*/
% v/ I- x' ~: F0 ~+ hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 @* V7 x9 X! s0 e3 Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 J# p* J% q: c. q# K' C8 f- E) L
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' e& K( I4 G- Z! N. S8 f% D| MCASP_PIN_ACLKX8 y. V6 z7 F6 H
| MCASP_PIN_AHCLKX
. D' _4 b' f/ r" R1 c: O7 H  Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! Z+ }' m6 ~- k4 t! U/ o- zMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ d) I# J( k6 l5 ~8 O/ ^
| MCASP_TX_CLKFAIL % |- C0 w9 F* y6 G* s, u
| MCASP_TX_SYNCERROR
# ], j, L1 h$ d  F: e| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; l% s# m+ q6 M8 R5 U$ R
| MCASP_RX_CLKFAIL
4 U7 U6 c, X. ]7 S) [1 A( G' q! }/ c| MCASP_RX_SYNCERROR 7 c/ v- l2 X5 \! L( Z( u
| MCASP_RX_OVERRUN);
9 p. p$ l* J  T1 A}
static void I2SDataTxRxActivate(void)0 G& D$ k% H8 [! ?0 o% v1 W% n
{1 o0 e( v" M  b" [
/* Start the clocks */. @  c* ]3 P& k" R6 E7 Q. [2 o
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ ~- W) p$ {8 C$ D, x) ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
& [6 b( ?! d: eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, M* T& b& [# n6 r# L
EDMA3_TRIG_MODE_EVENT);) E# R8 ?, B5 s1 a9 L
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 g+ e, ]) n5 O. H3 o, y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 U% k! V% v& u" ?) x) W1 N
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);! t* j* k/ f9 M
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. ]/ S9 ?) L& C+ z. z  l# K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 f5 Z3 C4 M, h. |0 E) _McASPRxEnable(SOC_MCASP_0_CTRL_REGS);- g+ }8 r4 A. b: C3 d' y
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
; g$ i/ H+ u: _" ^}
3 V# w4 Z  V8 v) N/ ~+ O! }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ O# n; J7 E8 _0 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 21:33 , Processed in 0.040090 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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