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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8530|回复: 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,; `& ^% r8 p5 B6 d
input mcasp_ahclkx,
, G) N' ]8 h, T' F* V* t- X  r" @9 I, xinput mcasp_aclkx,. p) L0 e' J9 _7 K4 `6 U: N
input axr0,
! j4 j/ m) C8 O8 @; I. V4 s0 C: G. n, _; w: _9 F# w1 w
output mcasp_afsr,# u9 R$ A* M. c  }. C
output mcasp_ahclkr,1 p! ~( g  |/ q4 }
output mcasp_aclkr,
2 ~, B/ \( t5 M3 }/ [output axr1,9 u3 Y7 Z) c7 h' y) |0 ~' L% C/ W
assign mcasp_afsr = mcasp_afsx;
& T/ h) l3 R! Y0 U1 d( Qassign mcasp_aclkr = mcasp_aclkx;
4 N, z8 n5 S) g2 |: Dassign mcasp_ahclkr = mcasp_ahclkx;* `4 H6 D$ u% ?( G; x+ S/ M/ Y
assign axr1 = axr0;
& h! ~, f; _& i7 `6 i# x
7 o( |# N8 K- M$ U: B
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 O. _' a+ |! A6 K
static void McASPI2SConfigure(void)
8 V5 u* K' T3 ^5 T" c{* E/ j+ y1 A; T6 [# u3 f; ~
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! `" f2 }- e, u0 I$ y
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 U2 F- @6 f/ \  ~) U
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& g* L( S: N# d: [1 ~! F7 tMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) a/ w" w9 I# t7 K5 B4 u2 f
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 N7 S' Y' P; J0 P
MCASP_RX_MODE_DMA);1 e2 E; l1 d1 S% H% u& i
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ V- s( s% N) N8 `MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
. k1 X4 o' Y& K# X0 cMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, + O; J2 ~  W$ S* @4 l6 l
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 h) b' @& B7 L7 K) E
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" U5 Q2 P1 k7 j3 h$ IMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 D2 {! ]. I5 x6 n: {0 }4 h* SMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* `5 n; y2 T1 s3 }' pMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . P) R- e% B* ?* y* Y+ ~
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( h+ {8 A$ M$ X, }% q
0x00, 0xFF);
/* configure the clock for transmitter */
! R( L1 i" T/ {  BMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- @$ I& p! P7 r3 C9 c- `. t
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , g, o8 K: n" @! k* g0 s: \* V7 a4 g
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
7 B: i/ B# l4 o# E5 e3 j0x00, 0xFF);! V6 t8 k& q* m" O- s* J4 i

- [6 P; H+ \" q" {& O& o, s/* Enable synchronization of RX and TX sections */
' `) F! I$ x1 g" NMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
+ ?+ y8 `) v5 N, E8 KMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
: ]7 c& Q  p" h; A2 L/ v( [McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  E6 S& S+ K$ J+ j( H
** Set the serializers, Currently only one serializer is set as
9 h  j8 z9 U0 }3 `** transmitter and one serializer as receiver.
9 q. l2 R) [& G" I; `* L3 b*/5 j. v& u' p% j; J- }: `2 |& I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ U8 w5 r) J* k+ t3 u! ]5 z- G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 Z& j( j- r1 `1 @7 v+ ]5 h2 u
** Configure the McASP pins
3 t# }) ?% Q% L% [; ~5 F! `# _** Input - Frame Sync, Clock and Serializer Rx+ `* }% b, e' T$ v2 x: M" H
** Output - Serializer Tx is connected to the input of the codec + r" S0 B9 y3 k& M; D  i: u
*/6 y) \; s1 ~5 X8 G( v
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ b9 ]: U) z" j" W) s+ J
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ e! T$ ^. I/ c+ Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ L- }0 F  h4 |4 w) ^) @
| MCASP_PIN_ACLKX
7 B1 q  J1 ^; _: z3 G0 D' e| MCASP_PIN_AHCLKX
: S; S! {% c, B+ z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" R1 f, M2 Y7 h' T, B6 l
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 ^% R! ]' t! V; ?+ K
| MCASP_TX_CLKFAIL
  k, g2 n; U$ i/ }/ H3 i2 B2 @  N| MCASP_TX_SYNCERROR
. X* ~' O* \% b3 l| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) W/ x/ I  e9 E/ z5 n+ L| MCASP_RX_CLKFAIL
+ Y' E( _& g- L( f6 u0 m& m| MCASP_RX_SYNCERROR * ^' o! j$ }/ V
| MCASP_RX_OVERRUN);
% X+ r3 S2 L* d2 A! ?' r) @}
static void I2SDataTxRxActivate(void)
+ [$ c+ v1 A- X/ l; `{
! V+ Z$ p- f4 c- t/* Start the clocks */; E( [  ?, F) H1 E
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& Z8 B9 U$ G# V3 X
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ R/ J; W0 m# E2 }# _& `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' B# x0 e5 T0 j" ~! j7 [# U' G3 }EDMA3_TRIG_MODE_EVENT);
* b  Z( D. |% ]; Q6 K! JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( L6 q2 h( L4 v4 vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; G- ~$ u/ z% e9 a" @McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  c: W7 Z6 }$ S! y3 A  m# C1 U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% S+ \4 L" |9 @8 i5 P$ y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 d2 V7 C( O6 ~" k
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& C7 m. A8 c) k" ~$ ]0 eMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);  D% V5 n2 Q- ^$ X
}

! s( [. e6 }7 N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. T2 O% s* R- ?/ x" N; B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 10:01 , Processed in 0.037593 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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