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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12331|回复: 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,
: C5 ]$ M! r; Y, L" L1 X9 `9 Binput mcasp_ahclkx," ^) z" m4 O' i' r1 w. c
input mcasp_aclkx,
1 K; J, A& r( }! pinput axr0,
0 F0 Q% @3 o3 t# T' f/ n9 e
* x) o, G/ w, Z( Moutput mcasp_afsr,
  r. m) I& p  P* Loutput mcasp_ahclkr,
3 V; m& i7 n) V1 Y" aoutput mcasp_aclkr,2 c. j' w2 M  e- [. W
output axr1,
* J5 J2 D" D$ b3 j- R) }9 v" p) z
assign mcasp_afsr = mcasp_afsx;5 p9 o* }# z8 ]- h
assign mcasp_aclkr = mcasp_aclkx;
8 L9 n2 e$ ]$ h, `! x+ @5 k( v& i* K3 [assign mcasp_ahclkr = mcasp_ahclkx;
8 x9 r$ @; h. h! W2 K# Tassign axr1 = axr0;
9 D$ Q1 t5 g6 P$ b* A6 G

8 j5 {5 k! a! z& B  f% x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& p0 t" s1 w# x
static void McASPI2SConfigure(void). T4 B7 E) `! H) l" E: S1 b
{$ S3 ?* p  k5 N, a0 ]
McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 F4 b$ }0 T  s4 |8 c
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */6 F$ J, s+ N: o/ L9 a" L
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
$ r' D8 H) q( M1 w9 R( gMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 E" O# k) G9 }/ R0 y2 eMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 @/ \4 P: _- C7 R- Z( bMCASP_RX_MODE_DMA);
" B# Q5 H- b" S  Q: O; M: IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 R% @" N. g2 |8 L* R  v+ O
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) z5 O" t- m* {$ oMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * \7 p# h/ g& Q% k+ B6 K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 U- S5 ]4 {; f5 g1 lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 9 d6 C/ f$ R3 J2 S$ {! y. k  Q1 c
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */$ @  M, J, p4 B0 }' F
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
, B! |1 M( @* }- k& ~! {5 eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' I! K7 Q5 [8 x! V8 ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( _$ n! b$ H+ f+ r
0x00, 0xFF);
/* configure the clock for transmitter */
2 ?) P( b, V# TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" Z, I) C8 v$ ~- v7 `McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 U) Z2 w$ s% A9 W2 o* t  o; H( wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* g% E5 W9 Q- l- m& d: Q4 d
0x00, 0xFF);
+ Q( P! {: X4 d* n( V# w. F! o
/* Enable synchronization of RX and TX sections */
9 h! `# H9 U" F$ _- O' [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) F# x& m6 ~7 H) _6 s6 F. ?7 y8 [6 ]
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! t1 ]2 E( _+ h8 W5 o0 [. ~McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*  {$ N' Y, R# f5 G
** Set the serializers, Currently only one serializer is set as
8 t5 `- F+ z0 d! O0 g** transmitter and one serializer as receiver./ Z# X1 B$ r* C4 X/ O5 f  Z
*/
. Y% W% G* G1 H3 B; Z4 f2 S6 a( NMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. l9 r+ [* G9 b  A/ P! XMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# l' l% I" d% _$ @+ v** Configure the McASP pins : z4 `; W7 u$ d  e' S, V( d( Z
** Input - Frame Sync, Clock and Serializer Rx
: J3 O2 F  n- M1 ^9 c1 B** Output - Serializer Tx is connected to the input of the codec
# z" ]# {% c; m' T$ M; z*/
- O/ G' t, f  TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% n; U/ |1 a8 x. K" c  J$ A  z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' M: d3 _6 ~( p& o# hMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* {# P4 f, j2 [3 T% T7 ]3 {5 e| MCASP_PIN_ACLKX6 A8 C# t9 a, r5 L, z0 C( v
| MCASP_PIN_AHCLKX% S5 C! f: b% J9 H
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */% y3 @3 x% e& @" L( _& g% L$ D
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ C2 w% E" M2 T3 b! u; `
| MCASP_TX_CLKFAIL
5 v% ], B+ {& Y5 t, ^| MCASP_TX_SYNCERROR& ^7 ?; V$ V0 c) ]& i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 k' G3 i, I. G| MCASP_RX_CLKFAIL
. M- H: u* G& r8 {, H$ [/ G* q| MCASP_RX_SYNCERROR
0 a7 w: m8 @3 N" @| MCASP_RX_OVERRUN);: H7 ?5 I$ e2 [
}
static void I2SDataTxRxActivate(void)
- C2 g& H( S, P2 ]/ W# r# w{9 H* [# f6 O. l' E
/* Start the clocks */
) C& ~/ I# Q' [% R. \McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& i( `* b, L; ^
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// D/ F  S" I- P- h5 m
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# s" W0 s9 Q& Z2 Z; e% Z& v! DEDMA3_TRIG_MODE_EVENT);. Y; ?" Z( n: u5 ^' B. p0 Z1 B2 t2 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" y) R% |! H' {; A( Y5 _; s8 qEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; R  u- r0 ?7 w8 M& d+ DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
1 ^( j: _0 S" U0 PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* f: m: {- u6 Y$ h$ w# Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 F1 U8 A) g5 p$ TMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. s/ W0 b- u5 Q& FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 F4 t+ l9 G# K9 o* R1 S
}
! l* J4 B' n' @3 W/ L; Z5 n" P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# c) g) D0 l9 m6 p7 O' c" Y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-5 21:27 , Processed in 0.039928 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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