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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9051|回复: 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,
+ N$ G* }3 W$ J: Qinput mcasp_ahclkx,
( O) T9 X* v# finput mcasp_aclkx,( @4 H4 t4 T9 m- X% W
input axr0,
/ Q0 z3 Z# E( [5 b
6 R5 Q* ^: a3 R! R+ s+ E, O5 toutput mcasp_afsr,
% Z3 i; y( @0 V: M1 Youtput mcasp_ahclkr,5 ]: j9 n) A7 G/ @. J
output mcasp_aclkr,
0 ~4 {7 z" j+ m1 |% b" u  Qoutput axr1,
( w+ V8 y4 `/ L7 L2 t+ {
assign mcasp_afsr = mcasp_afsx;  s6 }) ^& Q) p+ D
assign mcasp_aclkr = mcasp_aclkx;
6 P8 s9 j7 U% \, w3 h/ M; wassign mcasp_ahclkr = mcasp_ahclkx;
# `( t  b2 U. ~% S/ Q( D' fassign axr1 = axr0;
' T  S7 W% @: I0 @/ s% @8 ?
. I0 j# _$ T! `. g! u$ l* n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 ?7 S2 U. e* f) C3 U) J7 O- O# g
static void McASPI2SConfigure(void)' [7 }, C# L+ v
{
7 ?" F. l9 H1 F1 x; |  TMcASPRxReset(SOC_MCASP_0_CTRL_REGS);2 U+ v1 M( q! R6 T, d4 f
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ i% [) R% V- P3 p  ?: ~* ^
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; ]8 Z# X' i: rMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */' T' w" [+ Z5 g0 v3 _2 d8 T5 l6 j
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! g# U. M& l9 q3 HMCASP_RX_MODE_DMA);; T, n* Y, J2 ?8 ~
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 r' e7 g7 M  f/ O& t' V+ B2 ?MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ [2 f- A* z& p( T' YMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " F9 h. O% d. d0 z! C
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ S: k0 I* e. W$ n5 Y* w' r) \McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& w7 ?$ c' }  Q# y, ~1 p/ r0 bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% l5 r$ Z8 k" K" [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  z2 u+ A) o0 D, r, B3 h) }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! D2 W+ E+ X6 I/ kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. t: V7 c/ U# y" k  j0x00, 0xFF);
/* configure the clock for transmitter */
3 C0 e7 i$ ]- O/ M, N# x: sMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  m( q  V/ S" Q- O' t- R- d7 x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 t2 W) A3 M. ~5 m# w# l: O" |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% b- a; ?# ^* D# `* a7 t
0x00, 0xFF);
; o9 Z. `9 }, H3 ^& X8 [: E8 [
+ X$ p  m: A# O. k" x9 J/* Enable synchronization of RX and TX sections */ / Q9 R4 L; ?: J* m+ v2 }. x$ N% D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */# t! K! s/ e( n/ G6 u, Y9 f" p8 n9 a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
7 F# Q# d0 U  ?# s: nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 d  m1 b$ m  m! V9 E* ^& \
** Set the serializers, Currently only one serializer is set as
# U' e1 y( v' y1 e# A9 s! u** transmitter and one serializer as receiver.
5 l0 g1 F: v) h# C7 ^: n*/" E  M. C: `4 j" G' p( H
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
' m9 I( m' W5 j; t$ x& U9 P* I" hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
5 j7 a0 r7 n4 [9 b# i** Configure the McASP pins " Y, m+ I/ P# J' b( S) i) ?
** Input - Frame Sync, Clock and Serializer Rx. M& P7 |- j6 l: [4 k; t# V
** Output - Serializer Tx is connected to the input of the codec 2 f8 h+ K5 k1 e, x. O
*/
" i/ {1 }2 a( R5 E3 n5 s6 wMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( m! J0 d, Z) D. ]2 S
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 |, S* G% j" x$ f2 z- m4 GMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 c+ W( P) c$ o: M1 X# M0 s
| MCASP_PIN_ACLKX9 X( G1 j: I$ u2 O. Y# P
| MCASP_PIN_AHCLKX
2 f" S" n5 Z% D% B| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */5 l; [/ a7 q- R, k
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 i9 U, M- y5 N9 y7 T- f
| MCASP_TX_CLKFAIL
. a$ ^# I4 P8 `; n, x! ~' Y+ g| MCASP_TX_SYNCERROR
. a: S' R4 Y* K1 A: V0 x' x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & k; C; J4 b/ E; `, [" I* V5 t- G
| MCASP_RX_CLKFAIL4 B% t% |+ c5 ]+ S  p' r7 w4 y1 x
| MCASP_RX_SYNCERROR $ B5 r% y* S3 o% ]. ]5 l. d; z: e
| MCASP_RX_OVERRUN);; ]" m. p0 ?7 V2 N! Q
}
static void I2SDataTxRxActivate(void)
$ J, j! s; u+ H{
! R9 ^6 S. t8 g3 l$ ?9 v/* Start the clocks */8 ]( D2 t  d2 u% i
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- i4 B7 T& X5 M5 f; r( B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
: T' F9 t' _6 J) Z( M" c3 M3 CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! |- ~; S4 F* a0 L) w. J. l; zEDMA3_TRIG_MODE_EVENT);4 P8 l! q6 R5 n- [( `$ a% H
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
% I% T$ g3 a8 u/ D8 PEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, _9 T1 H" j* gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 ~& U6 V4 {) BMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 A3 F1 _5 S3 K# Fwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, g: r4 x9 j) Y0 `/ L7 L* AMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( F+ _, ?" g4 i, XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% D/ F. G% T8 i. x$ u- z, Q: U}

) j  ^9 I' a- n& L2 s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ U, P; l4 u. `) W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-15 05:40 , Processed in 0.036410 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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