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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 D- t5 ~: @$ r, ^input mcasp_ahclkx,
4 b9 V2 P$ t" H0 Iinput mcasp_aclkx,
, Z+ D4 Q( u, n1 N' F# \% o2 finput axr0,
+ E. r5 t8 Q* c$ t( u- s9 Y4 K' c% \  m
output mcasp_afsr,
" d8 z. z0 X- H4 @& Moutput mcasp_ahclkr,) Q5 S2 `- v0 r7 \4 R/ t( M
output mcasp_aclkr,# L9 M( v# \3 J& I6 p& f. e
output axr1,
' @  L/ L- z+ z8 s' B5 p! `1 O
assign mcasp_afsr = mcasp_afsx;
8 [% O0 A+ w# vassign mcasp_aclkr = mcasp_aclkx;  s; Z6 a/ R; A8 P2 a8 i. e6 _1 o0 R" \) G
assign mcasp_ahclkr = mcasp_ahclkx;
1 O: ?- \8 ?* ]7 q& S$ ?4 lassign axr1 = axr0;
1 Z5 I$ ?4 S$ ~% w3 j9 x6 }
, e) H: m* B4 Z, S% \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) }4 _; T9 Q( `6 _- u4 E
static void McASPI2SConfigure(void)3 L3 s) [/ j9 m; @
{2 b. i  g$ t. }0 D: X/ {  R
McASPRxReset(SOC_MCASP_0_CTRL_REGS);* c( [# h; b! Y7 v; W7 m  ]
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' N6 \( l9 a0 i; `0 p
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; V2 v/ K# E5 M, TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */4 T8 D' l. O# A) l
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 X) x9 H1 L; W4 kMCASP_RX_MODE_DMA);
: ^  n7 G9 v8 {* a% g; aMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) J- O5 C( l( z& d% Z* d, T2 i* GMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */+ h" T, G8 b/ R" s; U# N
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 ^, c' y) c1 I3 [MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! B5 ~. ~* Q# u+ n( P
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
( E2 M* z1 V6 ]" H3 M) x% `MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 i' d7 v4 H0 f& D8 f
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* g5 j) i6 `  o* ?: @$ M  ^McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   x7 }1 o( U' a
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 b) [+ L! J1 S3 d5 y
0x00, 0xFF);
/* configure the clock for transmitter */
+ ^* u, x* j' e% ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 g6 Y. V$ R8 Y! V7 H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 X8 n7 C& a% Q% }( t) }
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 v6 ^+ H* W8 V5 u$ ?! i0x00, 0xFF);
( p4 p! V$ q5 A& y! L, g+ o7 U0 s) e3 ~4 X. _# X% R
/* Enable synchronization of RX and TX sections */
& j4 V" a' x. ^& W# zMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& M0 p- [5 y3 [" \* X+ t: y
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ M- @" ^- O5 p5 d
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% r  R: {' b1 S& J
** Set the serializers, Currently only one serializer is set as
" P: D  X% l  M( n* \8 V3 h9 G- y** transmitter and one serializer as receiver.
! A2 |9 c' m4 r$ _) g) d6 z7 p% E*/
0 E# ]# o8 Q4 vMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) j: s/ [, R& Q: ~* hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
; n: o: D& a/ R3 ]** Configure the McASP pins 0 g0 `8 [: \) T0 T9 Q9 k2 b7 ]
** Input - Frame Sync, Clock and Serializer Rx# V8 X, }6 A  i2 f2 _5 e
** Output - Serializer Tx is connected to the input of the codec 9 l& X$ y, V& r8 g3 D3 Q, ~! s* `
*/, X, ^9 z: T0 t- A: K
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
* f  C2 p2 K( iMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 o: X( l/ e! L7 ^! ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 s- g# x; O3 e1 Y' P' q- B| MCASP_PIN_ACLKX
3 W! g# V1 j1 K  D  R. Z7 Q8 c5 t| MCASP_PIN_AHCLKX
8 k# k4 w$ f) a| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* ^: l4 d/ i3 I4 a8 j1 {5 l2 w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 0 ~# G$ o# U' g9 c& N5 t8 z
| MCASP_TX_CLKFAIL
$ D& d8 Y* S/ B4 B9 R6 x| MCASP_TX_SYNCERROR& N  A' F. M3 h: ~0 C8 S
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : S$ H- p6 k4 s
| MCASP_RX_CLKFAIL
- W9 _$ E4 A: n! f% @| MCASP_RX_SYNCERROR
* V* s2 z( n  x( r) a9 M" ~0 B| MCASP_RX_OVERRUN);9 T+ Z# U% F- }* G; A0 h" l0 ^" J+ ]/ e
}
static void I2SDataTxRxActivate(void)6 @6 e: c1 }+ J7 P
{
* j+ N, ^% }. \4 N/* Start the clocks */6 Y5 w0 v* u  z" R1 V; s3 q9 Y- b0 }
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' f# ?6 O8 H5 ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  I% M( n& x8 d9 T7 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( ?" N6 H" X/ f/ L# C. iEDMA3_TRIG_MODE_EVENT);
1 U/ F) a0 g+ {8 j, R2 i+ JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% y* z! e$ K% H- r$ ~5 ?/ gEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% W! l8 W7 M+ ?+ D+ c5 }$ y- G- ~
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
" C3 ?* W5 f& F/ q) w5 @: HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 x( s2 h8 p: P/ x" N- `while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 `7 F4 }1 L8 o; G" y8 K- |5 E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& d6 [* V2 G/ ?* X* nMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
$ h) W" b4 \3 k" d}

' l6 r4 |0 ^; ~# b, h* i
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
9 P9 B# M9 G% r2 z! _% \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 18:57 , Processed in 0.045124 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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