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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11326|回复: 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,
0 p! s) u$ }) h1 D) C" r& Xinput mcasp_ahclkx,
/ R4 q) K; |/ A: u. p: r- Tinput mcasp_aclkx,4 p3 F3 K6 A" x- @1 k" J) y7 y
input axr0,& y5 i4 ~, {4 Q" f

( X3 P6 _2 ]  y1 _7 g( zoutput mcasp_afsr,
% R/ |* j5 }0 t" voutput mcasp_ahclkr,8 u9 i) }) \  L2 r' ^  }
output mcasp_aclkr,; u$ ~0 `; g6 A* H5 u& k! t
output axr1,6 @& W! v$ {7 D  h, M" L1 C% h$ @
assign mcasp_afsr = mcasp_afsx;! z% c3 n, b3 n7 T$ _' a" c
assign mcasp_aclkr = mcasp_aclkx;
% D) I1 u" P- A* I0 h4 g- M. A! zassign mcasp_ahclkr = mcasp_ahclkx;! I$ v$ a1 q6 V
assign axr1 = axr0;
; D3 t% G0 J. \8 V" ~
# ^/ j; n. ^: Y7 {9 |) U" z, k
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 o" h5 I/ e& u7 y4 N
static void McASPI2SConfigure(void)$ U# k& j* C4 ?- Q" y0 }
{
  f6 j. o' h& h! P: v* EMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' H5 L8 J' F: K( O% pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' \- k4 e" I3 s# iMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  m) E8 T* r8 h3 mMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 ?* H, t$ q* D+ A! G  {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," {$ b$ b7 ?7 H/ ?4 r4 D# z
MCASP_RX_MODE_DMA);
+ h7 R2 h6 [; c5 O7 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! I3 Q% j% t$ \8 D/ M5 b* m# BMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% J" x4 j' F: E7 U/ vMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' c7 D7 d" t' f  h( ~6 ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 F1 t3 S9 h( j# B1 jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) ]8 P8 M" _  N. {" x0 @8 F2 VMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
. p) K3 a7 e, N: }# I8 U" a! }McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 C- e; ?; U* u0 a# H& bMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 h2 ]8 U, U4 OMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,% r0 c" h* \+ N" m
0x00, 0xFF);
/* configure the clock for transmitter */6 T+ |8 _2 k2 b6 J
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  r6 T8 G) S$ h. ?6 P9 |& v3 aMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 [9 L6 E7 [0 ^1 tMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," |, r% x# ~: h% y
0x00, 0xFF);8 Y/ h( U* u+ A/ ?, v% i3 K) d, W
* V: @3 G  X. I
/* Enable synchronization of RX and TX sections */ . B# h3 |. S( y" M9 Z( E8 f$ \
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) W% N% x( t7 d3 N6 PMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);, q9 U( f! n8 S/ ?! Z8 ~  O' a
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% ?% o' e& {; b** Set the serializers, Currently only one serializer is set as
3 M2 k3 b0 U! m+ d' ~** transmitter and one serializer as receiver.* H% L7 R( [5 S1 O& i/ _7 N
*/
8 A9 @4 b* N# w, w( ^4 Y7 Q7 HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) k5 E, g( v- C! T, f* k% ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ o. |& Z, ]" \+ _" v** Configure the McASP pins % M3 O2 S8 c+ \  F2 P5 f4 s) _
** Input - Frame Sync, Clock and Serializer Rx
; l! D  Q7 M6 Y# M1 ^( T** Output - Serializer Tx is connected to the input of the codec 6 A* U" e5 x  a% o; z8 G; ^
*/8 d, |( J* Z  n- o) G1 o
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 x& t) b; X) n& DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  v; e3 J" t# ^+ Z8 U- Q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
  h  t% |8 C. L) \& s| MCASP_PIN_ACLKX+ l' M" w4 ^. ~
| MCASP_PIN_AHCLKX
( h. d0 {: ?6 j/ n4 ^8 O! @| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */  b/ b8 m% H. D+ A
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 z& O  C) f, V% f( k. W, l* F
| MCASP_TX_CLKFAIL - X7 r1 n9 P% ]7 h
| MCASP_TX_SYNCERROR& P9 d& j2 x3 O6 \
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 8 C! z! C& R: T, q5 _4 [
| MCASP_RX_CLKFAIL
1 `( }, l" x( o; C/ n| MCASP_RX_SYNCERROR 3 j, Y1 t  I3 j
| MCASP_RX_OVERRUN);- H+ h* n" l4 L( p6 n6 H
}
static void I2SDataTxRxActivate(void)
' D7 ^( t- o4 E3 U8 L0 d{
3 ]  ^+ O5 p/ n( v+ ], x/* Start the clocks */
  ~9 B8 G* b: u; e* b' u; ZMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ {" O+ c$ S" {, s, A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 M4 f5 d3 a6 _4 D( w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 J& V$ Q( g0 Q' J6 ]. t) ?0 v: sEDMA3_TRIG_MODE_EVENT);
6 E% y/ J  w! h. w0 ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) [5 `+ M7 e8 z
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ F8 `1 ~/ q# ZMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% b6 t: h8 w8 O) S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 o- q1 O3 R" t+ S0 owhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) E) }  o* k+ J- I9 z) SMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& [; w: u; @' r3 T: G  HMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) L% O; P8 N  |! @0 E- e) Y% c
}
8 {* A3 H% ]. B6 ]* @( X$ a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" c- e0 J% B/ K( O9 o
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 09:54 , Processed in 0.040661 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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