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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11833|回复: 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,
/ j) z. j( |: @$ P- Kinput mcasp_ahclkx,9 K% }6 }& F; U1 p" b
input mcasp_aclkx,
$ u& t3 R; U% l3 Uinput axr0,
! s8 V( `$ ?2 U6 }9 y
: C- H, v3 ^; v% x- ^+ o3 Y9 Qoutput mcasp_afsr,
2 N: ^% y+ F5 E% Loutput mcasp_ahclkr,
, C. ]* g! K+ T" F2 uoutput mcasp_aclkr,
7 `3 @/ w% I" s6 V8 voutput axr1,
; H# p0 F% e2 P) q# P! {
assign mcasp_afsr = mcasp_afsx;
: f' k5 N' T$ ]) v2 ?, O- V* `% q1 wassign mcasp_aclkr = mcasp_aclkx;0 B# Y1 }- M: @4 W5 S$ E
assign mcasp_ahclkr = mcasp_ahclkx;# W' V, [+ I% t% D$ c; R2 a& E
assign axr1 = axr0;

/ g  O; @  F1 C" K
# i! {7 X+ \; s( W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
( X" u. h8 h" N
static void McASPI2SConfigure(void)
! z3 J  x" s7 W( a( K9 o0 P{$ Z7 W& x2 E% `! `% D2 e4 E
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  A3 z' E: B# JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% q/ T/ L8 k, H0 s# I% E
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) h$ [6 P: U9 @8 n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 l' o* j- T7 x1 M. P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 p3 ~: S% H. T( n, c# Q; `0 lMCASP_RX_MODE_DMA);
" x4 ^* {: O) A3 V7 @# fMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# K* h1 [: |8 K5 O* V- O5 j3 ~& C4 ]MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 |; |  l7 H9 a- T. t: Q/ D3 J3 E* J6 zMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " k' v# A& m8 }% f
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  g  t. \8 s# I- R
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* D# {$ `+ r% s6 Q2 I. I" KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) _0 b* q9 U9 h% }+ S6 [$ `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: {+ J1 J3 E& p4 O4 H2 LMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 l0 j3 t1 k4 w0 gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ o9 m( }) K: N# A5 I$ |0x00, 0xFF);
/* configure the clock for transmitter */
% o3 z' B1 v8 ^5 u. U- ~, LMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( @' a8 ]% z+ h) m6 ^: `9 b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: c; u" I* L* T# Z. ^/ ~' ?5 {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 `; _, P: b& _5 K0x00, 0xFF);, P) w, m9 A1 c+ l: D; B/ H  C

6 J8 o6 X2 u* P& `! W3 ]% K0 C/* Enable synchronization of RX and TX sections */
- Q+ ~0 @* `% P) U% _- }5 r1 a2 EMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" [& r2 D( h. }McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# U4 f) }( N& t; K2 Y5 X; VMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
/ V( c. A1 |) m/ `. X5 N** Set the serializers, Currently only one serializer is set as
' N, t: K6 c5 W- t9 N# _** transmitter and one serializer as receiver.# k' ]( b( t. R' u: u
*/) p% r' Q2 R, x
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ h6 H' N/ Z: H6 B
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) N6 g  v6 J6 V
** Configure the McASP pins ! T. M7 e8 ?: f% ^: z: V
** Input - Frame Sync, Clock and Serializer Rx
$ b5 A4 L: u8 n+ D5 S** Output - Serializer Tx is connected to the input of the codec + U0 p% o5 c% n5 n
*/2 q9 d+ G0 L: J# W) y! i# h
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);  X* `5 _" c3 j  b/ w
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* y8 T  R% Q9 J' `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; R: i1 v' j- m| MCASP_PIN_ACLKX
4 J; q) {0 Y2 U/ Z# K# i+ M| MCASP_PIN_AHCLKX* c& S' i5 H( N
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% u+ w2 d# l; c, K. e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  t3 B: R  ~+ |3 Q% W6 C, f| MCASP_TX_CLKFAIL 0 C/ j+ {0 }1 Q, u
| MCASP_TX_SYNCERROR
* G  s9 l4 c5 g9 ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, X& c$ M) I9 p7 j# l5 T| MCASP_RX_CLKFAIL+ M# v# M% y4 @
| MCASP_RX_SYNCERROR ; Y- m" {* [5 y! ?  U+ E
| MCASP_RX_OVERRUN);& X" Z) g: x$ g9 m
}
static void I2SDataTxRxActivate(void)
  V5 y5 h2 g* N* [! P{# b* g7 u& ^1 D1 O1 @5 ?0 _1 Y6 T
/* Start the clocks */
! v! p% M6 M( x* X8 A9 O% QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 d2 M0 _/ z+ A. Z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' g' E6 i* M, o" Z6 EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 I3 C7 N$ m9 c
EDMA3_TRIG_MODE_EVENT);. O' q9 S2 f$ R! O3 E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
9 R6 h) \" b! h- g* `" a$ YEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% n+ v" V* {2 U4 C$ d
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 {6 K+ }) i& w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
$ \$ o; ^) c7 ]2 V3 o9 r; q, Cwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 A; l' p/ z: E$ f- X; C) gMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);3 L8 Y8 j- v1 G+ ^
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
7 R! p$ ~1 v9 l}

- T* n" j6 m! R- \8 K) j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 S4 q$ W/ l4 B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 21:58 , Processed in 0.040701 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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