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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9487|回复: 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,
- T  M& s  ?  F: |! {! Sinput mcasp_ahclkx,
$ k, {8 [8 ^) J& [* e4 |* a4 }input mcasp_aclkx,
% K( N5 d, k& @9 I, Rinput axr0,3 [. \8 k  ]$ N: G* b
* o) D$ p# o6 G4 e; H+ W! P
output mcasp_afsr,0 ?+ B/ {+ }2 j- D
output mcasp_ahclkr,  U# f: ~' @8 L
output mcasp_aclkr,' w  N: x' |% `8 u' @) r* k5 g) Q& W
output axr1,
3 M- W9 a0 S; E0 W/ O5 f
assign mcasp_afsr = mcasp_afsx;
! _6 Y+ `( _+ E' w/ d  qassign mcasp_aclkr = mcasp_aclkx;
$ `% K  Z: |7 W: kassign mcasp_ahclkr = mcasp_ahclkx;0 p$ X7 \# o- L) N2 H
assign axr1 = axr0;

3 Z5 t3 W3 l* d
. Z9 \/ O  B4 B. \
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 W9 v. v4 y( E4 K1 @6 `' y+ i1 F
static void McASPI2SConfigure(void)' w% w0 s+ e9 y7 j' D
{& t( C+ T, @. W  Q! z
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" w/ ?. t4 {+ k. S% HMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 I9 o" g7 K" {  c9 d0 b' JMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, S2 e$ p5 u  q8 Y; w  a0 `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 y0 ?. A, h9 E/ VMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* ?& I8 Y5 K) F' y) b; K. SMCASP_RX_MODE_DMA);
2 W6 G7 Y5 T" X* ~  D0 M( iMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 a. S$ }8 q# g/ q$ E( \5 w: C$ q' z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
8 _% W) ?# N6 dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
. D9 y: a, L, a$ S- p" n) bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- M( N$ |' @9 r; h5 v  \' d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
( R8 [( `! G% HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
- _0 a7 J- e: f4 @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);; U7 [5 e7 C$ v
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( _4 u" ?8 @: E( W' [5 T. `
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 u8 |3 X1 j1 E' V  I0x00, 0xFF);
/* configure the clock for transmitter */0 {7 {( y& `, z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* O$ c4 w- Y6 ?5 |McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 I- o0 }5 u0 Z9 a9 j0 O- \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' v- T  D  |2 ^
0x00, 0xFF);
+ c+ M; N% K: t  X
- ~1 b+ W; O9 I( V9 o# F/* Enable synchronization of RX and TX sections */ ( W5 e% v* n) Q1 l( R
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
' N( Y3 {6 f, V$ F9 M3 Y) C( m0 CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ y  A5 y8 c/ C0 xMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% H& z' l/ k) {8 k: ^3 Q** Set the serializers, Currently only one serializer is set as
, ]0 \8 j- [# `8 [. w. U/ e& E& x** transmitter and one serializer as receiver.7 \8 a6 C5 q$ i, W- ~
*/6 t. v# m* ~6 T0 H; X
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
9 U5 G1 V7 u& k  X- l& g  e: M: XMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
# X. B! a6 q  a; z** Configure the McASP pins
2 ~# h) b" m7 Z- F! Z$ Z' m** Input - Frame Sync, Clock and Serializer Rx5 x& \' `$ g! k
** Output - Serializer Tx is connected to the input of the codec
% h5 o% [; r$ G1 {/ e: R6 z*/
4 [" f  {* j  pMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, @, @) a9 g% M2 {9 V: `1 l8 DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ Z- _! f' |- P! V# C- T0 ^! jMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 z2 d$ r/ C2 R( l
| MCASP_PIN_ACLKX
: N8 g7 {8 ]; B, h$ Q. s| MCASP_PIN_AHCLKX$ J1 o- x: [* D+ O& w& U
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; V2 ~9 Y+ s6 M8 u) E0 T( c
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) d) k5 O2 r5 |  U$ I$ U. ]" Y6 F0 G| MCASP_TX_CLKFAIL , U7 J; o4 X) ^! t3 o' \+ z/ K3 `
| MCASP_TX_SYNCERROR
! r: H) B1 n% O. N) `1 m| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
. ~' _9 s1 Y% C, |1 c% k| MCASP_RX_CLKFAIL
: a* S6 g2 n" P6 n, U2 `. y| MCASP_RX_SYNCERROR ' ]9 I4 H# ^9 d; f
| MCASP_RX_OVERRUN);7 |( X% g9 i. D
}
static void I2SDataTxRxActivate(void)
% H/ V9 g/ a5 @* M{
' w7 O9 A- |+ p+ e: r/* Start the clocks */
! C' p; c% i/ t& h7 M2 ?McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, A3 U* g7 ^. ^3 s! b* Y* i
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  T7 n/ j- r$ d, s4 n& o3 v! r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,& d% M  q1 v# U% P; V) Z
EDMA3_TRIG_MODE_EVENT);# m0 c- o! R0 W6 }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 r  B4 Q/ r% O3 ]5 f3 i6 ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; l" ?/ `7 c. m* sMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
4 k; |* [( Y' h, ~! D- m2 @/ b! DMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; N1 @. X  C6 `  W: n+ S3 [0 Zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* e0 a0 j; _3 N- D$ y
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);' x3 V" a4 u' J5 o/ U- R8 {
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 i- r& S! {# m8 Y' q
}
6 C. F$ I- {6 L. i$ \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- P  X  l, u9 P: x0 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-11 20:57 , Processed in 0.040438 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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