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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12207|回复: 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," g# b% J' i$ k
input mcasp_ahclkx,
0 ~2 F9 z* ^$ K& r4 O' g* Vinput mcasp_aclkx,
" R  |4 s! O6 @2 j& E' einput axr0,* \! o! q3 u2 Q3 h# C/ e
# _' }. Y8 D9 }9 z, }+ X% b8 D" ]
output mcasp_afsr,% X9 g9 D$ S% d& x  j1 `
output mcasp_ahclkr,
: p! H2 l& U- {3 ooutput mcasp_aclkr,( r1 U1 B% d! G6 t+ R3 \
output axr1,
+ [, |$ U. A- b! W* Y) B
assign mcasp_afsr = mcasp_afsx;0 ?+ q4 a5 D  E6 k5 ^
assign mcasp_aclkr = mcasp_aclkx;
* A2 e2 e! d  q0 t6 \assign mcasp_ahclkr = mcasp_ahclkx;
+ V: M, F* F4 o, cassign axr1 = axr0;
) S. k; C* |( d/ v6 z0 C1 Q
/ A9 ?+ j) V: m* X, Q$ @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 r& A8 l' p6 V
static void McASPI2SConfigure(void)
0 L/ a5 K! v$ v* N8 U* L{( i/ F/ \1 K3 J; R4 S! t0 H
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ f3 J- W) o. }8 u$ H+ S& SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */% h" v. \, c! W4 Q9 ~  z1 Z1 Z8 G
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/ u7 h! J# }6 `- w$ c1 c+ \- |8 rMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 C! r8 F) ]  k+ |3 L- _4 o' z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( @$ r& ?  @# hMCASP_RX_MODE_DMA);. j! j% d4 s" K: f  f
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 z, B( s* f& `( T; n3 Q; {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 w7 B" k1 L/ r5 H. z% IMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & N* G' S- V) ]+ l; O
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! Q3 J4 I, P# Q) O# S
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, + H6 Z( r. l3 L: Z! F4 d
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! ?3 z+ V/ M* X* H+ Q4 o; ?McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! Q' S# Z8 w- a: ?( lMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 x: X* _6 {6 `) }( t
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ j7 T$ Q1 v$ M2 b: X0x00, 0xFF);
/* configure the clock for transmitter */7 p2 g5 w. W1 P. h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& j- [- q/ P  T  ~+ M7 j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 P/ y8 T: H# @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# C- c  ~/ Z% C& B, d
0x00, 0xFF);
, `8 g0 X# Y8 ^1 o) m# p5 h4 }1 g' z) b
/* Enable synchronization of RX and TX sections */ * c5 _" C+ {5 v& |! _
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
2 r6 o3 h  j" \McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);) `: M( P6 Q; ^% j- \5 M/ K
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  Z0 ~: \- n4 X, ]2 m** Set the serializers, Currently only one serializer is set as7 Z3 f6 m- B+ e, c5 e- m2 [3 `
** transmitter and one serializer as receiver.
- D2 C' F$ n- j; g2 Z) u! d% ^0 Y*/$ e; ]4 j- O! V4 C6 U( z' Z- E. M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: E4 s. j2 Y, mMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 l) V: f; P6 ~  }
** Configure the McASP pins 9 G4 c+ _- f$ r2 M$ }1 J9 {
** Input - Frame Sync, Clock and Serializer Rx
# ~, l; G% X! i1 ^3 j) [** Output - Serializer Tx is connected to the input of the codec
: m$ O8 L, _2 N+ A( T& t# Z*/3 U& Y, @* E( \) Q, r9 z$ P4 d
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 p* i: }# K4 n% c- p, U0 h$ ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: e- N3 A7 Q1 P& z, A( V3 {$ D2 RMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& }2 V% q+ a2 j: i| MCASP_PIN_ACLKX
4 Z3 f; Y$ S7 w' P; r| MCASP_PIN_AHCLKX
- d3 o7 m. X4 B( C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  L' _+ I5 {; WMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- `9 u$ ^5 F' P9 H2 [| MCASP_TX_CLKFAIL
- z! r2 t; F, Q3 ]- A| MCASP_TX_SYNCERROR
* t. p$ g( ^' [0 [| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( D- h6 w% W# J; }( {3 }9 _
| MCASP_RX_CLKFAIL" ]! M7 i" E: X! n+ m. M3 y- M+ g
| MCASP_RX_SYNCERROR
/ q- ?* f! u- K| MCASP_RX_OVERRUN);) a$ v& u( U( P; g) U
}
static void I2SDataTxRxActivate(void)  o% |: s: O' A9 Z5 c  G# X
{
/ I% U9 `# e9 _* {* ^4 W( |4 Z/* Start the clocks */
2 U1 n9 `9 u& }1 t- AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( [/ J0 x  y6 e$ W* w
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */, r, G2 g8 Q- m2 Z5 v  X& k3 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 c. I! F+ ?9 [* W& d8 tEDMA3_TRIG_MODE_EVENT);
3 g+ ~( |( ^) t" wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 j' d, f  A5 q0 w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
# S; i* N( S8 a& f+ V- w% mMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 S8 D1 ^2 \+ v% pMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 b9 c0 x; Q$ i+ B2 H- E5 e- w) M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// o5 s$ T" ]: y( I3 ?% U' V( G
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) Z0 x. _- E+ q$ a
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 o% j1 L; E  w5 P
}
; U/ b. v1 o* `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. ^0 D3 J& x  e/ j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-1 12:14 , Processed in 0.044318 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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