MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,% x1 b7 K! [; A
input mcasp_ahclkx,
, x: J1 F  u5 |! \9 Sinput mcasp_aclkx,& s6 i! R% G- O1 N# {- L9 }7 N1 \: G
input axr0,. s& q* j9 P: f  x$ S# O9 o

6 n3 y0 @+ q% Eoutput mcasp_afsr,2 g$ q9 M; b7 G
output mcasp_ahclkr,
2 q* a( T: `8 L! D% z: A0 F- g( j% coutput mcasp_aclkr,9 m7 {# t5 ^" y* p0 M0 I
output axr1,4 V9 Z6 `' z) h/ c4 X+ G- G
assign mcasp_afsr = mcasp_afsx;
, S' L+ x  J' H6 M% nassign mcasp_aclkr = mcasp_aclkx;
) d+ \) e+ Y/ P: ~2 b* ^- _assign mcasp_ahclkr = mcasp_ahclkx;
. D0 @2 y0 p# h. C, P" h. E. I; xassign axr1 = axr0;

) g& W( g9 w2 f( x) W7 M+ D7 D# q) j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' }4 t9 x0 y$ q' W& z$ s3 ?
static void McASPI2SConfigure(void)
! m+ x# d9 q, ^{: E' k9 O+ o1 H2 d/ Y- L9 c' ~& @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 A2 G' j2 w" Y; Z0 K" SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ ~5 ?/ ~3 J2 r7 S: a3 h+ t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  K( x: Y. e$ }$ ^  W# ^" qMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 W" I  X, w$ [$ u! \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( ]$ @" K  F. x; A( O! Y7 N3 n, i
MCASP_RX_MODE_DMA);, Y- a( u: }" A$ L- o" K2 t
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  O' F) M/ D3 H5 n8 C* }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 h( ~1 X) b& k! @3 B- T2 {9 V4 U7 U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
) [0 R, s4 k) i5 X; x5 t# wMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
1 K! L* ~4 `- {" J8 P( I) XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 \  e! m" [6 k' iMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 c+ |" d& T5 k* a6 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 D0 S7 r5 @" L4 d- G* C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: ~8 w$ y  [& G7 g5 O" ]4 _McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! c* W; i) m' a! W0x00, 0xFF);
/* configure the clock for transmitter */. r( f; [. q8 ~! m8 T  J3 d
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 X' Z( ^! R' Y, Z7 h8 O3 X! tMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 4 [: n0 N, C8 z. Z4 L8 }# ~
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 m$ t5 W  O5 U& @$ g
0x00, 0xFF);
8 y& \: @4 x$ ]7 A2 R5 s2 }! {" O* K
" i- Z; l# t9 k6 S. D, N/* Enable synchronization of RX and TX sections */
9 p# n7 S) i7 g! nMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, }& W3 G3 H0 L$ S( `! o, VMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ X; ?) S' U- X+ m# Q* U/ o3 T
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% _, t  R5 B$ f/ S6 n# q% F** Set the serializers, Currently only one serializer is set as, f2 h1 h  H2 N( n) V& @1 b
** transmitter and one serializer as receiver.
1 m+ }; I6 h% P4 u" o*/
" W: i+ p* C. E! x& YMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  h$ x7 z- |* u" g% H; eMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 q4 y7 B2 s% {** Configure the McASP pins . y5 ?7 t; Y& q- y
** Input - Frame Sync, Clock and Serializer Rx; r$ S: Z! Q' b; ?  o% e7 k
** Output - Serializer Tx is connected to the input of the codec 4 B* t* C8 P6 Y% p% F0 b3 x
*/1 L( h+ \& `7 ^" o2 I$ ?
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 f. j7 z$ x: |- u$ f9 E! A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# i' J6 ~: D" e/ ~  g# _McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 Z9 Q4 m; `& v- G% r; ~| MCASP_PIN_ACLKX* R  z4 L2 O' q* w
| MCASP_PIN_AHCLKX) G# B# Q. d+ f( O# `; H2 b0 `
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, o3 }" r" G5 }  uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
: ]& G" w6 t" P) e! f; l- g| MCASP_TX_CLKFAIL # ^& D) _6 F- D7 {8 R; u
| MCASP_TX_SYNCERROR
+ ^' X7 ^" Q+ ~9 n  n3 r| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; k: l2 Q5 M# D) a5 r3 I" l/ N
| MCASP_RX_CLKFAIL% L1 k& X: c; F* H# f2 }: u+ j; `
| MCASP_RX_SYNCERROR 8 ?, K5 |$ E7 e$ C% {
| MCASP_RX_OVERRUN);
  d  w9 p+ F5 W9 ]7 i}
static void I2SDataTxRxActivate(void)8 e9 t) L  j8 i
{
+ f# H/ V: C) _/* Start the clocks */
+ {) f# G8 w" ?- n) d  kMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 v0 t! e3 R  F' L- D$ S0 m8 eMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 g1 X$ e  B- q6 M* a
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,/ O, o- c6 z7 y
EDMA3_TRIG_MODE_EVENT);# W" ]/ |* Y: t( z3 `6 [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . O, A0 r! C. [- y- X; H, {
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ z) ~4 i* v% j9 e8 M- J
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
* E  j4 F+ ^$ P  a  m8 a" TMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 k3 E2 d- }6 k# Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& p5 Z& P6 g5 [! _2 ZMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" [2 E  L% g. S3 iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% z/ e& d$ U0 F- r! r3 i}

$ Z: b- l( m% V/ @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 \6 ]5 y; P5 q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 10:29 , Processed in 0.038820 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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