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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,+ `/ J% W+ W/ t. h* U# @$ S+ n
input mcasp_ahclkx,
3 E5 w3 {9 s* M# J  i" }0 n0 o9 |input mcasp_aclkx,
( U) g7 u4 \3 h4 M3 n* G( n" {input axr0,
6 e7 X3 g! V) L% a! T/ {# ?4 j
- M  w8 h- T* [, g% foutput mcasp_afsr,
3 c$ a5 v" l9 m7 Foutput mcasp_ahclkr,, K) l4 D3 z2 L! Z" l: i8 E
output mcasp_aclkr,+ j  ?1 [. x. e! k
output axr1,( |" e" J; I5 D
assign mcasp_afsr = mcasp_afsx;
/ P8 B: C* n1 r8 M# o9 u* j- l# Nassign mcasp_aclkr = mcasp_aclkx;
, u( {$ _" S* wassign mcasp_ahclkr = mcasp_ahclkx;1 @' }( q1 R4 b/ a* N  z
assign axr1 = axr0;

: A. O3 T. Q/ I) ?0 n  C  X6 D) s. V1 w
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; {2 s' B' b4 y3 f! Q
static void McASPI2SConfigure(void)4 {- `- _4 `) U4 Z0 U, L
{
! O+ s' S$ E0 C$ C; {$ X; CMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
" I3 V$ O( y8 P9 aMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */# h8 S6 b2 Z) W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 y1 V6 ~+ Q+ H8 SMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  A5 d1 f  i# E6 \3 n
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  o' _7 N5 M0 I/ n( h, W' iMCASP_RX_MODE_DMA);+ Y' J, @: s& Y1 c1 Q
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- x8 z, h: S- m" J& iMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 }; `: ]. N3 i. }McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 v* m7 l' d' j* }' ?0 b
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  S& L. O7 g& A9 W- W, n$ y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * t0 Y# x2 A( x. [
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 k* e, G. N8 e7 _McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( K& l) ~2 R5 N
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: s" t- T. {6 D4 o7 t- ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: m/ }2 Q3 E3 V, L- e0x00, 0xFF);
/* configure the clock for transmitter */
+ J* Y0 f$ b2 ?7 l* d- w, v6 `" MMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 ]  F5 q5 t& X- D: ?& d
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% X* O$ n% b' E$ z6 R$ zMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 [1 K: u. o9 a" A/ v
0x00, 0xFF);% D! g) R2 P/ |7 N8 k

9 z$ x# O* v  `: z+ z/* Enable synchronization of RX and TX sections */ & Z4 X- ^3 v! v) W
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 M, z3 f9 R8 U  |( q, j# wMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& y' Q0 r6 J9 v9 b( o9 _% s# J: @. [
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 z: W% H. J4 ^, p8 @
** Set the serializers, Currently only one serializer is set as3 j% v/ a5 y4 J. k, k5 B7 D# Y
** transmitter and one serializer as receiver.8 i1 G6 v! m6 ^6 F
*/0 M1 ?5 s3 V7 K
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 `1 H- Q" q2 g3 fMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( A. W0 S( w3 Q+ j2 B2 ^** Configure the McASP pins
: H+ W6 x; L) C0 O: F** Input - Frame Sync, Clock and Serializer Rx" ^9 n$ j. a0 Z9 F! P8 X
** Output - Serializer Tx is connected to the input of the codec / H. S/ e& H" I# N# A. T9 Z
*/
0 a0 Q: d8 [, t& ^1 y% SMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' O; ~4 Q# S1 ^5 Z4 P
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! ?- X+ N+ X! G) R  zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 G; G; l/ S' [; Y" C| MCASP_PIN_ACLKX/ h: K. ?9 ~! Q. t. U& |5 O
| MCASP_PIN_AHCLKX& ]9 A! I; e+ K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 p  k  p0 u) ~; I( Z6 u* {; t( Y' cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' m5 t7 r5 u* Q4 U9 `& u2 v| MCASP_TX_CLKFAIL 2 U& y; `3 ^  W0 _
| MCASP_TX_SYNCERROR. I8 s! M1 ^. O
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & i0 H. F+ g0 ?4 v
| MCASP_RX_CLKFAIL
; v0 j; t0 v$ m| MCASP_RX_SYNCERROR 4 j( y# J* y7 a' s
| MCASP_RX_OVERRUN);
' @& G% X8 V5 G, O}
static void I2SDataTxRxActivate(void)6 K3 D0 y: b1 o  _1 s
{
( n3 k0 u3 O9 \) B0 G# A/* Start the clocks */
" Q& r. {" n& K' o- iMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 U* \) l5 C* e$ P4 l3 v) d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 U$ ?6 E$ \4 M3 A
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
. ^7 x: m8 n8 }0 a( |# r; }EDMA3_TRIG_MODE_EVENT);
; U. J: A  @2 Q/ q! M+ Z+ \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 K# o, H0 c( O( w* [4 {6 [, o
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
# a4 X5 G+ `1 j0 o# C) \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) [" c: M: x6 V" A2 U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 l3 a- d( ]" {# ]: p! P
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ m: v' v' P) f0 b% [
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 \2 S7 [4 n% l' y( X0 j4 L; Q7 {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ J! d# i4 [6 f8 d# v8 C# s}

3 B2 O2 P( Y% E* d$ v# H5 _0 L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

( N5 G! B. F# U/ F+ P8 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 18:08 , Processed in 0.045128 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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