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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11910|回复: 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,. A# n# L5 O' W( G9 W
input mcasp_ahclkx,
1 @5 @. \$ a9 q- x( d0 ?: pinput mcasp_aclkx,4 z0 A7 b, L+ j  S6 M3 u' ]
input axr0,
  w; g* V$ a2 l1 @3 Q& |' A8 E+ N+ D  d, T" _" q
output mcasp_afsr,# @1 F' Z/ K) R' v3 M' y
output mcasp_ahclkr,0 g" E0 f+ i+ P3 u. y
output mcasp_aclkr,: L" p+ V* z2 B4 l' t! S8 M& A
output axr1,6 s! ~. Y/ O# v
assign mcasp_afsr = mcasp_afsx;$ F, a5 E- a7 [2 t( `4 _. ]! A
assign mcasp_aclkr = mcasp_aclkx;
( `* |3 G2 {- v( f. `assign mcasp_ahclkr = mcasp_ahclkx;# b& b+ M. |; J' u) {
assign axr1 = axr0;
1 R2 t7 j- a  m4 D7 @

. d8 V. H* C5 Q% @# Z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 T/ ^7 v$ L( y1 v. m+ G4 A6 n
static void McASPI2SConfigure(void)9 t  }" @7 z% I9 M! l; k
{
. o# g) t! `% p5 sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);7 S! j8 {0 l, C6 o, v( ]
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// _, ]! ?9 v- l1 t9 B
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 ^# _; E3 k7 }2 D; P
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */" E/ V( H. B# q( z+ \. H
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, y4 K3 J: H8 DMCASP_RX_MODE_DMA);
+ R6 M- M7 J# b0 m5 |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# E  R; c! a! F& e; _$ m
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 j; [% d, |$ @& T/ h/ \8 |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 Q9 @+ {! j. H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 F. \) }1 N0 k; o5 n8 s
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % \& T+ [! |# p# u0 n, n
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) D" [  u: U4 nMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* E! i7 k: R) C# i. \$ K- n5 yMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 5 g' x3 P( Q. P" e
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% N7 R( s+ p; v9 v/ l4 ]4 C0x00, 0xFF);
/* configure the clock for transmitter */
. ?9 W, P: s; `/ P( G% |$ p, ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
9 a& v$ K( d- n5 i3 Q$ VMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 T+ f/ q. ^5 V  |3 [6 L- dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' Y3 C* n4 c# @+ d
0x00, 0xFF);: D" @* q' S& w" |3 ?& c8 n

1 b0 A) l6 m3 F. u& T  V/* Enable synchronization of RX and TX sections */ ' t3 g* o2 y3 `
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* U) V% |* C" e, w; M' u9 Y  ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% J. k* W' t8 L1 i# N, bMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*8 \! }$ O% I! G) p; B  q
** Set the serializers, Currently only one serializer is set as
; L0 l  ^0 `( I; h, ?** transmitter and one serializer as receiver.
& Z$ t8 A9 o- ^4 t+ P" l' T9 E*/7 s" F+ C# w# {# P9 F! @/ O: w
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 i+ {9 u( l9 N2 B0 a  C6 U: iMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  }) U- u  r. l8 a2 a' D8 C2 V** Configure the McASP pins
5 V! k& ?) y+ x8 n6 R; g** Input - Frame Sync, Clock and Serializer Rx; B" y; P- V" W% n( b/ {
** Output - Serializer Tx is connected to the input of the codec $ m  t- f: f0 V& N! e% }) V
*/0 z& ?# {' U7 T* s& S9 L: `
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* E5 `7 e+ N3 I2 A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 k- ^* b  [6 kMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" S" [3 \, ?( I- T0 x# E8 A- Z| MCASP_PIN_ACLKX
  {4 L7 x' ~6 i# }: [| MCASP_PIN_AHCLKX
' q1 q- w6 D$ `0 v, i$ G| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  [5 c# X  @2 z! j3 _% ]7 X
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : y7 }6 P. B' r0 i6 l! ~7 J/ U3 j
| MCASP_TX_CLKFAIL
& t- D# v; e8 Z3 y+ @- N; f  u0 J7 R$ H| MCASP_TX_SYNCERROR) h! w, l& H  q6 w  L* h* s. l
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " @. r' W6 ?! z* C' z8 [' J  g& l* f7 X
| MCASP_RX_CLKFAIL: C) d% k; c% x$ N% b& Z( U5 H
| MCASP_RX_SYNCERROR
6 l" Z6 C' C0 w( v/ i4 p7 [, s| MCASP_RX_OVERRUN);
) L( N4 B& Y: [* @+ f. `! g}
static void I2SDataTxRxActivate(void)
; J0 U+ ~6 b+ B4 k! X5 _{) u" b- I. M3 P, f! T. x7 [
/* Start the clocks */+ O2 i) Z: g: Y3 Z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  R* |6 j3 q# r; w4 lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: V7 G0 T+ V" q6 g3 n) b: o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# `8 D4 a* L! c7 @9 l4 n
EDMA3_TRIG_MODE_EVENT);: C( i: K4 p1 r% r8 c# ]/ Z9 Q1 n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) }6 m" Q5 Z  C# w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% f9 s+ J; }/ z7 K: ~/ ]McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);& D8 R7 O5 B0 ^; e; @& ~0 O
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, O9 }7 v6 i0 Q5 _. f+ R( k3 `while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 L3 N* C" r5 P7 yMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* L  n( u  T+ B% U$ V% _McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* d# O% y/ }) t8 A}

! n, ]5 ~+ t; M; O5 E5 ^6 f) p
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
; Q. F) z9 O, S9 x2 H4 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-20 01:16 , Processed in 0.038791 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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