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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12148|回复: 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,: d. r7 ?! R) j1 E
input mcasp_ahclkx,7 |$ H8 v0 K3 P3 ?% S
input mcasp_aclkx,3 r1 o2 w: U. S- S4 p& [$ J
input axr0,- x- t/ k% K; M8 P3 X

) @0 \! Q* u/ i* Zoutput mcasp_afsr,1 p. Z1 E+ ^% B
output mcasp_ahclkr,4 b1 V) [/ s1 n
output mcasp_aclkr,
6 X8 g7 n! E8 U6 @$ routput axr1,
/ V7 X" C6 E. S  g/ f& D
assign mcasp_afsr = mcasp_afsx;" d5 c( B* `1 G/ w9 F. L. t8 s
assign mcasp_aclkr = mcasp_aclkx;  V5 b) \0 Z1 P/ Q6 w* K% ?; N) T
assign mcasp_ahclkr = mcasp_ahclkx;
6 d2 G: H. ?) l4 k3 t" l" }, `% Eassign axr1 = axr0;

; o1 n+ L3 Y+ ?: b( f9 N* z4 P  u
. P0 U1 Y7 W: S1 V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

+ ^6 \; c" G! P6 l1 Z  }& x2 {' E
static void McASPI2SConfigure(void); @1 i- w8 b3 @; i5 a, U
{
. {9 p/ _9 `% t) f! c. \' s0 V: LMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
  f  l1 |/ w$ S8 f; ^; ]McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 R; c1 E( _' v2 n& r% T& C
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 b+ y  A. C# R" r) }7 _$ N
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
0 r2 I1 ?* Y" o9 i' s" QMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ f/ }& n) n* [! i6 J2 F0 W1 d
MCASP_RX_MODE_DMA);) E( M; i$ v( ?! ]1 h/ n5 _
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ }5 Q8 k7 w9 T) WMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
3 b, b4 s) a, O& ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
) \1 a6 S' A( n( V% Q* ]0 F1 QMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 _: C( `. |, {  J5 [" ^0 ~3 J
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 q) [) E4 _) U# V0 {MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 w) {1 }! T: V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 e& S2 T9 B: K! T' ?9 Z
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , A. ^$ z) k/ |# t% d, Z" g5 W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( m. o" m, R& q, z  C
0x00, 0xFF);
/* configure the clock for transmitter */
, P: n- t& {" I' t: ?. I; Z; W1 kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ b' i) _& z" m6 M% P
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 k0 Q- e' j: u: O' R: h* ZMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 h! [8 d: V% F  ~: n/ w1 Z0x00, 0xFF);
+ b" i3 N, O/ M  E6 A3 M1 s+ R) R
/ x, @$ \7 m) x/* Enable synchronization of RX and TX sections */
" h* ]$ O1 V  s" BMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ y( q1 G) ?8 y7 C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% L. l6 w& y  t/ W$ L# o) ~McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# b, O1 E+ t! w) X
** Set the serializers, Currently only one serializer is set as
' ?* j& V5 K3 c% Z7 A0 n** transmitter and one serializer as receiver.
: o5 e) u" J6 a, Y*/+ s, B9 E  i" I% T" N# X
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 \+ w4 w) {7 E5 E" |0 VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 z. c. M' N2 x2 m  [
** Configure the McASP pins
$ \: |$ h, C" u% G/ }  t** Input - Frame Sync, Clock and Serializer Rx9 Q/ v. }& s$ k* Z" X# P  w9 {
** Output - Serializer Tx is connected to the input of the codec
9 H* e) s2 S$ R( w& v*/* S3 d! G) ^! `$ J
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ o9 }$ a- t. H" U  }' _4 ]3 |
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));* P" o& {8 y/ N7 z. B* H" h! Z5 }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( j  N& o( v) G" P  s0 S2 e/ s3 `2 c) G| MCASP_PIN_ACLKX
0 x/ G& L9 I9 R5 O| MCASP_PIN_AHCLKX
7 O7 V) k( w0 _1 B| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 a! d) h( n# K( w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 m0 j' G4 N/ C% x+ h| MCASP_TX_CLKFAIL & U3 v2 {+ ]( Q; q8 K$ l
| MCASP_TX_SYNCERROR
6 e; d% S; E( h3 m| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 h( [3 i/ y7 j# Z8 ~9 X$ f1 ~6 y
| MCASP_RX_CLKFAIL2 E/ y  q% \' A! b5 f7 {+ x
| MCASP_RX_SYNCERROR $ M0 w% q% O  l  T
| MCASP_RX_OVERRUN);
8 w% @7 L$ z- t3 g3 y6 M& Z}
static void I2SDataTxRxActivate(void)* g: x/ [  l2 l
{
! b0 `1 D4 b3 P4 L/* Start the clocks */
: {- O  }$ L) M# F8 ^McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- z2 _4 G9 a+ }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
, i+ K7 l& X) Q  a: TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,' @0 d$ l) }8 h) n
EDMA3_TRIG_MODE_EVENT);
' [. @) j) T7 Y# LEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " z! n/ d9 P6 {2 y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% |1 |9 f/ S# e0 j& y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);( g. M9 c' O% |; S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// G$ c$ x9 t" H- j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ ?1 v! L3 k/ U7 v: T+ ?& VMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);, C$ z  ^+ f  `) T4 F% V( o& n
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- ?0 h7 o5 V9 o}

1 d+ t! D  O& x# w8 Q) r' E2 h
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# G+ K8 d7 d  W7 K4 \' |+ `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-30 08:23 , Processed in 0.046548 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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