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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9363|回复: 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,
; ?) w' k( p3 e2 Q1 xinput mcasp_ahclkx," X: F3 B( ~- ~" d9 x
input mcasp_aclkx,6 \% {0 ]0 B9 p2 M2 p
input axr0,0 J1 {# D5 q; L4 o4 D9 ~5 H
( \- M2 Z  S5 c$ d7 @! U# ^' r2 U( ]  c
output mcasp_afsr,0 T5 e: r" c( x
output mcasp_ahclkr,, d2 D8 @. d! H' G. p
output mcasp_aclkr,
4 h- T$ o$ Q+ Doutput axr1,2 D. P9 n$ ?: ?- [- ^# {
assign mcasp_afsr = mcasp_afsx;8 a6 V' K3 }  o. b. e
assign mcasp_aclkr = mcasp_aclkx;
( j' B, e: F4 c$ r5 k; n. cassign mcasp_ahclkr = mcasp_ahclkx;
5 P$ |/ V2 w1 o6 [assign axr1 = axr0;
7 [' W6 Z* A, a; U2 J% b* \
+ H3 t% S7 M+ N7 B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 v. l% t7 B' R$ k
static void McASPI2SConfigure(void)- {6 l" S* L4 s, o" y
{
. \! c- H/ F! r+ \8 [9 [7 V( W+ }McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ p9 J' D: b2 Z% A: w$ t: t
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 L. c8 m5 E  k, C/ f  D4 y9 `
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. }) M8 i' a9 O$ Z- w6 |
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& o. N  r. D* i' w, I3 l% o# ]
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. {* M6 _* w, r# g8 w
MCASP_RX_MODE_DMA);
9 I: B; E. _6 q4 NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ T( J& t, p* I) MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" Q' M2 _" n/ V$ m# F
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: F+ W1 w3 Z6 V( R" \5 U; [' ~, cMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! M' u. u, G; C1 q7 s" ~McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. ^; i8 d- m% eMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, g9 H$ n9 k% ~McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 Z: l1 g5 W9 ^9 C9 o" ~% ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 Y. u0 R, L# ?( f) x
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' p) t( ?* Y/ x! b5 M6 t
0x00, 0xFF);
/* configure the clock for transmitter */
% h9 D3 Z- L+ x6 Z/ C, G+ n0 xMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  Q  S4 W! [4 F9 c1 N+ aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 M' G. h  G! Q  z+ Y7 G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# f) t" A. `% ^! I* f  R. S' H0x00, 0xFF);- n: c* |: o- [9 j$ p; }
8 O: w! Z+ ^2 C4 \+ ~
/* Enable synchronization of RX and TX sections */ , ^- h$ a4 V# `' Y2 b& `" [8 K* a1 ~
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */* L3 O- w. Q+ c! a3 f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
& y. d0 |) y% X6 L2 ?, nMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 i4 R( q& O" ?2 ^* [- V** Set the serializers, Currently only one serializer is set as! c4 [4 c0 a. ^" }' i9 q8 Y8 L9 W
** transmitter and one serializer as receiver.
# R: B' }' K; O/ {2 S( c* J*/, f. v& ~: [2 ^" X$ e& j" A
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
" `5 F1 Y& k& d0 q) J/ KMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*% j  a7 E- e0 @: t- \
** Configure the McASP pins
6 u+ e7 g  _( m8 V, e' w* r5 b** Input - Frame Sync, Clock and Serializer Rx
1 R0 i3 i/ V, f7 u' Q  s( X, n** Output - Serializer Tx is connected to the input of the codec
4 O; E2 `: q1 j5 t7 ?4 \*/
5 P$ x  A' F. k$ }) dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 i4 D' U, W) r9 A  H6 eMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& r& `, ?. U# @/ k: dMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 ]% c# d* Y4 C' C; T% T2 r( z& ^
| MCASP_PIN_ACLKX4 Q: o& P! K" k1 G% ^0 X/ b
| MCASP_PIN_AHCLKX
0 X' ]  C' D3 o7 A9 X| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */8 j' i: h# _& D5 u
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ K6 ~! b9 P. g1 K6 M4 g| MCASP_TX_CLKFAIL # `0 P9 H) d. \; l! t8 ]5 ~! E, E
| MCASP_TX_SYNCERROR3 J% ^" N2 j, p7 q1 D: m- \
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 [' w/ @( I7 X6 k  i1 e
| MCASP_RX_CLKFAIL. e6 t8 \1 S1 {) M! x' o+ w( @/ u+ A
| MCASP_RX_SYNCERROR , o: P' H3 S! r* Z: y
| MCASP_RX_OVERRUN);! l3 y0 H( g! x' w* j: Q+ i9 H+ I' ]
}
static void I2SDataTxRxActivate(void)
. D# N9 Y* U5 g4 ]% F. b{# f1 S9 y* q9 I; e! n8 b
/* Start the clocks */, f7 P1 {4 D( G; r6 B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) z  D, `. o2 n: N% \5 C( ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% E9 T2 }$ s0 L6 K6 i7 x% CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ Z  m7 g3 G  s8 TEDMA3_TRIG_MODE_EVENT);
6 T0 n) E3 f3 Q3 B3 XEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& H. K# R6 A) l. U9 G5 w. OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& [/ V9 h" P  R+ k( _; d8 w4 ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% }# W5 O( Q5 \9 W/ ?' n. E6 ]McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// M: t- k& E" G: n' x4 q' b
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 b% `$ V' f2 _2 IMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 j# Q1 S. }1 p& w( U* vMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. r: G) {. n% L' d% Z; h  I# Y4 j% R}

" x% I$ d: V" Y; V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 V) a6 j. t& U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-5 09:35 , Processed in 0.036308 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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