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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
$ p( {+ `+ u+ W/ }, z6 kinput mcasp_ahclkx,. ]& c7 O' T" Q9 [
input mcasp_aclkx,
# ^- H8 y* W. v  minput axr0,( X- {- ]6 m- @

# y2 y- _; E, r$ _1 B0 Ooutput mcasp_afsr,
0 q3 q0 D: r* [1 ^output mcasp_ahclkr,
# v% L7 `7 ?  Z, routput mcasp_aclkr,6 @. r9 S5 r# ]0 Y
output axr1,
. D0 k! h/ U% N% N7 j
assign mcasp_afsr = mcasp_afsx;
  X% G9 n: Z. @5 H" Y& J9 K1 uassign mcasp_aclkr = mcasp_aclkx;( F9 x+ \' F) S2 u- {
assign mcasp_ahclkr = mcasp_ahclkx;5 u" W" B* X  p$ }: d/ f, {
assign axr1 = axr0;
! b, }/ N7 N2 t! U$ a6 X* f; I2 B* Q

( E( R: k! x* n' q2 W0 p8 T3 D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 t+ ~' r) }- v7 b1 K6 Y2 D
static void McASPI2SConfigure(void): M7 L' \; f  ~7 B4 D! E& L
{, X/ u7 F6 _; a4 U7 W
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, d7 U7 V3 E0 w1 IMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 Z( n4 R1 |0 ^& {0 ~, q  C- f
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" }5 o3 G9 `, [& ?1 ]( p6 ~4 MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
6 F4 ?7 p# }) a  T: X; L- D% PMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 H( H& h/ e! L5 ?
MCASP_RX_MODE_DMA);$ L% w* Y- y- M
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# h8 R* ~0 T! j5 t- A: }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, W- y2 B# \8 DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " Q, d% b) h! ^9 W3 t& J, @
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: c; j* u; X# F, e" R
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * B8 w+ C# v$ M) W
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  F9 j  X8 C2 \1 I; |2 j  A/ rMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, d: m  c$ u& [' [" {. S
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* b8 ~2 h" {  {/ h2 n/ W9 B0 x  eMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,' d$ l, s" a) x6 O: u& C+ P1 t% Q; n$ j
0x00, 0xFF);
/* configure the clock for transmitter */
3 o/ a4 [4 t  @7 d: ]# i, UMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 b$ m; I# K  [9 e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% b9 J5 Q  D& I7 ^McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,8 |% v6 e+ a! n$ r/ }% K) C% [# ]3 n
0x00, 0xFF);) w0 a+ n9 q  B; X* ~' A' Z1 M
# T; J7 m# S0 B, g9 D$ b
/* Enable synchronization of RX and TX sections */ : G: P+ `( j* X8 @
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& X* F0 [4 q6 e8 Q/ y7 r) d) C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);& A% ~4 J: t* {3 Z# }$ z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
8 _% d& X0 y6 R, i0 I** Set the serializers, Currently only one serializer is set as& ?: |0 d8 e( D- D) X+ c- v4 ^6 H
** transmitter and one serializer as receiver.
; }' l  @' p) {1 K*/
( i4 u4 T& v: z' mMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) ^! W  c9 O4 S! z! A& e% g
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* \3 }  |" m6 k' ?, {** Configure the McASP pins 0 d4 R, [0 d' Q# d9 h
** Input - Frame Sync, Clock and Serializer Rx! f$ R' J+ a+ q0 L0 W
** Output - Serializer Tx is connected to the input of the codec
6 c; m8 B. x% G*/
$ n! J6 h; p5 L( [4 T( n9 ?& G! vMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 P) p  m# J, J, N5 iMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ ]1 @: J3 D0 j, A% S" sMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 _* j  Q2 q3 p! y% |& z4 w
| MCASP_PIN_ACLKX7 T* m  G/ U6 i- ?- o7 \
| MCASP_PIN_AHCLKX, w6 t8 i8 L/ T9 `9 v0 x: a8 {8 w
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' s7 r. X: H1 @  ?) H
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. m! e6 l7 D- @, h  l| MCASP_TX_CLKFAIL ( [/ ~; Z. v% {; S3 O* Z7 m
| MCASP_TX_SYNCERROR/ r4 ]! Z0 o: r
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 b1 \6 F. Q8 O/ L: J  [, @
| MCASP_RX_CLKFAIL7 \. @  j7 ~" ~  ], o; c
| MCASP_RX_SYNCERROR
( D! i4 h3 `" A: S3 E| MCASP_RX_OVERRUN);
/ h. {# r2 ?4 S$ T% h5 l}
static void I2SDataTxRxActivate(void)9 Y  P( G0 Y7 ?1 C% F' l
{% u$ n. }: M2 ?( e8 G
/* Start the clocks */. Q2 y0 T4 R* _! q+ |  z2 i5 g
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
( q8 m; Y+ g( k2 D7 r  x) D! B& \McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 Y$ x1 M) J+ T9 {# S3 _
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& _7 r2 Z/ v: E& e! r% ~EDMA3_TRIG_MODE_EVENT);* q6 W% A; O! b0 W5 `0 S( f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: \7 [# y7 Z) a& h  }0 r1 [1 kEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 G* P  N* Q4 z1 W& p3 T) _McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 }3 h9 E1 r4 K  a; ~0 Y$ U3 {% ~5 V. r  S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ N/ J, z" ?* C, k  M& M# Mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" m" f/ @/ V9 M" |
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 l1 f2 b+ V8 y% o
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: `' U% h: q" U& }: U& Y
}

6 v' f4 }& ]- m9 u3 b
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. P2 ?! \  A+ F$ {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-8 04:20 , Processed in 0.040488 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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