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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
: B# z+ J: l' A! Q0 binput mcasp_ahclkx,+ ~' V. \6 f$ g! N3 h
input mcasp_aclkx,7 b0 I1 n2 d2 k8 U  o  }, ?
input axr0,
8 J2 s3 L, O7 N
2 w. X4 o) p5 h( z; i: n/ c( y& voutput mcasp_afsr,& R8 h: r" P7 u5 m! o7 j( t; a8 n
output mcasp_ahclkr,  F( k& v7 e3 `1 z, ~2 v
output mcasp_aclkr,2 w6 Q! S" Q1 E# h; j
output axr1,8 {7 \, d- v3 a
assign mcasp_afsr = mcasp_afsx;& T8 Y: T. k' x( c* G
assign mcasp_aclkr = mcasp_aclkx;
# K8 F+ K+ k& b# Z& W3 P5 Xassign mcasp_ahclkr = mcasp_ahclkx;
, \. P* X# w  s0 ?) Sassign axr1 = axr0;
" L: ^) W- G0 M
; j5 o. R4 [$ I1 a& T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 D  f$ d- z, Y0 K( J5 B# g
static void McASPI2SConfigure(void)
+ y5 @  B$ E4 f7 a{  B6 k; l9 a- n# A' Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);' q# }% O1 S6 U7 O$ {' _" s5 O
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 I/ ^0 p, Y7 F3 g9 O7 t  s3 `0 l% M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
8 J7 p  z) N) ]* [! zMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 X5 _5 _; `% I" Z: {/ X9 L+ L% l
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
; E/ y2 k2 ~, O4 M/ H2 d+ OMCASP_RX_MODE_DMA);
# Q; k% b: i) Z  j1 G; X& q! zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 z! L# s$ z9 @# U8 g
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 A6 T) R0 Y$ O1 ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 ]$ G4 d' ~, D" v- [
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% C' y+ H; j$ ?1 i2 h9 x' g8 kMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 6 T$ x5 Q1 q) O
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 J7 V( V# g2 I' P* |+ YMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 t) E# N) j- n1 A: I5 u+ }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% Y2 e! c0 U. f1 A7 X& vMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% T5 C$ q! I4 s: o2 b- x
0x00, 0xFF);
/* configure the clock for transmitter */1 J( I4 E, @0 |- L. j- c
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. ]6 }! n, ~+ I- Q; u6 I1 @* o' d0 f
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. q/ g3 r& b5 t, ]7 ?McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 q5 X, @5 j9 _7 K  }
0x00, 0xFF);0 V7 v, T; I$ C7 Y
+ Q! \8 I, z, K  h1 @5 C
/* Enable synchronization of RX and TX sections */
' j/ b5 K/ T# a& |6 B2 |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" s2 O2 U, ?# \! eMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! Q0 `7 \9 y7 sMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 W0 w* p# l7 q) c% |
** Set the serializers, Currently only one serializer is set as# h  |# f6 S% \9 y" |
** transmitter and one serializer as receiver.
2 r& f& M. T' H  R1 o*/' ]  e& l$ s- x4 T) y$ w+ w, K
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" c* v2 t. I, {& g9 p  h2 w
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 _8 x5 m$ m7 v  s; p** Configure the McASP pins
) H8 l4 o5 T/ v2 `4 j4 h** Input - Frame Sync, Clock and Serializer Rx
0 U; B8 N  ^1 {" v8 x' w** Output - Serializer Tx is connected to the input of the codec
# ^) D( W& ~# }7 A*/6 N3 _4 `' S, {1 @) E/ T( @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' a3 F7 G- f& H4 G: k- ~" _. UMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 k% c/ b' k! {' ]! G8 ^
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% g3 D  c1 X8 y. Q0 x& q2 i8 a| MCASP_PIN_ACLKX
$ j& b6 z' N/ n; j; [8 U: k  S5 ?3 x| MCASP_PIN_AHCLKX
7 n. W( F" `, ]0 k: a5 Z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
, q" ?, B0 K' D/ u+ g9 x/ P7 |McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; H/ S- O3 P7 x" m7 q3 a| MCASP_TX_CLKFAIL   ^' f, F) K7 W  Y- b7 W* B
| MCASP_TX_SYNCERROR# x- V! Q+ f3 }5 f2 {1 F
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 \' V7 }+ x( ^' p0 P; _7 I
| MCASP_RX_CLKFAIL3 u) H/ z" K/ G0 x$ q- E9 M& }
| MCASP_RX_SYNCERROR
: Q2 z2 x* J5 z5 o- || MCASP_RX_OVERRUN);
9 p; ~% U6 F  {; ^( F) J1 j! e+ F}
static void I2SDataTxRxActivate(void)! c9 L7 z* f" {7 s! r& b! k' @
{8 s2 d+ F. g' f
/* Start the clocks */
& E. V8 L- f9 e8 i7 [% jMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: @( z0 G$ ~6 R" M% [% `& J6 |
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */' `1 s; j/ h& N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# U/ n4 c+ i  V# P! N6 IEDMA3_TRIG_MODE_EVENT);9 r: l$ d6 x" O3 {0 E, y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 N0 v/ N+ `# x% XEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
  ~0 O$ \* ^( G9 q: DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ ], ?/ F! p9 }+ }
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 T, K. K: G( q! a- A1 c; Hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- D% i" k! U& e0 N* M# n" n+ g$ E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
2 H# A9 B) i3 EMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( }) F2 \7 w# ]$ m6 O}

6 E5 s! s' }) N& v; S5 m
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  \( i: d. ?" V& k! K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-11 19:58 , Processed in 0.039707 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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