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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,4 D/ `3 I9 M5 m8 X2 B. v% T
input mcasp_ahclkx,
) `. c6 U! c! Y, g4 _8 A# `( k8 pinput mcasp_aclkx,0 w5 w; _  T7 K" x# n5 b8 B( V
input axr0,
! q+ U. ?( W0 Z7 |
# m4 t# ~. Y) n. i4 N3 goutput mcasp_afsr,
: H, B: Z4 E' @6 X% w% n1 xoutput mcasp_ahclkr,
$ y9 Z+ g1 Z6 r& F) a  ^; ?7 joutput mcasp_aclkr,
* [9 G3 L# F! n4 y$ z3 Houtput axr1,$ A* n1 D$ O, `: ~; o
assign mcasp_afsr = mcasp_afsx;; L- u* b. x5 W* w6 E& o* j
assign mcasp_aclkr = mcasp_aclkx;
( Q* H/ G( l5 E5 g- h" H8 uassign mcasp_ahclkr = mcasp_ahclkx;) }% m% y/ o  W; G2 |. K' w) L( [
assign axr1 = axr0;

1 @' h* f6 Z/ ^5 f# _9 h: t- }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 _+ G& d, T% i0 P/ e
static void McASPI2SConfigure(void)
# p! m) s/ R5 R7 d. m{& X  }6 g+ D% @( f6 u0 z) [
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  z9 _! B8 h9 u) A# x0 a8 [
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */: e( z% H* o$ ]$ K# J+ P% g
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% p/ m) v4 _) {4 GMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- G3 B' Y. N+ g) I' z5 IMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% z. O; {8 h! T) i% @MCASP_RX_MODE_DMA);
9 i  \3 ~; M# _  TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* `/ q; u, H7 {MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
! n7 e7 \  q1 T) b! m3 K8 _McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 Y5 i4 Z' S) }  O( }MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
+ ]) R6 O7 N# [% R1 zMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ) E/ S8 L& s1 \$ S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& O/ q9 @+ C* X9 h0 g# u$ oMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ V# v- O0 t. F, ^) R1 JMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 `# @5 T6 K2 m8 D) P# dMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
- N) u4 v8 F' }: h* t; @1 E9 W0 w0x00, 0xFF);
/* configure the clock for transmitter */8 y! y7 V. K/ p8 U. {& T( \, a
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 g" Q; K7 h) ?6 Y, ~6 y
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; a4 m0 L4 R* O4 }9 D! a% FMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- y# w+ m5 Y6 H! A9 p" [, Q9 Q1 j0x00, 0xFF);
' ~5 u5 `" }6 `' p8 f: u. U1 {, k# T; W: N0 g$ a' _: a
/* Enable synchronization of RX and TX sections */ % C+ N# @0 Y! Y" {: l* b
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
: s3 v+ ~" o  ]$ Q- ~0 {$ @5 A9 DMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. w$ U0 t4 C$ U# u0 B9 QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  s% P1 h9 V, w5 d** Set the serializers, Currently only one serializer is set as; c" R; j3 r3 \( x6 I. y
** transmitter and one serializer as receiver.
' G! P- Z" }  t& f' n2 S*/! ]4 x' `( ^! e- b# K/ ?+ H
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( I, d% F  ~6 U; t
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 u* u! T0 z! _# m" ]* F0 M. A
** Configure the McASP pins
( ^& q( q2 T6 C4 N; Z** Input - Frame Sync, Clock and Serializer Rx
, \6 M  x) C% M& u** Output - Serializer Tx is connected to the input of the codec
* s; R) b; G! h. ^! r% s/ S1 m7 r- g*/. @; }0 o% z4 [8 i+ }
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 v: ^, p6 K+ }9 ]  \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 _  ~4 X  N+ {1 i  }6 V6 \McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. V& P1 P4 C7 E  R. L; Z3 H| MCASP_PIN_ACLKX, ~5 B# q3 }7 o
| MCASP_PIN_AHCLKX
% E4 b& E. F5 }0 R& F: T3 Q| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  G6 x6 q5 \  B  |- z. s) z3 q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ) S; M+ W( m  h3 @7 I
| MCASP_TX_CLKFAIL
! `  d" J2 T% l* D: z| MCASP_TX_SYNCERROR$ t8 l) k% [0 x
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, i0 o2 I* G/ z4 N* S% a- y2 Q) w" `: o: v| MCASP_RX_CLKFAIL& v3 ]5 Q/ _& I$ n
| MCASP_RX_SYNCERROR 8 v0 L0 v3 l1 D. s0 b# L
| MCASP_RX_OVERRUN);
4 U- a& }5 X/ n/ U7 j# L  P+ f}
static void I2SDataTxRxActivate(void)
% l; a! D6 p+ l: i3 L$ N{
# e4 M! n, U9 k" o$ j, ?/* Start the clocks */2 i# e5 o* T$ {% T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! A% N$ H) y6 H8 \, w. g% b3 p
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 f& u, |- U2 V8 L+ W" g5 N9 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,$ B; A) _9 W3 R, D& U/ |
EDMA3_TRIG_MODE_EVENT);
- Q; Q* p5 X. S0 B8 X5 l+ u+ i# cEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 |0 Z) g7 I. A# _EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
+ d# a8 W9 e9 D1 E+ c! OMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 P- d8 v; R% P0 t8 x! FMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
" t% z1 e" {+ Ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% u3 E: `6 c4 R
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: D1 n# ~7 P4 A0 Z  }4 k- }McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 n' ?& U+ m9 O9 j* G# L: ^}

* u  n$ o1 S/ z0 E& c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

& U. W! r+ }+ a8 A& k4 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-21 21:43 , Processed in 0.047636 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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