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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,1 |; l( I3 Y* x4 u
input mcasp_ahclkx,* V6 g/ c! O5 T* A; k
input mcasp_aclkx,) D2 u0 v! j- W! ]
input axr0,4 c% _8 A' V' J' {

: n0 B; P) d& D7 X  L' Foutput mcasp_afsr,
: u8 R  f: M- Doutput mcasp_ahclkr,
) t4 i  q; G/ m/ Loutput mcasp_aclkr,
, Q. f; I5 ?  Z- Koutput axr1,/ r1 e, c& m8 |' {" ?6 |, c9 C5 k
assign mcasp_afsr = mcasp_afsx;
' k4 U9 `8 e; |& d! ^assign mcasp_aclkr = mcasp_aclkx;- T9 p+ d5 B" |$ K- I/ b
assign mcasp_ahclkr = mcasp_ahclkx;* i/ F2 S% e; m4 a
assign axr1 = axr0;

! @$ B- b3 z7 u, E0 g; K# j" o8 F4 n: j8 H5 `4 H
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 v3 ?4 J; K# S8 A# c1 M- B
static void McASPI2SConfigure(void)4 _) D$ P9 r! V: p% `$ D0 [* k
{* B' g8 h6 f- p0 v/ s
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ ^5 O( U9 D2 v1 WMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% e& ]9 {, ]9 k" {0 eMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' G7 V- g' b0 kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ v8 S: ?/ J7 q# t5 D
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 C" o! ~/ _% m4 ^6 fMCASP_RX_MODE_DMA);- }# b, q  f$ `) K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' x9 V6 i, X  |) @0 L; n
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  Z! W' T7 O& Q# d. G0 tMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; O4 q& Y: O8 C3 h7 s( T
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. p- f# ^0 f' b; }* ~+ Z( \4 N" _McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! V# P4 C! u4 G0 n" \/ eMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. R4 Y$ c) ?7 x& w% h, C
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 v: W' J+ d" g( x5 D6 h/ ]McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   W9 Y* v/ h7 T0 V) T
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 [9 n( \  O* X7 J
0x00, 0xFF);
/* configure the clock for transmitter */. F* e: F6 t( G
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( H3 y) V7 P3 q2 p! ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 O! c  ]! G9 a7 K: d2 m: v8 iMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' B2 g2 ]( f, r- B0x00, 0xFF);, j0 x1 v! R' f5 w4 i

8 u$ Z+ v, d6 }% w% g1 T/* Enable synchronization of RX and TX sections */
: @% s; n3 C' f: ^% f- c) {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" t% E0 O% K& `# w) u  m( X! J, w, ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: v+ U$ A& {# y# |: S* tMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! _' H# c' F& @4 E  t9 F: _
** Set the serializers, Currently only one serializer is set as2 |& T% ]9 @- b) m
** transmitter and one serializer as receiver.
2 d3 O9 r# t5 F3 v; O- Q*/
+ t6 ]3 D. W8 H- ^0 Y# R- P9 EMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: ?* u3 n0 H' j) Z0 v7 @
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, m" E: T) w2 [** Configure the McASP pins
9 M0 g7 e& d& G8 N9 |  n4 A** Input - Frame Sync, Clock and Serializer Rx
+ r1 q' N  f7 U5 o% c; r** Output - Serializer Tx is connected to the input of the codec 1 u' ^6 t# @. e0 n; h
*/" g$ R9 q, y8 x6 u3 A7 A. w
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 q9 t  E/ t$ _7 \) j$ V8 |" P3 r8 b
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* [  ?2 H( M: t2 n8 z" fMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) T* h% ]" j) H- P! i$ h
| MCASP_PIN_ACLKX* q  ^* S1 |5 b) s
| MCASP_PIN_AHCLKX; _" ^0 i: m! v1 d8 |
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 ^$ L3 w$ s& C* ?6 h/ D7 f
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 z8 p3 |' L6 r0 ^0 N
| MCASP_TX_CLKFAIL & q  H' M3 \& V: u
| MCASP_TX_SYNCERROR& |- O2 O& L9 x7 Y6 B
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: x' V3 _, H* w| MCASP_RX_CLKFAIL+ s. g9 m1 u6 u+ v, Q+ K7 ~
| MCASP_RX_SYNCERROR 8 m5 \% d9 S& x6 h: I- M
| MCASP_RX_OVERRUN);. M$ x2 ^3 w2 H4 j. q6 V; E) S" A7 e
}
static void I2SDataTxRxActivate(void)$ j0 J/ m! T( Z  P( \0 d3 J0 k  s
{+ L9 m3 m* T( j; b* h, V; S
/* Start the clocks */' F, h  @# q: }3 T3 a$ J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 p. u6 m5 T+ ?
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 u* k2 k0 W" }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX," v2 }# [. [5 C1 w
EDMA3_TRIG_MODE_EVENT);
' B( Z/ Q* v; A4 a1 n# rEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% n$ D" F8 U& v" tEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 d! S! Y9 g. {" k* N6 \& }, G, B' NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 Z( {3 C6 x0 `: ]
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 `6 V& x8 m9 U0 l; E! M7 ^( vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# l6 G4 e4 P3 Z* p% Y6 M
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( P/ ]5 ]; ~* ^9 EMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
, {1 O$ O0 K7 B2 l$ s3 ?}

& `& Q" ^+ U  T$ @  q( G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ I2 I# ?  k4 A5 p6 `5 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-5 02:44 , Processed in 0.043479 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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