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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10298|回复: 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,  e3 s1 i$ ?9 A: R3 K: t
input mcasp_ahclkx,
8 G1 q9 _5 K6 ?4 m; k: iinput mcasp_aclkx,+ k, W1 o' ]) Y& w4 b9 p( j' t
input axr0,
8 O! R* ]  m4 w" W
$ c# o" q( ?" \/ _4 Foutput mcasp_afsr,
# Z% d4 M1 h8 Q% {! C9 Houtput mcasp_ahclkr,
9 |- E: _4 k" o1 g; K% s& ~output mcasp_aclkr,* \; Q6 X* ^! |8 ~% |' N
output axr1,
4 K8 k1 ^" D& [8 o
assign mcasp_afsr = mcasp_afsx;
  _; s, J4 `' K( S' B1 N/ `assign mcasp_aclkr = mcasp_aclkx;) I8 b2 o$ J4 U# z7 x; p: I
assign mcasp_ahclkr = mcasp_ahclkx;
! X5 f+ @  m% y) G' B& \9 N5 Passign axr1 = axr0;
' b) A% I6 ^7 A

' C) G: Q) u! s- c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  h2 Z; V9 m0 B% A0 r
static void McASPI2SConfigure(void)8 K: ~5 A* H( A. r# I6 Z
{
9 Q: H( n, F# \* W6 JMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
; \5 i: T; F# _- I$ a5 E: G% F/ r: fMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 V  D7 n  H2 ~0 l9 q: Y3 a( jMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  r% d8 g& _: F( @2 q8 X
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 R8 f% t" Y) [# A5 zMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) H# }9 i1 M4 ^9 u* H
MCASP_RX_MODE_DMA);  s$ p* V) m7 H) q% B7 N. V( N7 a8 c
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 y" o* K. o+ u+ V( A6 OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 o, w" B! I& O, L9 {McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 a% ?6 ~4 u' q" HMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 W% h# R0 }" |& oMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! v1 i0 m: b" ]$ E( y. \4 Q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" i/ h; \# v7 n$ I. Y) hMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
* z& q- f8 v" }$ D% eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " j  u5 j2 Y, [8 W
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
4 `7 N- E2 W3 q% m0x00, 0xFF);
/* configure the clock for transmitter */
8 g' g4 C, B' Q$ N" QMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ m; n( ~. p) a$ `6 X, O1 m. pMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ u# G, s7 D* `
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' l. _' d' w1 ?5 Y$ M* Y0x00, 0xFF);* C- C2 c& ]# @. E7 m& c

* F. V6 A9 j7 E/ g) X3 t6 ^* f  P/* Enable synchronization of RX and TX sections */ 4 ^/ g( r  w$ }* ^/ ~& U
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! _- }* ~% b* R8 ?0 n3 C( @# y. r  GMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
6 ?& G' `1 W; Q! a2 N8 SMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  y: k7 f& Z1 ]  {  Y+ I8 x( L** Set the serializers, Currently only one serializer is set as
; e) c- x6 H9 G9 n) x3 z** transmitter and one serializer as receiver.+ B. q: ]7 p% h" C* E
*/
, |& q4 r% ]; t* ^; O+ @) VMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% f3 t1 I  n0 O0 E' O9 G% GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 ^+ E. _$ l# {* Z8 c; R** Configure the McASP pins * [% s0 j1 V( I  r1 w: j
** Input - Frame Sync, Clock and Serializer Rx4 J% W  |5 d8 t8 u
** Output - Serializer Tx is connected to the input of the codec 0 a! {% f/ B2 q- i4 {, O9 _
*/
+ N- u0 R* k8 bMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 k+ L# ~: W2 |7 x" U% n5 L
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ v. L: G$ d$ {
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# |$ V1 \0 j. G/ P6 V# P* y  i| MCASP_PIN_ACLKX& ^& V: e! \/ ]" M! Q# b# z
| MCASP_PIN_AHCLKX
: ?; n, ~4 v# n7 ~" n# ?( o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
; Y2 V& Y& E$ W5 i9 Q) lMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
, m: s! q! S+ I| MCASP_TX_CLKFAIL 0 Z$ K$ e$ n# h( M" m
| MCASP_TX_SYNCERROR$ q$ w4 N5 k6 H; _9 P
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR * j' N7 Y) n  K! @, ]  h, B5 h
| MCASP_RX_CLKFAIL, b5 o, m6 U" f8 @3 l
| MCASP_RX_SYNCERROR ( ~* ?9 b& O" v3 S+ n+ d1 R3 n
| MCASP_RX_OVERRUN);
$ S! a5 X  [; C}
static void I2SDataTxRxActivate(void); z# O9 F# X  {7 c
{) Z8 @! |; j, h6 }
/* Start the clocks */% j% C  P5 ^3 I3 \$ S/ A! J
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) U6 p# D7 k% x1 LMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" h' e# I  H  t' T9 |1 d4 @0 vEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 p. \1 m" H4 b! _+ I6 o5 `( W; pEDMA3_TRIG_MODE_EVENT);- Z1 \0 \: c/ E$ `; j% \2 q* B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % y- l& {3 r; w
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 M. p. F6 K9 ~! eMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 M6 {, G" ^. G: }. O; @0 x" r) L- k0 i
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 u8 d- f* D+ ^0 X# G6 F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ C4 e4 r& y6 P& U
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: _1 @6 H( o# V9 l$ |McASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 K3 m; Y% ~  W8 c% Z& @0 \7 Q
}
: V8 {* Q& y7 L5 ~3 n: F" i7 E3 P5 _) h7 ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 J7 ^* }) S  l' C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-3 02:21 , Processed in 0.046357 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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