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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11070|回复: 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,
, o9 G: q' v7 M* @: g" }- pinput mcasp_ahclkx,
- I( ~9 T5 A+ O: uinput mcasp_aclkx,
. J$ d/ V0 Q, ~6 W, ainput axr0,- i! e  _" X5 V; u& H; B1 O
% H: q# q6 w$ i4 h" s. s+ R
output mcasp_afsr,
# I: O/ K$ Z! Routput mcasp_ahclkr,$ g2 B' J( a' y8 i
output mcasp_aclkr,. W. S0 I$ J9 ~/ m
output axr1,
7 w# [0 S( e. y) |5 I; }
assign mcasp_afsr = mcasp_afsx;
& _: r, q) K' g: R1 ^assign mcasp_aclkr = mcasp_aclkx;
" T; S5 u1 z, d1 ?( }3 Kassign mcasp_ahclkr = mcasp_ahclkx;
! B& C2 b" K- I/ l+ @assign axr1 = axr0;

! a; m/ A. K! P4 c( F6 E0 f0 n! ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( j4 {, U1 w+ ?
static void McASPI2SConfigure(void)# [1 J% i3 y7 t* O! N5 Z: h& i
{
$ U9 j9 I) {( F" LMcASPRxReset(SOC_MCASP_0_CTRL_REGS);: I; {/ {2 r! I% `5 w5 f+ y$ z" q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
, U( a. N0 y5 [- a, |' ZMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: z# g  ]7 p* JMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 b; C/ B" Y6 J- A3 [McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' ^& N! E$ i9 u
MCASP_RX_MODE_DMA);( g' v: D3 r, \+ }" Z" T$ D+ y$ V* C
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 |" {/ [) M' Y9 v. v; i
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; k3 f4 R! t5 |1 @# i  ?& D5 z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
3 |/ n  L+ F" ~1 @9 X! cMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
1 @+ n+ Q: V9 _6 \9 ~McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 V9 y3 b8 e4 GMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 N5 v: [9 k# c) q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ s7 A5 L* k& L9 h" f7 M
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 4 _% c+ |6 H9 h3 I; M: l
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 I" e) ^/ J% i5 T: x- Q0x00, 0xFF);
/* configure the clock for transmitter */' D! e+ D! r! r7 Z' u* f) @
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 h1 g+ P% [& x$ a3 x& t
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; m. I+ e3 T+ h1 B
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; F# }6 j: ^3 w! Z; Z; S& Y& s) C2 |0x00, 0xFF);
3 K6 I4 ~% A- ]# M2 b0 m& V! Z* i* ]7 \  q4 @) O; B
/* Enable synchronization of RX and TX sections */ 4 {! x! B+ W6 a% ~$ P! V" p7 D
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, s: ?& `; [* [& I6 M" J
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
" K% u- h9 {0 aMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; Z( z' o" ~* G5 ^$ ?7 p, b
** Set the serializers, Currently only one serializer is set as
' l) i3 r8 H* B. g& \# h7 |** transmitter and one serializer as receiver.
8 J$ S7 T5 O0 `" N7 ?/ T*/# N, r/ }7 F' b9 E1 ]5 ~3 N
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 P. _9 G  f4 v
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 B: b7 s5 W5 ~
** Configure the McASP pins 5 C, H5 ]9 s! ~4 ^
** Input - Frame Sync, Clock and Serializer Rx$ l' D  c. r' z1 b
** Output - Serializer Tx is connected to the input of the codec
8 y, ~$ A3 s3 g*/# m, P; e" Y  |# s2 ?+ _
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* ?3 W% Q9 j: ~; ?2 G
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 D/ M/ R6 [8 e4 U) h; Z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 r% Z3 I/ X$ P. r" U4 n| MCASP_PIN_ACLKX
) p: `' U0 x+ |0 P# X| MCASP_PIN_AHCLKX
! W+ l: k, x; l. H  M- H! X! o  I| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ e; }7 N# Y0 D+ N' g5 o) |  N( b& j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : {; q. d$ V4 ^: U! `0 q) p
| MCASP_TX_CLKFAIL
) r% E% x+ G! j! N| MCASP_TX_SYNCERROR
/ J9 @8 `( U$ N& {$ _( T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( {, k( k$ A0 o| MCASP_RX_CLKFAIL
3 K5 \1 U: Q7 f! P0 y| MCASP_RX_SYNCERROR , i8 X3 Q  K: M
| MCASP_RX_OVERRUN);4 h8 _2 D' g4 ]9 i6 A
}
static void I2SDataTxRxActivate(void)
' _3 [& c" w( e# j# [{1 X  [3 z. k+ R$ I
/* Start the clocks */$ y( I3 O! J- _0 s) Z+ T
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ U7 w2 F8 E% \% n" GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 M! ?- R6 s9 B8 yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ K$ V: F5 A. r  L. w& W
EDMA3_TRIG_MODE_EVENT);
* a- ~- j+ }  ~' D0 Z! E6 g- A* ]" \EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 T5 n0 r" U* w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 Q% b/ L" w, m+ aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# j' ?+ C0 J  p+ ?3 ]6 mMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( T' `4 k7 B+ Y& P$ B+ K! Z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 c) W$ S2 m0 N. m$ N5 h2 [4 Y8 kMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 U* W* r; c2 x& x  o
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 s- ^6 I+ i# l: F7 o3 c; \% p}
) @0 C# t- M/ m; F0 M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 J, H5 d- t9 [/ C; a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 17:18 , Processed in 0.040965 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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