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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13596|回复: 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,, `/ `! F5 q$ u& y( m0 C+ z4 j
input mcasp_ahclkx,
7 \7 _/ C/ X$ w5 H5 _6 kinput mcasp_aclkx,
3 S& R( O1 J: L6 X4 \/ Kinput axr0,  z: ^  v$ p1 b: @
/ V- I: r. H& [, ^9 q/ h% T
output mcasp_afsr,
! _- c% i" x$ toutput mcasp_ahclkr,
5 g1 L6 q& O# l0 y. v% toutput mcasp_aclkr,6 n! v+ V4 N, j
output axr1," @" M4 O  p4 i
assign mcasp_afsr = mcasp_afsx;( ~$ w% L5 e1 m
assign mcasp_aclkr = mcasp_aclkx;
) T; x2 l& d( }" n, rassign mcasp_ahclkr = mcasp_ahclkx;9 o) E( k2 d. M0 F
assign axr1 = axr0;
9 K, g$ v$ y2 ^- B. V% s4 [1 B
, N) n) ?) {, E7 h" B9 T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
& R) o9 C5 Z: b. s7 \
static void McASPI2SConfigure(void)5 o9 O$ r* u8 h+ v: S
{% t+ [' g4 w2 P; I. y) t
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
. @  |* e- P: \& G( ?0 |McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 L# L& V# E5 G# ?. C
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- r/ Q$ b8 R. o8 cMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */% Z+ c. s! j: ]$ t  A
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( K" g. H2 |5 i! R5 G$ h
MCASP_RX_MODE_DMA);
1 L$ \" M( {! v  k& u4 I5 o- U) iMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 p! y) d. m0 U( F, I* K2 M9 A8 `
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* u# J. a7 [4 m. r; e/ p; jMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 u- _/ V$ V0 H# ^
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 Z# w- R- }" M
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * B- x1 r! O9 [1 z2 @. |. d
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ I$ [; u6 D# D1 ]! @0 _
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ Q8 h. _5 j, C+ }" K+ K( U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * A; n* M* X; K4 S
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ g; A8 l6 r% I3 h* ^. E  x
0x00, 0xFF);
/* configure the clock for transmitter */
- F! w" Q- I* j4 W* ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* G. v7 y! K" w
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- s3 p" K* V' i* E8 vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 _" S% k: N2 G4 q  N  x  j4 ^
0x00, 0xFF);) p# @/ x$ T! H) k& W' a6 w

* @, d& _  W. ^2 w/* Enable synchronization of RX and TX sections */ , j5 a0 u2 [% f, k8 o( a! c6 ^, a
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
5 \. I! k( F0 F2 ~6 SMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 b0 r( Q5 a7 J) MMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 n. B7 C2 @7 q, A9 k: }7 d
** Set the serializers, Currently only one serializer is set as2 Z. E1 x) x' W2 K( N* o7 A  F
** transmitter and one serializer as receiver.
1 s7 a7 V- W  K7 o/ x4 w7 A*/: A" ~% D( i, O* M8 x: c
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
0 X: b9 A) ?( }- s: xMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 W: Y2 e" N9 C1 Z$ S8 A
** Configure the McASP pins 4 a4 f5 f! l; l
** Input - Frame Sync, Clock and Serializer Rx3 ]+ L$ l' g  `# \
** Output - Serializer Tx is connected to the input of the codec , v9 B* C( x3 t" @7 p! S
*/1 s. O1 u3 w; N6 B6 @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- s3 y/ d( ?0 A7 V9 g1 Z* TMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ M7 ~% x! B" f- K
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 p5 r! a. g& A! n* f' D% D: e
| MCASP_PIN_ACLKX
. |1 D2 {6 X$ A& Q" H| MCASP_PIN_AHCLKX
& [: a9 a; ~8 N& i2 l| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& W3 t- L* E  r: dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR , G  j' {9 R2 y7 D; Q1 S' a1 g
| MCASP_TX_CLKFAIL 4 }( j, A* N+ A! M8 [
| MCASP_TX_SYNCERROR# z* w# U8 w) W% M, D! c0 G
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. Q' j# p! Z2 W! l: x5 Z/ c| MCASP_RX_CLKFAIL' ~1 ?/ a2 U# e' r6 d7 b: O- j& N3 Z
| MCASP_RX_SYNCERROR
" N% W# C: y5 z% w1 I+ j( t| MCASP_RX_OVERRUN);
( z; I( f6 r# E! T0 D( l3 c}
static void I2SDataTxRxActivate(void)" y9 f) o6 O1 N0 Q8 _( _3 G
{  p/ ^9 ]+ A$ z4 O
/* Start the clocks */) Q) Q; t9 J) T0 P7 @9 z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# Q' |6 h# M; C/ J' K. q: \1 P% c
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */% t) c  w6 c3 T5 a! t7 }& r" O0 D+ L7 o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,0 I# |% n! |0 r2 X# c& E
EDMA3_TRIG_MODE_EVENT);
4 i/ l% r' _) {  \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   E4 ?* a7 f7 E: \1 {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */' P# K! R6 t6 V- Q0 E  H  y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 c! c- x) Y: z' ^4 _3 c9 e* `' RMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
: ~$ l9 `, Q) h! R$ i8 n3 `) q& Y" i# @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! `3 A) K( n6 G: i2 i$ n
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 [8 B4 n  ?8 yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 J1 q) @) T, e# t9 q5 N4 E
}
! a4 t. l+ z' l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

+ `' ?7 X& x  v0 h2 E' \5 {' S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-10 07:20 , Processed in 0.043774 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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