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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& g' W+ ^- d( _! o4 K# ^input mcasp_ahclkx,
( G2 Z3 c; l3 Y/ |1 h1 yinput mcasp_aclkx,+ R/ W; S* D* z4 h4 J
input axr0,. c# s7 E1 I- @; L, W2 ~0 g3 Z. j

8 \0 y3 R/ O/ Y, Noutput mcasp_afsr,5 q5 X. I3 @' o  I8 a( g% b
output mcasp_ahclkr,
3 j: L8 c+ ~6 l1 J1 a' E5 }! joutput mcasp_aclkr,/ c8 p5 w& U( S. Z
output axr1,
# t; ?( T) z& E6 J
assign mcasp_afsr = mcasp_afsx;5 ?, O( e/ ?! Z" `: l* P1 I
assign mcasp_aclkr = mcasp_aclkx;
) B/ i" b; H, q/ s* Z7 O8 Kassign mcasp_ahclkr = mcasp_ahclkx;6 o2 X9 s/ o* [8 t3 M) y7 e
assign axr1 = axr0;

5 U/ j1 }, Y+ c2 S: [' \- _/ i( N5 W* f5 s# f$ e2 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

6 n8 @5 Q5 M; W1 k# E; s' z
static void McASPI2SConfigure(void)
; B, U6 c# e% W- k* A1 i{/ t$ C  s; H+ b& t! Q  k% Z$ U& }
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ L( L+ g/ m( ]$ l5 ]McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* v9 a- ?+ w/ c8 s( v) z7 T/ x1 s+ w7 wMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. b% Q( P6 y2 i" H& _) X8 q- RMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* D' |7 t9 s" b
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# J# r) R% z& ~* k  j1 @8 vMCASP_RX_MODE_DMA);
) k1 B" b9 t5 Z" w7 l7 D, `* X5 FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ B6 j3 T- a3 M, o% X* YMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 G  H& U, @7 ~& Y' AMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' X+ T6 t  C$ e% E
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
' q( D, V% c# ^3 uMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 Q* n6 d* ]8 R6 W# O7 V3 aMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- y, S2 [; T) g5 s8 |- n0 MMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
/ V' |- \, A: N! Z6 F5 ?! [8 DMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' ?$ N) u& |3 ^" C% I( q# m, z  |- [
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
9 J6 x' Q6 f1 x( Z+ P+ N0 R0x00, 0xFF);
/* configure the clock for transmitter */
% Y0 u9 _* V1 Q/ ZMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: ]! V' W8 B) ?2 hMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 {- I' y, i' d  K5 o- c
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 K# B8 Q$ m8 t6 |
0x00, 0xFF);6 T' N4 L8 r' K  F9 f3 L, A* ^
; u  t! @( y# h# R" K" q
/* Enable synchronization of RX and TX sections */
; Q. r9 W' g+ |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: x2 h( k% B7 q- S$ u" x# ]5 R% OMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
" L. Q% ^( X1 n/ `- UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 C9 Y& H9 i3 R5 n5 |7 L
** Set the serializers, Currently only one serializer is set as
$ U4 T. b/ [/ X! n3 i2 B** transmitter and one serializer as receiver.
5 t$ `/ ^  b$ H# x: ?& {# T) n*/  u( \/ j, q$ J5 n* Q$ d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 _) D7 @  B: D% F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 m4 t% f6 Y+ t$ D( N1 Z** Configure the McASP pins
0 L: b' H; I/ a, e** Input - Frame Sync, Clock and Serializer Rx
4 \; P6 M1 o% }) ~7 }  U* ?8 E7 n** Output - Serializer Tx is connected to the input of the codec
6 g" F" ^9 M8 T, n' C. v$ K*/
- w: S# H# Z; n0 ~( D( i- RMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- j" `5 r; a4 O/ R* O8 KMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( {! Y) Y8 b6 L1 |! g* D
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& I/ G" `) K! r% @: N% c| MCASP_PIN_ACLKX
$ q* O- X2 D$ V| MCASP_PIN_AHCLKX4 h6 W$ f4 t/ i! N8 w6 z% X$ m
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* i; I/ }9 x; l  h' o) `McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ _$ t5 {  @" R4 a6 O4 ?. r. H, V# G! z| MCASP_TX_CLKFAIL
0 D. f* I$ [# G! F- h2 Y| MCASP_TX_SYNCERROR/ c  W8 x1 k) w0 ]' n3 I- H0 F
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( w+ }. w8 v6 T! l: k" r| MCASP_RX_CLKFAIL8 W1 Z0 Q# z/ ?* @: h
| MCASP_RX_SYNCERROR * {. f6 d, U9 [7 N; i/ H# [
| MCASP_RX_OVERRUN);
/ X% |4 v9 P1 t! p5 F& Z}
static void I2SDataTxRxActivate(void)3 L! w  V0 A5 h4 T) r
{! @9 N% x- C: A/ B; j3 p
/* Start the clocks */8 d8 C$ l) [) [
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ @: g; ^5 t# u. B* a! n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; v0 f6 o$ @  xEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# O1 s) m7 r, q% ?
EDMA3_TRIG_MODE_EVENT);7 }& A: U8 v( h2 h0 f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 R( B+ C' @& V9 U5 b5 _% V& eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 d1 s0 ?8 a  n. m  s* s
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);7 t) h9 {- @' Y  W% F7 |$ s0 j
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  ?6 {3 E* \% `: U  wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 Y( p. r' z# Y) r- J( ~; r
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 N% R) j/ p1 n- {8 @McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
5 v& m- ^+ t/ C$ r. B}

" Q$ D8 c2 p7 O  Z' y* u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: o! G7 L& H8 r) M0 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-14 13:37 , Processed in 0.044816 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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