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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8624|回复: 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,# N& g& }( e9 W2 m% J1 @; q3 w
input mcasp_ahclkx,* m  L5 C( K0 T, u* j" f
input mcasp_aclkx,
  g- H# ^) ?+ f& n; einput axr0,* I1 V. V' G$ t  \3 ?+ e& c+ i$ Q

' M1 n; X' ]9 q$ d+ Foutput mcasp_afsr,
  g3 w+ h! p$ V" t; K) V' u; M5 f) }output mcasp_ahclkr,# Q5 u* s5 i1 Z. b- k
output mcasp_aclkr,. o" ]1 K. g8 O4 B. C' |6 M' T
output axr1,
% [1 K% ^2 g/ G  n
assign mcasp_afsr = mcasp_afsx;
! Q2 L$ D% w- D0 \) y/ K* K' X5 Aassign mcasp_aclkr = mcasp_aclkx;
6 m" V# G. o$ c$ i9 y& T7 G5 Cassign mcasp_ahclkr = mcasp_ahclkx;: o4 Z6 T' Q; V8 m& |* j
assign axr1 = axr0;
6 L! }9 B, V/ M5 o/ |7 v0 P  g+ t
4 a9 x5 d* i, p/ k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 H; K% Q  E' x% r0 I( `
static void McASPI2SConfigure(void)1 |% V1 {# C3 u
{, W1 S5 V$ r# P- S. U( c* W
McASPRxReset(SOC_MCASP_0_CTRL_REGS);$ j' R4 ~( k  e- R3 ^
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( }3 P1 c- H& J% q; r% [4 l4 yMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" ~; t$ Z4 z+ ^; {McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */8 q' Q; o4 n' p& B
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( N" n7 u. C+ T3 M% D$ s$ R! c" zMCASP_RX_MODE_DMA);! q8 Y9 o$ c0 p% f* j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! q1 _" D* a: I; B( g( Q: r& \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! V! b  s% ]2 ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, l; T5 y7 \" U" VMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% W; x. O5 J7 R2 f( T5 I
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
+ E% S3 _3 n; [6 _: p" rMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 V+ I; |' [* b5 Y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 f" C1 h! D- y! [3 f' s2 E& PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + U  P# o1 n8 o% w  m, V: E* Q7 s0 b& F
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,5 x$ d& `" e9 l- V, F8 p
0x00, 0xFF);
/* configure the clock for transmitter */
. l1 j& f! w' T* ^McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( m1 p3 n* j- R8 a: kMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. ]# l0 \* H! A$ S8 EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. v9 j- z5 `' k( M+ u
0x00, 0xFF);# h- F4 g! e3 s! v# U$ `% L

, y  D1 p6 ~' Q' d; d1 ]" N- s3 Y/* Enable synchronization of RX and TX sections */ & R( y9 @+ c, c& j7 [
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, h; y, T9 d  l8 a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; n  v9 t1 {. L9 kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: G2 i( I" }# g( F# L, J) D' \6 ^! q7 Q** Set the serializers, Currently only one serializer is set as* c' K0 S- g7 F' ~4 ~  Y
** transmitter and one serializer as receiver.6 n! R# g& A  _( F: w4 ~
*/$ c1 t1 S6 c2 y8 E. f% \
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 ^' p- J; u3 l" z% v4 O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, ^3 J+ G" b/ X# x4 X* [) i% @** Configure the McASP pins
& d1 o- H$ L4 o8 `  `6 I3 R** Input - Frame Sync, Clock and Serializer Rx  R* u& J) k9 p! n
** Output - Serializer Tx is connected to the input of the codec
8 |! ~3 K# R$ g) t( o- a% k*/
7 \; H" L' r4 H/ hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) B2 W0 c1 _4 B% @. D
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* j8 r- Y0 [/ Y3 C2 pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- s, R) {$ v0 R7 C* `. y| MCASP_PIN_ACLKX
% C' X+ @1 b% O( Q7 D# d| MCASP_PIN_AHCLKX
! V% Q/ u1 `, J- b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 z% e3 j5 B) dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( V- W) l( _8 p$ K- I
| MCASP_TX_CLKFAIL
# J) l, S# p( X, o+ E7 _7 c| MCASP_TX_SYNCERROR
$ q1 D' p2 `; @& |6 m3 F) p' o( w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
2 T! ?8 i: ^2 T* p0 h# J| MCASP_RX_CLKFAIL$ x2 C' s4 ]& W( Y4 |( Q: x
| MCASP_RX_SYNCERROR
& P2 s2 [/ l& r1 C% X# a| MCASP_RX_OVERRUN);
0 l3 |3 W2 ]: b" {& ~/ t}
static void I2SDataTxRxActivate(void)
. [9 N5 R3 x& k9 R: r. k{- }4 |% G* ~9 a# J' }9 r
/* Start the clocks */# a& G- O$ U& U8 F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 \, R% Y# \4 T% Q+ i1 ~
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ @  o- S1 E, ]: G6 h4 K  zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& S; j! c# D: ^- I
EDMA3_TRIG_MODE_EVENT);6 h7 V: f* `' |1 J1 ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , _7 p+ y: k$ e
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; [1 m& ]- Z& o& x9 k/ _$ kMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' y8 [3 X8 g" _- G4 L, L
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; p& D4 B5 R( r* L  d2 T( w& r
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 G- \' u5 \( A+ {# d0 T0 p
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
$ N# m! I& N/ S6 q# O; X/ h2 VMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) n; g: D& ~; ~4 T- M9 x& e
}

4 Q# {* Q% e! v$ W2 j# d" u3 e4 J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
, ]6 x9 O; c2 C8 o' n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 12:42 , Processed in 0.037971 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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