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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
: L& x6 q; b$ k2 J1 J3 L0 B- j6 ]$ z* [- Hinput mcasp_ahclkx,
, \. C' C* q5 z! p" M$ `9 qinput mcasp_aclkx,
: Z/ Z2 J/ T2 h& ~input axr0,
6 ]% }6 N. M/ Y5 a1 `/ Q9 ?
4 I( N2 ]" q- A4 Loutput mcasp_afsr,
6 @7 ]4 c8 p$ J& G6 soutput mcasp_ahclkr,0 e" U4 y* V) l7 k+ E
output mcasp_aclkr,5 H9 W: X/ |9 T. R2 P) E
output axr1,
! v, m, \- Z1 a7 @! w5 c
assign mcasp_afsr = mcasp_afsx;% B) T3 d, O' F  L# M. B' M& T4 n
assign mcasp_aclkr = mcasp_aclkx;% ]+ x8 R5 s6 g
assign mcasp_ahclkr = mcasp_ahclkx;+ r1 x/ @6 z  c; J" _
assign axr1 = axr0;
8 p2 C! R# ?! g+ h2 j

6 d2 Z; j" j% W" B+ B4 a0 h( Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 F# ?4 e  n! j2 `
static void McASPI2SConfigure(void)+ _* K9 j' m8 p$ E9 z- g
{
. g5 a! M) e  k: p/ r* X! x4 GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 `1 J/ w3 X" o9 S) r$ _# s+ E. a
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, z* P0 v+ b! b7 h, W; W5 d
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% z* h, _* }% k% ^McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 N: u9 }3 O! ?) n: MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 Q/ I  b9 n9 d6 i5 {MCASP_RX_MODE_DMA);/ S$ m6 N! l# @8 K
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! D/ f# e4 _4 \3 {, U( uMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" B  _5 \) l1 f' C7 @  ^% eMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' d1 S$ n1 a. \/ K$ p
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* X! W+ m  j/ ]' a+ p
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 d0 O4 S9 z( Z, n! f& }! }MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( n0 d+ Z: c! {' ^9 B5 X/ u( G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 L5 l; ?" y; j' G4 V8 oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " e  V3 g1 j1 v5 H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ N, W/ D- j& {  b4 S, ~( @0x00, 0xFF);
/* configure the clock for transmitter */
  {, ]6 [" P0 n5 u; PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' F3 ]: ~. p5 _: ?6 H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( D% P* g# U7 mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. F$ r2 ?: L& [+ T& f# U9 I$ }2 x9 k0x00, 0xFF);
" G* M; G- e9 x$ A: h  G9 j: P: v) [2 O) S$ Q
/* Enable synchronization of RX and TX sections */ ( {! A' `7 R' P
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 S- l5 Y1 [8 H' g# K7 R+ CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 N) I% a8 A' Y8 r2 |McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 x# J% ?1 D5 D. N) j3 o* t" x
** Set the serializers, Currently only one serializer is set as
. l9 n+ H$ x2 b* u( O** transmitter and one serializer as receiver.9 k# ]4 D, h2 c( u2 q
*/3 R3 S! Y3 x7 f
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) ?, l5 K- p+ y7 e- k
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 n7 I+ a: a  g% }& Y" R, w** Configure the McASP pins
, s" L; z8 |" D8 e** Input - Frame Sync, Clock and Serializer Rx  i, Y$ X. U0 C( f6 \
** Output - Serializer Tx is connected to the input of the codec ( q1 z2 o4 q/ M7 v: t
*/  e* H, W3 d" r. M1 a; _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ x3 D" ]: Y( u( m7 P/ t4 b
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
- }4 p' t) c- L( PMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# F! V, B/ u4 P4 j. g| MCASP_PIN_ACLKX
  J" }* B4 Q% \" I  {| MCASP_PIN_AHCLKX/ x0 c- q* E2 N, Y2 \9 a3 ?
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. f. q0 ?, J) x1 h  N  aMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / C0 P2 i8 z* g. C: B
| MCASP_TX_CLKFAIL 1 }. @+ B1 C6 B8 L- j* ?+ D- L* R
| MCASP_TX_SYNCERROR, |  N9 ~: Z2 h
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 @8 Y. u, \$ X- B4 a
| MCASP_RX_CLKFAIL
5 n7 R5 |5 ~% V  i0 C| MCASP_RX_SYNCERROR 1 m6 h2 [7 v9 ?, B1 h( [
| MCASP_RX_OVERRUN);
9 {, K. Y, }* K5 Z  N0 u}
static void I2SDataTxRxActivate(void)$ o. Q+ w0 [( I1 I/ |) g3 }
{
2 z6 v% g0 F9 D/* Start the clocks *// F6 m/ @0 \4 X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);$ S5 P2 ]5 Z  H3 ^, b+ e
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! O% n0 c$ {' U: z% @* `1 p. QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- {* X0 {6 ?) s4 @. NEDMA3_TRIG_MODE_EVENT);/ u4 h* k- F( Z  y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: o. W3 [% n: P" A! n6 rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% q. i( \* A; w" [$ f- ^McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" m7 u3 h) b' _1 n$ n7 v
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( Q2 e5 |+ [6 q+ `, [; b
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 X# }: U- u, ?# J" \McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& ^3 Y. \7 X! B6 r% i# n- M8 C
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* P2 r  P1 x- W0 l) z}
9 C" r" L/ O  _# Q( ]% x! F! I  g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 t* u2 P0 B7 ^5 ?5 s0 {2 {; b. q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-29 20:39 , Processed in 0.036738 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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