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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9566|回复: 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,
# ^/ k; Y$ `" G( Finput mcasp_ahclkx,
% m+ L. \# J2 Jinput mcasp_aclkx,
8 Q$ J% k7 `6 l5 l( }% |- vinput axr0,
9 e& i- W2 B+ i/ \! |# `
+ T, _1 T: r+ V# `% B- C$ M4 @9 Uoutput mcasp_afsr,% u) B  @* W: V! I% z
output mcasp_ahclkr,$ M' e8 w8 p- H! G. p& I, M$ G
output mcasp_aclkr,  v! g" x, A; R, Y' o) i
output axr1,4 M) F- V6 O1 S& e
assign mcasp_afsr = mcasp_afsx;" F1 ]# |+ P: Q7 N0 M) Q
assign mcasp_aclkr = mcasp_aclkx;
  C, j' P+ L7 M0 f0 H0 Zassign mcasp_ahclkr = mcasp_ahclkx;- N$ \- W* o* d# U& M# k
assign axr1 = axr0;
) h2 o( x6 H; v
; `* D! \+ `& W1 J6 z; i9 o: d* [& W
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 L+ m0 l# Z9 p% P: z
static void McASPI2SConfigure(void)
. s" F: P! q4 g, ?2 J2 N5 X{
! _+ P- R8 T% D( s% [+ {McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ F) [* N& l- J: F2 c0 j
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& m) T4 n* e% u  O- a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! R  j# e/ ~' L! D- o2 _8 SMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! C* b, l3 \+ u9 W( o4 ]+ gMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 X( |, v  i& G9 o% L/ E6 g
MCASP_RX_MODE_DMA);
% y, ^. [/ h7 W: u1 I) T, P" tMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( z/ W, J# w- x! C' j; aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ F& ~/ y% I  U  l0 y( }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 e' }6 z. R6 H7 @  K' KMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 k" J) l* [1 i5 l# u/ A
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / k7 B4 g( a* j+ M, [9 v5 r6 A
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */- x. t" F% e' j: `" V7 o# S" V: D
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) Y, b% @4 p- _$ YMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 e  R) u9 w' q6 \: |1 D7 A% |3 {) c
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," L- D4 O7 m! R4 ]
0x00, 0xFF);
/* configure the clock for transmitter */: i( m% A1 U8 \$ A1 H! ]: l
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ @  B8 z+ M2 r
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 \' O/ F% _% F1 k) FMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ a4 w5 C# k: `8 B7 ]/ a
0x00, 0xFF);1 T' T$ ~3 L( q- p0 b

* c; d2 J9 n8 g/* Enable synchronization of RX and TX sections */ $ Q" x1 ^# z& {( i2 S3 v2 h
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& J4 @' p9 \0 j, b/ k4 b+ e0 fMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' V5 c, e! J- D* E+ p1 LMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 f. m- b5 g' v' a% f9 [** Set the serializers, Currently only one serializer is set as
5 z4 j+ P8 X0 F; s# v2 t5 T** transmitter and one serializer as receiver.
/ q+ Y/ [* G" T# g- u*/
, j- Y+ W, J, V8 [$ T/ K5 r/ DMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
( ?2 i6 P% D8 k+ N3 HMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& O4 _+ C& R& ]& I( _** Configure the McASP pins
" \1 ?' H( F$ U9 w/ d  T( b** Input - Frame Sync, Clock and Serializer Rx8 x! ~7 }8 s7 S$ p& {
** Output - Serializer Tx is connected to the input of the codec 9 a$ t' A' x6 M3 @
*/: K& y( S# P1 E9 c) K
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& T. b, B1 t1 {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! ~* w6 |. n5 a9 m: AMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX2 q; f; S& B6 L2 B
| MCASP_PIN_ACLKX
  `: I4 @3 e& f4 p) a| MCASP_PIN_AHCLKX
3 U0 d5 U2 ?9 T| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' i: {6 c& r" P1 CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + b6 t( Q0 u: E9 p3 g9 O
| MCASP_TX_CLKFAIL 2 v" k- W$ ?; @0 b+ s$ c
| MCASP_TX_SYNCERROR
8 T  F4 d0 D. W" A2 D| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% p. d2 ^0 Q4 f  G| MCASP_RX_CLKFAIL9 H8 W3 F% _' P8 c; m% E/ o$ Y
| MCASP_RX_SYNCERROR % e1 o( Y3 ]) R9 ]
| MCASP_RX_OVERRUN);( n0 S- t# g' \6 u
}
static void I2SDataTxRxActivate(void): R* L* C' V1 z. r( }) T' ]- M2 Q
{
6 O% |$ S" @- b: l* l/* Start the clocks */
4 f9 o9 k0 y1 _) L+ q, M6 Q1 M( T* nMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' o: L$ Q% {9 W$ ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 X& `& D" Z# @9 T* k/ n$ N+ y% PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) O2 Y: ^) S: X8 ]+ t2 [
EDMA3_TRIG_MODE_EVENT);
1 x2 x! N4 `) [, |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 r  g$ M1 A5 IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 E4 ~. i% X9 d$ D+ A4 f' _
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& t2 b" _  `* ]; U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) u! y: O  C. |5 r  }
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' O; Q3 `: W; N. L. H" DMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);. A1 _2 X2 B" p+ w
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);' L9 y7 D1 `# Q% p* K8 Y
}

6 c6 k) p' v4 N. K8 F5 X0 `  P( }
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 d- r3 X4 H: c2 z/ h# `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-14 00:32 , Processed in 0.040509 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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