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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,2 U4 c6 M  }+ M& K- U
input mcasp_ahclkx,
- h5 M* `* }" z( |+ winput mcasp_aclkx,8 D, p; m1 m* K/ p# h$ F
input axr0,
, j3 J/ j3 j$ g. P* j! T; F  C0 b$ K7 [& t2 ^- t
output mcasp_afsr,
& p, ]% H6 t. K) w: z0 J8 l, _output mcasp_ahclkr,2 F( c+ M7 F0 r/ }0 q
output mcasp_aclkr,* z3 L. S2 n3 H* R7 W, f; K6 T4 i* n8 M
output axr1,
& h( {, Z2 b, E9 ]- v5 l1 q0 W
assign mcasp_afsr = mcasp_afsx;
$ f, z1 l+ n- U, r" a+ w8 O  x5 Xassign mcasp_aclkr = mcasp_aclkx;4 v. Z; B' e( C4 p3 x
assign mcasp_ahclkr = mcasp_ahclkx;
* R; O- M( N, H# [assign axr1 = axr0;

+ X8 U' G! i' l# C+ Z" u2 W+ @3 H+ y: o$ [3 x+ o
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 u! ]. \- a( p2 `7 p3 B  l' B7 z  ]) O$ v
static void McASPI2SConfigure(void)
/ n+ V* Z% Y# W( ~, S* f( Z{% K; J! S! X" H( L
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 s$ L2 p7 ]: DMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 y- h+ |9 y% ~" {1 C& B
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- _, q( ^3 ]9 J# b% h6 TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* t& O4 e. {4 T- @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," c4 Q6 D: F. H: ^8 k% y6 f
MCASP_RX_MODE_DMA);
3 F) s" y7 i% D% W  LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ J- b7 Z% q" w( K5 @& M. GMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& U. I9 R; M  N8 `& A
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% y& y9 C9 H: I5 E/ e' H& mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! k- R- y% b: i$ \) }" M
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & S1 K, U; ]4 p$ Z2 F( R* I
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 F& }2 V: G2 J2 a4 QMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 J% m) w/ R( l( _7 K% p: ?5 XMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . r- `* B# E7 X# s/ e
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 Z8 A2 m. g  l2 Z! x# L% l0x00, 0xFF);
/* configure the clock for transmitter */6 h, s+ O  D& Z& w8 R! _  ]
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 \1 [: }  v  b/ \) Z5 a. ^: P8 {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 g. E( w0 B- X1 T# GMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ r, ~; a6 {3 _/ ^0x00, 0xFF);1 B" T# H( f6 u7 `; K! m
1 X6 p9 x2 {/ q) \. n2 a% }
/* Enable synchronization of RX and TX sections */
: a- M" k; n. tMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' l  |% n6 T* b( @- m/ rMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  d; X- r' t/ n& CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" n' }: B: s' |$ U  D% |** Set the serializers, Currently only one serializer is set as% r9 r6 m! a2 m9 t# E
** transmitter and one serializer as receiver.
% R& M, |3 p5 U% X* V2 L1 f*/! u0 ~+ W, s8 D
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& r. e: v; N1 R7 }6 e% R% h( l
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ U3 ?) q9 l& k- Q** Configure the McASP pins 6 X: P+ `- T8 T$ w2 l& n+ _
** Input - Frame Sync, Clock and Serializer Rx2 t: P. f. f7 `7 Y& S, I8 ^
** Output - Serializer Tx is connected to the input of the codec ( j9 r0 Y1 V" H
*/3 ]/ M! l$ d& b' ]2 U
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; A" j2 F8 u. L! R+ f( N+ tMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! N/ }7 p  t9 J2 |. {: U- F& L8 x
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- q# v3 T* u7 ?9 o5 i1 R| MCASP_PIN_ACLKX
6 @% W; s/ W) ^: A| MCASP_PIN_AHCLKX
, w2 L7 Q& ^' D$ _| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
5 g3 ?7 j/ ?$ t: R& C6 L1 vMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 k* `' Y( N: N9 q1 [- Y2 p4 O| MCASP_TX_CLKFAIL ' I( r1 _" K4 m. ~% M6 o' e
| MCASP_TX_SYNCERROR
" O' u  G3 v! s  Z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 Y4 V1 I) c; v! [7 c5 L- S; }
| MCASP_RX_CLKFAIL9 W9 [7 E/ G. O' u
| MCASP_RX_SYNCERROR
' g6 n- x# W- W| MCASP_RX_OVERRUN);$ k$ k! q+ d6 a9 v: k
}
static void I2SDataTxRxActivate(void)0 L" s( D9 N) j/ Q8 `/ B2 x
{3 i9 d& r' K& z* F4 M0 l1 `  A
/* Start the clocks */
' Q  u% `: c8 W+ \) \0 k- J9 n6 X/ FMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# P8 \8 h; R3 _! [! _McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 q1 @) Z, V- O; z( e2 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 [, f4 {1 \5 f$ q5 V- P: O
EDMA3_TRIG_MODE_EVENT);
6 I: T* q6 W+ S) m  iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) A6 C; S& a# Z6 iEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */- d$ f5 I8 m! g) D! Q, j! k
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; K! ^0 {" t3 l' _McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 d$ \% }, R/ T. v, awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 l# `. @9 f& a
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ o' J" S/ a6 U
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: t* U& A( o4 g. ^}
! w# x1 E7 p/ T1 D- L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 G& e8 i1 m9 L. ?, g0 u0 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-17 16:01 , Processed in 0.036893 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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