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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1210

积分

金牌会员

Rank: 6Rank: 6

积分
1210
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
. P5 f9 _* G; q; X$ ninput mcasp_ahclkx,
. a  g# q2 C( g% C7 uinput mcasp_aclkx,& Y0 G0 Y4 x, z* e6 r* U
input axr0,/ l- Y: J% Q, s4 W

1 Y  z5 A9 V% Q: routput mcasp_afsr,' V9 v% I6 e/ m; l( |; z; L& D
output mcasp_ahclkr,
* I& q% t  g2 A" d+ houtput mcasp_aclkr,% Q: ^4 q( ^3 q. U
output axr1,
' W9 O* |/ R6 A* J" }
assign mcasp_afsr = mcasp_afsx;
/ l* o& O7 g- U7 c5 ~( \8 H) Tassign mcasp_aclkr = mcasp_aclkx;/ f$ @% }5 U4 q4 ]1 a
assign mcasp_ahclkr = mcasp_ahclkx;* n4 x8 O9 p# O5 v% S3 T
assign axr1 = axr0;
) a3 h/ s- ^3 V2 \

/ ~! A9 w9 m% c% n( f& T6 o
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, n, U6 l8 t& l! q6 L3 J# f
static void McASPI2SConfigure(void)
% S; P1 q+ b& I' y! Q  c& B* L{
' [9 |4 k& a4 ?' ]) f* kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 E) q5 B; j4 x1 yMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) z: D! G, b* tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ |) c! E7 b! B, i9 M
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */$ I7 w2 ~% u7 u( T2 i2 b- r
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* m0 A# a9 L7 s% J4 J5 V$ G' p  d! q
MCASP_RX_MODE_DMA);
  _5 g4 o  r6 _3 {3 {6 [0 CMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% u  z' v1 a* w3 l0 i2 w( }( E
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 @- _" n6 M$ k. H# \/ U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. O. W# ~$ s" K0 f# `' EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
( `& h8 X( R9 R5 uMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 4 t% W% B  F1 V# h# t
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; A7 T3 E$ b$ u3 wMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 q, d0 a9 F& hMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
# @% B  j% }3 a- X/ yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 O: L# }- N9 D7 ^0x00, 0xFF);
/* configure the clock for transmitter */
9 D8 D5 Z+ \/ d3 [% b; TMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: i8 @$ [5 H$ j7 t/ O) W- C: E. U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 o, L( S: {. U0 u0 S4 @# X+ Y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, D1 M" e" u  |, r
0x00, 0xFF);
. {, p, _# a# O, O# g& R7 S/ C7 R4 J, I- |& w  z/ e+ i) S$ W
/* Enable synchronization of RX and TX sections */
, C& n; o6 L1 |7 sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 @% r+ |# ~% P4 H4 B2 [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, D1 B  B, }% T0 y+ r/ _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 A1 v6 J8 B( o2 j8 h) o** Set the serializers, Currently only one serializer is set as
% V* C  f3 ]+ A& i** transmitter and one serializer as receiver.$ e( }, [, K. W7 n
*/
" T! D) L' y) H$ w  LMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 K6 @- s5 W) G+ GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
7 C8 }) H5 `$ J" [2 J: n** Configure the McASP pins % \3 F4 H2 D" r
** Input - Frame Sync, Clock and Serializer Rx' \! I( \' M6 a7 n9 o
** Output - Serializer Tx is connected to the input of the codec
. n' _3 V' p4 }*/. }2 c0 k* R! N; k1 A% v( p8 f# j9 N
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" u4 ]' \1 x+ Q/ S
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! E/ h# t& Z2 Z0 C8 y# d, VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( T8 B& v- Q) T3 ^
| MCASP_PIN_ACLKX
6 b/ i# }: j1 G7 d| MCASP_PIN_AHCLKX/ l! ?0 s! v/ [$ O/ s! n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; W( \5 u  p+ x  g+ j7 A6 k# S  j; B6 C
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 4 A( z# R( ?5 l6 S9 v, E$ z/ p
| MCASP_TX_CLKFAIL
' a# S4 a. t0 N' ?| MCASP_TX_SYNCERROR" {" S" T. v5 J
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 S. S9 |3 s' K% D& X" f$ s' v
| MCASP_RX_CLKFAIL6 ^5 O6 f0 B% |( x2 m: q/ I: q
| MCASP_RX_SYNCERROR
( p* B/ b2 \; a3 X/ e' {1 I) H| MCASP_RX_OVERRUN);
7 z. P, W2 o& t}
static void I2SDataTxRxActivate(void)% [; L* [; X; _8 l' h4 C
{: W9 n9 A! h. [+ d
/* Start the clocks */) z% y6 E& m7 R; V, m9 l8 T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" `1 d) M( U4 H
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 [  |5 N  b$ Q) Q: G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  F, _  P3 Z  `1 h/ m8 EEDMA3_TRIG_MODE_EVENT);
8 N7 n) f7 @' G0 N( b/ [; ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
0 i' w1 D; _9 {! |EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  N+ J3 ]! s6 D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 v" y9 l( x, c! i+ S- HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ {4 z  E/ r9 r. x# l& ]. dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 j- b) Q/ _  LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);$ m+ ^" J. @9 q* X# q) ?
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
" f5 @. k/ E" A' O3 x8 S}

9 |7 m7 h" g7 ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& F# b! r5 ]1 G; }5 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 19:47 , Processed in 0.038570 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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