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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13417|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
- _: X% u7 Y) Vinput mcasp_ahclkx,. l3 M4 J6 p* d
input mcasp_aclkx,; ?. Y1 g* ?$ c
input axr0,
) Q7 w- s; {2 C; L! H/ j
1 j9 z+ M- M5 W! I- {' Ioutput mcasp_afsr,
: U$ A1 ~! n* Foutput mcasp_ahclkr,
0 k# Y' K% M2 Z/ j7 r' m0 x, c7 Eoutput mcasp_aclkr,( o5 f$ V/ m) `' S5 \
output axr1,) B- q4 ?6 _4 \& y7 O+ T
assign mcasp_afsr = mcasp_afsx;
2 X$ H! ]( j, D7 g5 Lassign mcasp_aclkr = mcasp_aclkx;0 Q3 j7 W0 |2 Q9 T0 o! V
assign mcasp_ahclkr = mcasp_ahclkx;0 H8 G& ?- h/ ~' F0 {: s8 R
assign axr1 = axr0;
+ @8 C* z+ J% B+ X/ u0 Y

% q" W9 i9 L/ E& I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 u- r; ?8 x3 Q" y# j4 C5 t0 p* f
static void McASPI2SConfigure(void)3 m5 L, G! [+ e0 c! Q0 V
{' w* v" ~5 k0 r7 k
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  ~% H7 P8 t# S" D% P/ zMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" n8 w; [7 w" }9 ~  h7 r! v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ T' P. H: k0 g2 W8 z) lMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# @5 U0 d# K! Y/ b8 {5 V7 O9 H9 u
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, d4 S) D# e3 F2 [: ]: k
MCASP_RX_MODE_DMA);$ X  s$ a$ n7 ^0 p
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, w) {0 ~1 T. Z6 w# X. d% M3 y1 z$ F
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, ]$ u$ @/ |2 p) M/ g+ _/ M8 ]McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 q; a- p" I2 f
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' M; A* c2 H3 BMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
, r3 [" ]0 f: F+ N: u! H+ ?% a6 ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 T  o3 l0 c4 ]3 F6 aMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& B# x! V- h9 t& @) Q) C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + E1 V9 P- K# K0 |4 v8 P
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- I" B" `$ c( I+ [
0x00, 0xFF);
/* configure the clock for transmitter */7 R  ]- P: N8 l8 t! k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ M; L7 \' e' [. F# \  j) bMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 d( |- |* {8 ^) w: I
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- ^& X( k3 p  d9 k& Z3 S" @
0x00, 0xFF);* h3 h0 V3 W9 A  u2 S0 N" q
  t/ H4 j2 j4 P# ]
/* Enable synchronization of RX and TX sections */ $ W) }5 Q8 p5 M" `2 ?
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 J& B: O9 C6 F  I9 |' m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. c) @# ]7 B- [' L: t% ^
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 ]+ D0 o7 c3 o' d; _** Set the serializers, Currently only one serializer is set as
$ l8 Y! a8 n" V: ^7 ~1 p** transmitter and one serializer as receiver.
- e* }2 L" [+ G  ?: e*/
" j* K3 g# ~* W2 i! yMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: |- c5 M1 j2 ]9 A% c9 pMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! s, `6 C0 g+ H4 x  ?+ |$ c** Configure the McASP pins ! ]4 g5 q6 g  i+ [1 b; n+ K  Y! L
** Input - Frame Sync, Clock and Serializer Rx+ ~/ y: E8 {2 W+ ^3 K5 ^
** Output - Serializer Tx is connected to the input of the codec ' @- Z) w0 O7 L7 x, d& F# y
*/
2 s% [$ [* J+ l6 F7 ZMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
. d- z: Z6 X. c9 zMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' X1 \4 t* X/ s% x. t+ \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 E( x; s  f1 Q/ e- ]# z8 r: y| MCASP_PIN_ACLKX
; v6 @7 e8 w4 ]& L; d' `0 Y9 ~| MCASP_PIN_AHCLKX
9 t, g# J4 z* ~! `& g! H| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- [" |9 X) W: N$ SMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
* y3 e& \) _1 ^| MCASP_TX_CLKFAIL
! M/ U5 }+ a7 ]1 v. V| MCASP_TX_SYNCERROR
2 ^( U2 @- x4 T7 j; Y. f| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . D% ]( z! ^+ r& K1 B
| MCASP_RX_CLKFAIL8 K+ W& h/ F4 B& u
| MCASP_RX_SYNCERROR $ L/ f0 U, t) L8 B, m/ d# u2 K
| MCASP_RX_OVERRUN);- x6 f- h7 [, I: x5 u) c& t( Z! r
}
static void I2SDataTxRxActivate(void)& _4 r# X) W4 U. j8 e2 c! a! o
{7 b! B$ m$ N1 T. q: z! F' @
/* Start the clocks *// i3 h# ?+ B- _' X
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 I) D4 H# Z' |: U( `4 n& u
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) G0 ]: k% ~: t8 ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) `" Z/ w, X& H0 v) p
EDMA3_TRIG_MODE_EVENT);
! N/ Q; A% Q( W, G7 [$ r. ?" QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
1 n" p# k0 b- Q; S. }8 c5 AEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; O+ A( K' P% a9 N! q' v( p6 d, a( hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& w2 @# {2 |2 v/ T; F
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 Y" A% \% j* a( E
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% G4 S+ j1 `2 ?6 z- q/ c4 i* \
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 l6 ^+ x$ [. G0 X- Z8 i; z6 qMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' }6 P; k2 |1 |- z- I* f0 E5 K}

$ V7 q6 M6 p$ ?+ u( g6 o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ R' e4 D! l' I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-16 14:58 , Processed in 0.041551 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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