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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11353|回复: 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,
2 P- Z$ k$ y- ?. I5 t5 sinput mcasp_ahclkx,7 R) y. r! o0 z
input mcasp_aclkx,) e  c4 r3 f3 D6 p4 @* M2 A
input axr0,, d+ s( h3 G& S6 C
# |* }) y4 g8 b1 i2 C' A& ~
output mcasp_afsr,
  w! w5 S* m) x2 C5 R4 Uoutput mcasp_ahclkr,( Q2 X& I  A- S4 A) K
output mcasp_aclkr,1 Q5 `  v2 y& b/ Q
output axr1,
' [( M4 z. p" w7 W7 G
assign mcasp_afsr = mcasp_afsx;/ I4 i8 @. k9 o; _
assign mcasp_aclkr = mcasp_aclkx;
* I; T$ y  X( e) kassign mcasp_ahclkr = mcasp_ahclkx;
( H7 Q9 Y7 U; S2 k% ^assign axr1 = axr0;
' V, d! Q/ J' k7 o- }. D

. @8 e+ ?! {" R" d4 z0 Q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) u- V/ M1 v% K- h6 _' G
static void McASPI2SConfigure(void)8 D3 s8 B2 ^6 l
{$ f; k' r- D* W5 r8 q
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
) t8 l& |1 ?3 cMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  c9 x3 C$ W+ ~" L2 jMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  I/ X4 X2 f! A& X9 C) e$ ]McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* |) m: _' j: K0 r/ R+ eMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 U, N/ ]$ E6 j: y
MCASP_RX_MODE_DMA);  O7 @8 u$ C' C7 b" l3 ^$ E4 D
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( j& F0 r" [- S1 T" A% P' l2 r
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ ^3 v# C- F, j
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' k/ Q& O- n+ M0 \
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 L- V: H: a6 m' O! nMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ J: H- x3 V( u( _" ^MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  L  Z1 n- z  u2 |/ F' VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) v. F4 e/ i3 ^% @, ]McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& C. b' k  S" T5 kMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; w% s. p( P/ b' Z5 u2 e
0x00, 0xFF);
/* configure the clock for transmitter */9 l& z6 p2 W* j# e8 \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 T/ y( r4 Q& K$ S0 r& QMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ d4 h* Q; U3 L" IMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,6 K+ ]( U9 i6 R' z$ T. w- \
0x00, 0xFF);; L- m# m$ k) U1 q- E2 B; c7 `
; B5 d$ i/ ^- Q( r- ]5 W! g: i
/* Enable synchronization of RX and TX sections */ % f& q5 d" v. W( J9 H8 C$ O! i4 T
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 H# b9 r8 u+ N  L% J* \
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  ?% }# `; X7 O& ^7 O& |  J
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: r! @" F" r- q+ A% I** Set the serializers, Currently only one serializer is set as+ ?' S, Y9 L. R8 b  V' J+ c
** transmitter and one serializer as receiver.% d/ I( U- i( i5 S
*/
: s" W2 H2 W, U* OMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( T% p) S& v7 T9 b0 k2 A% t) z7 r& `
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* }0 w% I+ N* v9 G% W** Configure the McASP pins
' u( K+ ], t% J9 A! R8 K** Input - Frame Sync, Clock and Serializer Rx& G5 Y  n" O" u: |
** Output - Serializer Tx is connected to the input of the codec
& ]* y# n+ ?4 K1 X7 a7 {2 r*/7 Z, s. t% g" e/ Y1 t1 {
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; t4 S  Y# Y& \+ h5 F) x7 DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" u9 k; ~% z( [
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 N0 q- z; E0 w! `. c| MCASP_PIN_ACLKX
, V( H' {9 q+ D6 }; U& N- K| MCASP_PIN_AHCLKX
4 y: e. m, E0 H& c; _, Q* Y+ Y! }| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
; {- A/ X+ V5 C, l# s8 ~1 [McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! o$ y6 ~* z+ y' }0 A% I7 G
| MCASP_TX_CLKFAIL
  {+ S1 S7 W- w+ o+ W6 W9 l) N0 v1 ~| MCASP_TX_SYNCERROR0 V, F1 x& K! p- j* z8 E2 L9 C
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  T& A- q& ]) W# S+ |/ G2 U| MCASP_RX_CLKFAIL
4 e* y4 o3 ~- z9 F1 u- x2 ^! x| MCASP_RX_SYNCERROR
1 {0 H7 e& V$ \& L9 a( E/ _" q/ H| MCASP_RX_OVERRUN);" j, ]5 L/ R0 k2 N8 C+ _' F
}
static void I2SDataTxRxActivate(void)
7 X5 D) M) x- v# i5 }{
. N3 m, A) [9 J$ ~4 g$ _0 @' H$ T  B/* Start the clocks */% @$ t2 T$ E* v' C$ V" X, K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
! \5 F( K/ d% S; B) o) FMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ Z* d  N) d- WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* e4 w6 m. h5 c6 a* Q1 F' ^EDMA3_TRIG_MODE_EVENT);# Z6 ]% M: u$ r, X
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / l/ D+ A: t! ]5 v$ ?3 d: n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" V) w3 O) l* m* h( r
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, A8 ?* w, c3 V! `- TMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
. u( I: O2 x9 I  f) o8 lwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ N# U, d0 S) O) ?/ T
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* O- K2 r# p0 Q! _% ^5 g7 zMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. O5 f: m4 a9 T' B2 C7 ~& z}

$ [/ \' t4 u( P8 O: Z6 M
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 g2 E! D0 N3 P, B  }  c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-3 03:31 , Processed in 0.042340 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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