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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9662|回复: 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,
3 c, [6 k1 g. Q) I; b$ W# zinput mcasp_ahclkx,8 E" j/ N3 f( h/ J. Q! m6 b
input mcasp_aclkx,& C, `( l* f8 J5 z1 L' b+ Q8 U  ?' X
input axr0,+ F( ~( Y- l6 v: d; Y# h3 _
, g- H5 G4 i& X2 P# ]* _
output mcasp_afsr,6 b- O( d6 h7 o. a
output mcasp_ahclkr,
  Q* E- f7 d6 o6 V; ?* S( eoutput mcasp_aclkr,
, X, h; W2 p6 G7 Noutput axr1,
: `# }- R$ R; j1 Q7 `8 r8 Y+ K6 `
assign mcasp_afsr = mcasp_afsx;4 j- s$ q8 d' a& v( Q& [0 {
assign mcasp_aclkr = mcasp_aclkx;
, L# D1 n( }. Passign mcasp_ahclkr = mcasp_ahclkx;
% z8 h+ z) ]/ z! Q7 b8 F  w6 O1 passign axr1 = axr0;
  t& k+ k, T7 I/ j- p
; I4 _/ ]# t, `% q1 A" T  n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
2 v0 x3 h. _2 z4 l( R! [& Z
static void McASPI2SConfigure(void)
) {5 \5 f- w0 T3 I+ p; T{
3 s& C: p0 r8 ^% h% PMcASPRxReset(SOC_MCASP_0_CTRL_REGS);6 N/ C: N% l8 m; Y7 Y+ i' Y% d& p! r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- Y& k) W1 i& H; ]9 k6 b, K" Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
. u2 U$ H# z$ G( X/ c+ X+ i6 kMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
$ A, _  {2 j9 N6 [' e- XMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 k3 w/ V# _% FMCASP_RX_MODE_DMA);
9 M  B0 L) V9 i3 OMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# o3 M; X% h2 F! A$ K2 E
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; i5 ~; f) T, ]3 F
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; ?/ D2 h; z* C& [$ ?. pMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. A0 a# U$ X' w: e" LMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 ]! b1 _& W  ?: H) E) y/ UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 ^( X% l3 i  `0 Q5 I3 J& ZMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. g8 O+ o- j* d; s1 Q1 PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , [/ q% f- H8 Y3 ]6 m6 B
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 h( R* ~2 s  o! n" S0x00, 0xFF);
/* configure the clock for transmitter */( _- s  _0 E+ ]  X0 k
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
6 S" n/ d; B3 J$ |1 zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# Z1 e* v( i$ R7 c/ [% m2 [# M& jMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
1 N2 W! x+ P' l# I; Q9 F0 o) ?0x00, 0xFF);
( j$ N  r8 z9 j: S9 F' ]6 e8 L' w! O: n4 J1 B! ?) v
/* Enable synchronization of RX and TX sections */ 7 S% B4 p* @. s) z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ P# B9 ~4 g% Z  u5 V
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);" s: t) _& e: @1 G
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
6 Q2 m# Y( u/ n** Set the serializers, Currently only one serializer is set as+ [) L2 w7 ^2 w% Y
** transmitter and one serializer as receiver.
! x+ k( A  J# Y  D' ^% ?*/6 D# Z. G+ ?8 E3 A+ g, F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, Z( p: v7 L0 v& `; X4 h8 W2 hMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# y9 }  ]  w3 K7 c, Y* h9 n
** Configure the McASP pins % a" e* t# w6 j6 t8 b; t1 H2 S
** Input - Frame Sync, Clock and Serializer Rx% z0 v0 @4 }& z8 d; r1 Q4 C
** Output - Serializer Tx is connected to the input of the codec / k) Z7 Y5 c( ^: k/ d# T  W+ ?: b
*/
- b1 i! }! l3 IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 S( J4 k' V5 u" [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. H: x% R, ^' _5 F! j
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ U$ ?! \$ q6 V- z3 G3 J0 J# B| MCASP_PIN_ACLKX
6 f& o# G* {. {; v& p% e| MCASP_PIN_AHCLKX  d3 x  S8 D. E8 Y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
' h/ N- ^1 a$ QMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# }/ z% w  h1 @! x2 O| MCASP_TX_CLKFAIL
% H; u8 k8 d* p9 U| MCASP_TX_SYNCERROR
% V1 h) L3 Q4 g' K| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, e0 h- ^* T8 i" x5 P| MCASP_RX_CLKFAIL& j# G8 k5 f% p( M
| MCASP_RX_SYNCERROR 4 I" ]7 M$ i$ L! P
| MCASP_RX_OVERRUN);6 u7 }8 R  J( T8 }+ F& i; L
}
static void I2SDataTxRxActivate(void)% `1 j5 n. a, }# e
{
6 |, U1 B" P5 n  L% j! _/* Start the clocks */1 X% p6 E( R3 z5 i7 ^2 O; b6 C1 C
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);1 N# ~7 w& j+ j% x6 V6 s6 x
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! ]7 S5 A; S  V3 J  ]2 @- c2 UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  h! w/ D: g4 r7 E- z6 y% rEDMA3_TRIG_MODE_EVENT);
$ G/ |- O2 ?( W" N3 ^2 PEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 O, D3 q6 Z( x- p$ dEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 S3 u$ z1 ^+ f. i8 ]
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# z' l& S% p5 R* {McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' {6 u. B, d0 w" N  M- g
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: f- b& E% S5 I+ b: u: U4 T! S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" e; x2 E! G" c7 W$ _* D) R
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, l; E) Z! d& f: ^
}

# g( ~. s2 S6 B& C, {" f2 `2 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 G7 J+ a2 F( K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-16 19:51 , Processed in 0.038726 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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