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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9295|回复: 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,
' o7 Y6 ?9 ^& Cinput mcasp_ahclkx,! {9 H) J% j) r' r& e. U
input mcasp_aclkx,- t5 N, V5 y9 c% E; b9 x. @& b
input axr0,6 t6 v  |$ q0 N  n# F
1 k3 s. N: g( @  C0 y
output mcasp_afsr,$ g; z  y. S+ H4 F* `
output mcasp_ahclkr,+ E& P" h& Y0 ?2 M
output mcasp_aclkr," ?6 i5 o! ~. i+ i+ f9 ]* t+ _2 j
output axr1,2 A+ l* F. x0 n$ T( t
assign mcasp_afsr = mcasp_afsx;
. v: z6 e- E' N7 F$ t2 d# Cassign mcasp_aclkr = mcasp_aclkx;2 Q/ C& y/ Z: L! k0 @3 ^6 `; L
assign mcasp_ahclkr = mcasp_ahclkx;
+ J+ D- m( P8 S- t' T6 n% Nassign axr1 = axr0;
) v. c6 A1 E  m1 a; l/ C1 E
' w. S  K% H2 {
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
% N) }2 J# a# t0 ?% Y0 J- b# D( d
static void McASPI2SConfigure(void)9 `1 v- v9 h. d; V% y
{
3 P3 g6 V6 _6 ]! u& h+ P, h2 X9 FMcASPRxReset(SOC_MCASP_0_CTRL_REGS);3 \: F7 K9 d) E' T( y3 H  d0 Y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 l( Y( E% I9 ]3 R, E9 r7 Y9 \$ s: l- K
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 v, a7 o: o& D  ^3 HMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
$ C- R3 N8 D( D5 M5 b. z: h7 j7 x% YMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 h0 A) s1 y3 o# H. G
MCASP_RX_MODE_DMA);. ]- Y3 r! A, D8 F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. m) h$ U" S) \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' k2 F; D4 a0 @) |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) C0 p( e7 c/ f4 ~6 Q5 Q) |
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ n! _. j1 J2 ~& P8 vMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! H$ }. Q7 B, d; J' ]8 W5 zMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */; |$ D) d$ T' L5 A# W' `$ _$ T2 a
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ U) g! p& C4 h
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% N# _) I& x& ^  w- FMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( N( {: }$ b- o
0x00, 0xFF);
/* configure the clock for transmitter */% W& N4 `9 r. i. p
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 v1 }9 I2 T$ Q+ ~4 p8 GMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. {- H7 d! W" U8 Z$ Z: vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 I* p3 ~1 v0 v! g, E
0x00, 0xFF);& ]  w4 `6 s- Y( s7 u

8 M! m- h* ^2 i: d2 G: q0 G/* Enable synchronization of RX and TX sections */ * _7 j7 r$ f5 U& x; m
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 a+ Y5 R4 m, {+ T$ t. T
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; r9 B* j0 U. ?3 I
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 J3 o5 [. m/ p; A9 b( W** Set the serializers, Currently only one serializer is set as3 k/ I. P! Q6 E1 \
** transmitter and one serializer as receiver.
+ U. Q0 y0 ]* j0 [  B2 F4 z*/
" [/ j3 ^7 x: E, n8 t: S4 h6 BMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. u8 K- e% E9 G. s& QMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ R% x4 i1 `+ @. x2 J** Configure the McASP pins % H* H- q9 S6 b7 P6 @
** Input - Frame Sync, Clock and Serializer Rx
  r& z% D0 M8 A  `+ s/ D** Output - Serializer Tx is connected to the input of the codec
; e/ |2 x) U1 M9 T*/- E) ?  t) _' d: m
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 ~  i5 Y. I/ K* ~McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));# @. h$ [7 ~# o. J0 d  l. W
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ r  e# a4 q- g* M4 c6 t  a
| MCASP_PIN_ACLKX
! S; o' g+ P4 ?* G) W) J/ R; E* y| MCASP_PIN_AHCLKX
4 c. \* P) J) e  P| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( `( Q% m% `, b
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 R8 f+ E5 }* K+ N| MCASP_TX_CLKFAIL
) r. P; L$ F! _: v- y# j3 [| MCASP_TX_SYNCERROR; ]5 s2 D+ h+ k2 I, F
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : W9 l: R; d. P$ C
| MCASP_RX_CLKFAIL$ A) N) w' L- [+ m
| MCASP_RX_SYNCERROR
0 W& Q7 E! B7 [| MCASP_RX_OVERRUN);0 U# p8 F: D: [/ \: ]
}
static void I2SDataTxRxActivate(void)% h- h" c6 M; v2 P
{
; j7 b" b- d6 N. @$ V5 n7 H' S/* Start the clocks */
. T0 p! C8 m, _$ U4 MMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  N3 n1 ~$ R# ^) c, y# bMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; l$ j' q1 t3 B, Z2 V7 B$ fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  {& g+ }6 P1 t& |( v* \) z
EDMA3_TRIG_MODE_EVENT);# k# @5 I% t6 M  S
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 g7 R& j, k/ Z3 y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
" M4 T' t& F& M8 p7 M/ \, W0 qMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 t" I( r  e0 M$ @5 LMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& U! v- v" M3 d$ ]# mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ m# W* q8 z9 \+ U: t$ \8 OMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 O2 \: `" p& F
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 w$ ~6 T6 r5 Q" h4 E' N/ K
}

5 ?9 e. `8 s$ E
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  s  O) z5 S7 L' m7 j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 11:47 , Processed in 0.038267 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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