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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8661|回复: 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,
" i" H5 {: p' |" l9 z! D0 hinput mcasp_ahclkx,- z7 z+ Z+ g8 M! }! r8 Q- L
input mcasp_aclkx,+ U" A. ]5 s9 @8 o
input axr0,0 H1 _* H. R" ~3 v8 x1 |  d7 e

) W9 D$ d" R2 f1 k) U( l- Houtput mcasp_afsr,, ?- u  ~2 {; w) \2 Z! x; k& r& C
output mcasp_ahclkr,$ s; A$ R7 i* a; V  @& O" v9 y
output mcasp_aclkr,
1 Y- R3 j  t; Ioutput axr1,( R  D; h- C( O0 B3 N- J4 J
assign mcasp_afsr = mcasp_afsx;) Z. m/ Y3 s: j* n
assign mcasp_aclkr = mcasp_aclkx;
- c  H5 K+ o" C2 F5 {; e! d) kassign mcasp_ahclkr = mcasp_ahclkx;
5 W- y$ G  o: `9 y9 I: x9 h2 h4 Wassign axr1 = axr0;

" l9 R7 ~& o3 Q3 Y& [: R3 [6 o+ J0 i& _3 Y; o' r- x- U/ G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 d, k+ m# ^. D5 i6 G/ B+ e
static void McASPI2SConfigure(void)! ?2 c' d9 u+ }# u" A& f
{
3 |8 _0 X1 u+ [) @5 nMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 {; J: H, D! x4 N- ^& e/ FMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" [. E1 F: }8 D" G9 t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);' [7 J8 U3 N8 b( G. n: ~* b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ \, b- I$ k2 _3 W( EMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- O7 J1 P+ o) K$ f! h# _
MCASP_RX_MODE_DMA);
3 F  e2 O% ~. x4 uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ f) ?8 j$ ^1 K( ]( p* h. @& C% v9 ~
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 o" T- ^! O* E' LMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 i5 s. r2 I0 @1 M- v
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" G+ m( A7 b( ]* ]' yMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% X. b9 I* M: X3 G! r, xMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 L9 E4 C3 A7 l( a: BMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( r/ {) {! W! k/ X7 \; b: nMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " f! {# q% Q! U( _' }2 Q
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 H4 r: M7 }4 Y& t8 }0x00, 0xFF);
/* configure the clock for transmitter */! K$ e7 f7 W0 Q) [/ ~
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. f/ h! k- V, V' Q, \' L
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 E" ~( Y! H* `( u
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," ]3 b% Y4 e- r0 @; B) @
0x00, 0xFF);) O' Q6 F4 Q3 T, @/ s4 |7 w& G7 e
3 P1 F# n/ O4 z8 K. n
/* Enable synchronization of RX and TX sections */ / A6 |% \" C4 c% Z) `/ @5 e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& |# J1 R$ w0 k3 Y; ]
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 C6 Q. i3 d6 f8 e1 E
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ F8 y" z! r3 H# [2 \** Set the serializers, Currently only one serializer is set as
1 t9 X6 Y) x  n6 M4 W1 y) u9 ?' ?** transmitter and one serializer as receiver.
3 x! x8 p) q# o' D5 K( C) ]; H*/4 M1 \( Z+ }" X: f) _, Y8 A
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ J, Y+ ], O" v- M0 G- z& W* M  A5 z, N
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
+ F/ r% I+ q3 {$ H: i** Configure the McASP pins
. m% ^7 q& d1 v; l/ `* S** Input - Frame Sync, Clock and Serializer Rx2 |5 c/ H$ E: o6 @) |& J' {! ?
** Output - Serializer Tx is connected to the input of the codec
& z; {- ?$ G* T  W* L3 K*/
4 Z+ E. Z) t1 d' n/ h. I1 QMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 z: m: i2 v2 U$ o
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 H) N  }8 _, l1 x3 P
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ p1 b1 l8 m) ?. `. i; H9 || MCASP_PIN_ACLKX
8 o( D! P  X2 s4 [6 _3 W7 c| MCASP_PIN_AHCLKX8 S! m' T! p  o8 d3 @1 x7 F
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# r5 t( g0 @- b& l! S0 T) V- G) uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
4 r, \8 i& }/ S: F| MCASP_TX_CLKFAIL
6 o: d  z( f* x/ H2 B| MCASP_TX_SYNCERROR
/ T; v  O3 c+ U| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 r4 Y4 z! Q( |9 _| MCASP_RX_CLKFAIL
1 R) R/ P% Q$ K( n9 ~3 G| MCASP_RX_SYNCERROR
; ~9 `, T: W8 X. J! H2 H# o' i| MCASP_RX_OVERRUN);
/ G: x5 }5 t) T% _/ l1 @' `9 o}
static void I2SDataTxRxActivate(void)
6 h; {& H6 ?: U9 w; d{
' m7 k, H9 l1 H1 X/* Start the clocks *// J# ]) p& q$ m- [. q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 e, `6 p( }% j8 ]* w  _- j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ d- t: v0 e$ }6 a2 _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- C" K3 r  y6 q9 q1 [# X3 M7 BEDMA3_TRIG_MODE_EVENT);
" I- A" j9 k: ]- ~EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! T$ H, k6 H5 d% ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */* y0 S9 B* _! [' Q2 F, f' H
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ o" _' A' l' m* s8 O) ^
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// P+ o* s+ X# @5 }6 }( }( e
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 N1 g9 G! x: u# |2 a7 oMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
% c8 U1 P- |& G- q8 l  E* dMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ Y5 E2 T4 F0 e5 J1 F
}
. X8 x% I9 L3 L' G+ ?; f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

+ \# c6 A$ k7 a0 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 20:30 , Processed in 0.038241 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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