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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,; v8 N3 r" w: X' s3 d
input mcasp_ahclkx,8 k6 O- `- S4 ^) a: N6 x- u4 ~2 D
input mcasp_aclkx,
; g( Y+ T' T' Q6 E' }input axr0,
2 h9 ]9 ~1 A8 @
  q, x* E6 L8 X) {1 i' j' n& p* woutput mcasp_afsr,
: H8 z, L% N! S6 Z, x0 n0 doutput mcasp_ahclkr,
3 `/ J% q6 x8 V9 j1 x4 @output mcasp_aclkr,: e& ]" R) ~7 A2 d6 l( ^7 X# ]5 O
output axr1,
* C5 e* I0 k+ R' h8 `
assign mcasp_afsr = mcasp_afsx;
# x5 M* [* [" b+ k7 iassign mcasp_aclkr = mcasp_aclkx;
& n# @6 q+ i$ T2 Q7 aassign mcasp_ahclkr = mcasp_ahclkx;
$ V! p3 Z3 i2 D, B" Oassign axr1 = axr0;

2 O$ O1 \' S% ?* O/ B) M( b+ J. I, Z! Q2 y. a- E5 ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ W  p/ T, J! B) G; X* D6 N* N# \+ H
static void McASPI2SConfigure(void)
5 Q1 v5 d# x/ V! s  b5 I* W  ?{
9 w0 o) o7 H6 J/ B: l. `. S  mMcASPRxReset(SOC_MCASP_0_CTRL_REGS);- J* b% }* K) q: E
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' {  @. e/ X" SMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, ~0 }; `8 C. N, ^7 n& ]McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; [& P1 \$ _7 [' Y8 K" @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% _* }7 R9 y$ F5 j
MCASP_RX_MODE_DMA);) I/ @# V9 t! m& l
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 G. i2 \( n1 y8 j) Z0 TMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */9 C7 m1 r) [/ B, P3 g8 w
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
) D+ k0 Q! \1 z  _, gMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" L% b& Y) R6 `4 pMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 m  A1 M% n9 [& M, S% _% {
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */2 f. g( z, }; o. `) h7 k
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);0 K& U$ ^& c, h2 h4 l; K/ C) M  X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; f! Q) |" |4 q" Q/ R6 L" p
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  w7 F4 H% z0 x/ l4 c5 P0x00, 0xFF);
/* configure the clock for transmitter */5 V* D; q. ?" P, b
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
! H! E2 J6 I! e- c/ nMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! O  S/ i0 r/ a: h9 z# M# m7 E' WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# m- d$ ?0 ]5 d1 x: c
0x00, 0xFF);
! `$ g6 S+ [4 o5 N. l: A  n0 N- q7 V9 ^& c+ P% O
/* Enable synchronization of RX and TX sections */ 8 C8 J; s4 W0 g- S5 V7 j
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */9 ]8 q1 M6 x2 \
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! v, {$ b2 e2 [' V( K' Q% _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. i9 A1 K" F* Z/ y, i0 K0 h+ S6 w; @
** Set the serializers, Currently only one serializer is set as
+ x9 z7 [5 |2 S+ M! g** transmitter and one serializer as receiver.: r$ T$ Z" c9 l+ \, u
*/7 b; H! q7 J$ W1 I' G
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  o: M+ V7 G  X. v1 p, {1 TMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
) A; j6 n# z: v; A" P: S, c** Configure the McASP pins
# _1 t! M+ }* y4 Q1 w8 t( X! W7 V** Input - Frame Sync, Clock and Serializer Rx7 z; n* E7 A# l6 x( f; ]
** Output - Serializer Tx is connected to the input of the codec 0 f$ O, |2 J. W- g7 ]
*/
. u/ v0 K1 ~2 ^: \' p* N% oMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% B! E- O/ l" E3 NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! V' Z+ r& {! Y) U; y4 ^McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( S2 A$ L8 V, o  l1 _7 @| MCASP_PIN_ACLKX/ R- `) x) N& R6 t8 ~6 j
| MCASP_PIN_AHCLKX
9 @/ I: I( C, L) w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) ^) k/ p7 v" f3 A7 i  _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 q9 ?1 I5 X. {$ ?" N| MCASP_TX_CLKFAIL
( v' U  y* Q/ p| MCASP_TX_SYNCERROR$ Q! y- m9 \1 e
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - a$ t, s* T! f3 u
| MCASP_RX_CLKFAIL
0 v* N0 `, y% G, r# z3 K| MCASP_RX_SYNCERROR
! p+ @; ?: I  ^5 T| MCASP_RX_OVERRUN);: `% X) N" h# K$ @; q
}
static void I2SDataTxRxActivate(void)$ G0 |: I$ A2 |3 i
{
4 I' }1 L8 O; p1 M8 B$ p/* Start the clocks */
8 O! }& V; v6 UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 X; t) ^: @  u  _: fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 ?9 B& p; t. e1 c( T( k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; r: P3 D+ F. F+ X
EDMA3_TRIG_MODE_EVENT);
! q3 n4 J" ?1 Y5 H( UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! l+ a; g0 B( [+ e' F- {EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
' I* o+ a1 T- y( `/ D+ CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* ^: ?- u# @/ `McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 B) j* A( p4 c3 H0 Awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- X( I9 K) a7 [3 h# ZMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 a; t3 R1 d2 q6 q) E' E
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% l4 A# z$ K5 r* H$ r}

! L+ k; ^3 h( i. b' V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

8 N' u' n1 W9 J; }8 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-18 15:49 , Processed in 0.041977 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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