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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8302|回复: 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,
3 z. H4 l# ^8 D* B" qinput mcasp_ahclkx,9 `$ k  T) L* j3 ?, u+ r
input mcasp_aclkx,$ s7 q0 k% U7 M3 \4 L7 E5 w! A
input axr0,
. B# v' C! i& J! c. G9 c7 W6 J
" {. H% G- b. o9 n/ houtput mcasp_afsr,
/ B3 g1 Z$ Y. w: U: X& C& Woutput mcasp_ahclkr,
6 A0 S' q+ ~2 r+ D# l* a. coutput mcasp_aclkr,% |2 u5 Z$ K4 Q$ V
output axr1,
% K" r6 G- ?8 Y1 Q% @
assign mcasp_afsr = mcasp_afsx;: w- L7 N/ o- Z  a% ^& K7 I% C
assign mcasp_aclkr = mcasp_aclkx;
+ @' ]! K( G6 iassign mcasp_ahclkr = mcasp_ahclkx;
" S3 {9 Q! V7 M6 A4 }$ {3 o$ _( vassign axr1 = axr0;
- s9 t7 {! m/ O  T# Z
! i" t. I, I8 R# @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 G* }( L. s& e4 E- ^
static void McASPI2SConfigure(void)3 @! Y& a$ V. B; I
{& B% d4 m( w2 t, V7 r
McASPRxReset(SOC_MCASP_0_CTRL_REGS);8 |, g+ h3 m, R8 u: |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; i+ a. C/ z, S% d; Y/ l6 tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- y- l1 Q3 \3 H. P
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; Z; t$ N% _: B, RMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 R$ n5 e3 c1 h5 r; ~; M2 s# J1 [* FMCASP_RX_MODE_DMA);
0 o' H0 V/ E# s3 l8 v& VMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, j* D, n9 l' a2 ^: b2 P9 ]1 R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- S+ U9 |: y0 f: Y7 X/ S; \McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 E0 A. E1 z) J5 @# p2 p2 T
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 }! _3 g# S2 U+ q7 e/ e
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: t. g- }4 O/ f' C6 E/ ?- Q4 t1 ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ r+ \  S; |) O7 A: z/ c5 V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! v) k' E. C" Y1 @4 O( W. ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; A, f1 b# X* o. @# X% W4 N. i
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) T1 c8 F! ~9 F0x00, 0xFF);
/* configure the clock for transmitter */# k4 m% K3 p# |$ q+ q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' |1 g, u: c7 D0 B* ~! ^McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 J; @7 _+ a4 p' KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 S& ]  V. c' ~3 W0x00, 0xFF);
; S+ [& Q. k, Z
; ?( _  y5 H8 n  }6 T' b/* Enable synchronization of RX and TX sections */ 4 l, E" t% v' h# }; r% W
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" Q1 b2 {' P8 D* K; J3 N/ YMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 N+ {* P  M9 M- U. K3 l
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 s" x9 `0 q; J; S
** Set the serializers, Currently only one serializer is set as
9 d/ S- x' n# C1 [7 {** transmitter and one serializer as receiver.
9 i6 ?& b+ L" s, [*/! M) i. H3 o6 M' d/ U0 z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) i( z% |; ^1 |/ C# PMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 |( a! f6 V. P$ \% @** Configure the McASP pins
! R& w% d) V5 Z( I2 p7 u** Input - Frame Sync, Clock and Serializer Rx
) @: }$ Q: T- [# r7 J** Output - Serializer Tx is connected to the input of the codec
" e& e% _1 W3 e' L( [& R- a/ ^4 X*/
7 ]) D0 k) D9 O1 XMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 D: I( Q  |1 J" ~1 h% hMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));3 r  F# H! f# ]1 |
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX/ T- z/ ?0 F. V# ]: Z
| MCASP_PIN_ACLKX
: q: J9 N7 O) g2 ^| MCASP_PIN_AHCLKX! \3 z, R" Z1 Q& D  u
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
2 l. F( ]  y+ n- g; _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % p* M( M# T/ {; G  p
| MCASP_TX_CLKFAIL
. ?( d2 G* ?6 W5 {- L| MCASP_TX_SYNCERROR
3 t: j4 v. M5 c" l5 u- H# B* Q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& S" P' J2 Q2 v4 q| MCASP_RX_CLKFAIL+ [3 U/ x: I7 y+ F- z" ~) J7 D
| MCASP_RX_SYNCERROR
# b* W3 N7 h5 ~. t| MCASP_RX_OVERRUN);
7 B9 J. G1 v  ~6 D8 m8 L/ e+ t}
static void I2SDataTxRxActivate(void)  r: V! C, ^2 |
{
$ o$ E; j$ ]2 {- Z/* Start the clocks */
! c& V1 o9 g7 P) [& z1 k$ B" d! VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! W5 i6 I. t2 g" U: P
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ i3 L6 b1 u+ AEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) V3 k8 T/ ]# k' yEDMA3_TRIG_MODE_EVENT);6 W, m7 q6 z9 m; m! H+ s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , d9 A4 L5 ?! Z; e7 Z- m
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
5 B: L: \  V' g- x* rMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 h2 ?. X2 N* c
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ R3 H* J8 ]3 U4 l3 T& i9 u
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 T4 ?9 C# ~: z/ _8 ~+ I& g1 d" cMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 C% m6 T3 G* V/ |# y4 d
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);( ]( s! |# Z9 s) A2 T1 Y! _0 R, K
}
  l  Z3 Z& ^0 K" d- ~7 H2 b
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ {  m" d7 j; j* k" e& x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 09:03 , Processed in 0.038636 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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