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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
1 \/ K9 i* v# Z8 _! C1 Linput mcasp_ahclkx,# q& v& a1 A$ s7 f3 K2 F2 Y
input mcasp_aclkx,; x5 W% K) j) C2 h& t
input axr0,/ B) H- v7 \9 Y9 Y4 S; m7 ]

3 b5 m, W' G7 r! w. R$ m) ioutput mcasp_afsr,
: D0 a1 C7 }. Y+ m) J% l8 `output mcasp_ahclkr,
  f! t; m, V5 W, C& Joutput mcasp_aclkr,' i) E/ |7 e- r2 w
output axr1,. c4 o5 p8 z) d: T1 L/ ^
assign mcasp_afsr = mcasp_afsx;
2 z, ]4 g7 e9 Q$ `assign mcasp_aclkr = mcasp_aclkx;
) Z! Y/ n8 Y7 _6 g; r" _4 {5 xassign mcasp_ahclkr = mcasp_ahclkx;
! R# k! e) x9 }assign axr1 = axr0;
' N$ f4 F2 m; i! V7 p
3 O7 o% W% z: V0 {; b
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 U; Q- Q( V! ]5 E8 ?/ _  r
static void McASPI2SConfigure(void)( Q& s! Q3 P- c5 h
{
5 p8 Y! l) T3 F3 h* sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 Z' F2 d0 Z, y9 a; @' P2 qMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. h+ g" E& p. Z& p5 `  I/ j+ T  z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);9 i- Z7 ~6 y9 l% X: U
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* h6 Q. ^) d* ?! e) g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: W- E7 w7 e  y. i4 WMCASP_RX_MODE_DMA);3 k) S& S- d; t: {
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; l8 l) s2 r* g" t/ k) u1 O4 fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 B) ^$ ^! x: c, HMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" Z& t& d2 k9 V, M8 i" q- WMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' G) p& r) u; T5 H7 Q. X+ G& q% u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
: d0 [# F" y/ `8 t0 L" z) rMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' w& t$ Z" n' |5 |, X
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) W) M+ p6 Q$ R' @' E' s% P, wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ' K2 q1 t* V4 ]" h# j* [/ g
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ q; `# H4 X0 |9 h$ |8 E- {0x00, 0xFF);
/* configure the clock for transmitter */
# p5 N* W" }9 _$ [) [& \( V* VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 n+ g, H, P- @0 e4 ^! Q' ~; o
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
7 H1 k  G7 z6 M" P) MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 `! z2 m1 h/ D& s- u0x00, 0xFF);, G% T/ ~% c% W5 g
9 r- ?( z+ c5 W1 x6 G2 c' d
/* Enable synchronization of RX and TX sections */
* _% L# }, ~; n4 U( p" Z. NMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */6 n9 [9 w! `$ q4 V% Z# x5 a) p
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- X  ^2 `  f0 o/ g/ D+ V
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*, r; q: u. O) T: n5 g
** Set the serializers, Currently only one serializer is set as
& H6 z, w" j6 ^' L** transmitter and one serializer as receiver.& r1 s+ r, ^* W6 {! y: b- e
*/, \2 [, F2 x0 {* X8 r
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
5 S' Z7 @5 q% _0 z7 M: h" d5 qMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 \+ s6 }9 [5 X* R" U/ [** Configure the McASP pins
, U- L& S% T; n# M$ x5 U** Input - Frame Sync, Clock and Serializer Rx2 O$ }6 Y) g: g/ P/ d
** Output - Serializer Tx is connected to the input of the codec
; V) U7 s" \$ U; Z*/2 p5 L+ M" q" M1 J  X8 a7 w) a
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
% z/ Y, v& d2 {4 P5 _* {0 B$ CMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 y" S0 A: Y. {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( e/ E7 X. _+ N0 Q+ C
| MCASP_PIN_ACLKX
/ ~& j9 R6 B4 V4 _| MCASP_PIN_AHCLKX, b& o4 ^: Q9 V7 I  e
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# j/ W  I: t1 D8 ]: W8 x/ T
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. E& H7 N9 j/ p7 N  \! k2 m| MCASP_TX_CLKFAIL / w/ }: w# O6 L( \3 ^9 K7 O
| MCASP_TX_SYNCERROR
( h3 [8 X' b$ L& V6 k2 `6 e% N| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR & G7 r+ S, P3 c+ p
| MCASP_RX_CLKFAIL9 h' M. ?" f) g: w$ J" g: x7 B
| MCASP_RX_SYNCERROR + \2 B& r4 I$ [  n' \1 l2 i/ Q
| MCASP_RX_OVERRUN);. D: f, J: R8 x( U3 p$ N% s* H
}
static void I2SDataTxRxActivate(void)( K' V  y7 q" m, v
{% s  P; D0 U7 n2 e4 G
/* Start the clocks */  m( T6 Z  m( o) {5 f3 l. U# g; l1 I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
6 Y  T5 L' ]$ M6 x8 K7 {0 |; cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// g1 k9 f- S8 G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- L( d# K: h% C) M3 l' \
EDMA3_TRIG_MODE_EVENT);
0 B& C$ q1 A, l' |( G' ^EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % a; r4 a& d. ~+ L
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% p3 j5 }/ E7 B$ l8 b( l/ l3 bMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- T- Q  Y/ B6 E& q' k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 O* Z4 O, k# [
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */% N1 i7 @" H. H4 P% R6 C
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);( P9 j5 j% w# B' b$ Z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);# }; }7 C# O" z5 Q  Q) c2 e
}

1 V% Z" W6 N4 u: c" g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ @' P* c8 X$ {6 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-21 21:28 , Processed in 0.038918 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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