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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5796|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
' I5 h& ?( H; _, X2 \6 [input mcasp_ahclkx,
" U/ a- A3 Z; d. _4 B4 hinput mcasp_aclkx,
0 m& g, m$ Q  U# v, Minput axr0,* }8 l* o% Y' N( y2 R7 _9 v

" }+ I$ j! y0 p2 i' t  Zoutput mcasp_afsr,! X! E9 \% g/ K8 x% j4 ]- c
output mcasp_ahclkr,* I' w7 k+ K4 s5 Y- I! d: Q
output mcasp_aclkr,
& Q! P6 D# I$ B1 Xoutput axr1,* V9 x2 C, N' o& f9 [
assign mcasp_afsr = mcasp_afsx;
; K8 g: j0 w5 U8 d" A$ iassign mcasp_aclkr = mcasp_aclkx;
* A1 q$ z" l# l( X8 Rassign mcasp_ahclkr = mcasp_ahclkx;( E! b3 z* y2 w4 f
assign axr1 = axr0;
+ G4 |7 I- E9 P; |

- N0 U0 W" z( }+ c
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' X3 M4 ~& f2 N
static void McASPI2SConfigure(void)
  M. z% `! {2 _6 b2 i. \4 I{- x1 Q3 v4 {6 a/ \; n* ~- t; Q
McASPRxReset(SOC_MCASP_0_CTRL_REGS);4 u! J- [( W( C, D5 W( k
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. A/ I) c" X' `+ O+ kMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 b$ E. V2 x# j: }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 W0 F; J  \" C- {$ W
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 M7 }8 N) E/ [MCASP_RX_MODE_DMA);# ^  a" T; N! x! A; [$ E
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 T: t# D; B3 RMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# [" j/ U6 c# r" o* [' i. m# tMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 e. z$ x, T! n2 h) o
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ H7 t* x4 N" D" Y" V1 S: {
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ( U! k( c$ V$ _. _, {
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 ^/ `! J- _- c7 B0 i" O- UMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 z8 e  y2 S2 n* H+ e9 A; H1 e
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 c9 [% N  J# e: y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 e2 z3 e0 m* c% p
0x00, 0xFF);
/* configure the clock for transmitter */
. a# z9 T- o9 H3 Z9 R& xMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# K$ h, p9 N3 Q" CMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& ^% l+ V% ?' T1 P4 D. j7 ~6 D5 JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* l& y5 {9 Y( O7 s. q  D( |
0x00, 0xFF);
' m/ H' k: U0 ]' L" M8 K" S% h) O  b- K  \
/* Enable synchronization of RX and TX sections */
) l9 k; ^# {" WMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. l! a  W/ P! j6 jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 _7 G5 z# {7 }/ G. l$ ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  i! @4 j8 p) F# h$ Q. P+ s** Set the serializers, Currently only one serializer is set as
9 a) p5 Y. M& w. D3 F** transmitter and one serializer as receiver.3 |# R8 d3 W) ]/ L3 n) \
*/
* Y3 B& L; o, Y( \McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 T  b6 F9 R# c% K7 `
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 n( _6 _0 B" w4 ^8 Q$ \** Configure the McASP pins : e, Y- P; o; A1 b: ^
** Input - Frame Sync, Clock and Serializer Rx
4 e" I4 V% o' T3 P9 _** Output - Serializer Tx is connected to the input of the codec
  }; V. Z, ]0 a9 S2 g*/% r6 s4 {! U1 e$ s# ^0 o9 K+ b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# E/ k- L8 c% P; K$ r  @McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* I& @8 `$ n; ~# ?( ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ g5 O/ E# o5 i& O- A$ k4 _| MCASP_PIN_ACLKX4 f( g; _* O/ v. \% k" n
| MCASP_PIN_AHCLKX
+ {6 H- O& w8 f( N. T; M  _* W| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  I. |5 V, O8 {McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
9 R# [& V: }+ D! ^( D2 F5 K| MCASP_TX_CLKFAIL
. u: s- i' l2 X- F$ t. @5 w| MCASP_TX_SYNCERROR0 J% a- ?0 K* o8 K* G! x) [2 J$ P  _4 X
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( n3 v, o- w% S( m# q/ X2 @3 r: i; Y
| MCASP_RX_CLKFAIL8 y6 Y$ t9 R7 W3 P( a. w
| MCASP_RX_SYNCERROR $ I& }3 d+ Y' e) Z
| MCASP_RX_OVERRUN);
% a1 e1 M' G$ w6 j% C1 u/ V}
static void I2SDataTxRxActivate(void)
1 |8 J8 |" M! e) [{
4 N. k( E. Q0 q* n" L. _7 o/* Start the clocks */
0 z5 v; H) |- a5 C$ i2 iMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
5 q/ u/ X1 r$ Y  p! RMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 W) S3 {2 X9 o: O8 y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  b3 B1 l0 N0 o) d+ M1 W( x5 F  e
EDMA3_TRIG_MODE_EVENT);
0 g% p* z1 X+ g. d1 }! H9 JEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
0 Y6 n, ?, h+ h7 E- S- x5 T4 EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers *// i5 ~7 H) O1 a# M% r! i* L0 V
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 M/ s0 W$ _+ B* o; q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */4 m/ B, t8 ?2 E4 r9 @) a
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' _0 Q3 T2 s# YMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 a- j' Z+ ~; F4 g
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: ]' a" R7 m: F. v* |% W}
% x* @  [8 Z0 }' ]$ e3 C7 E: d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- Z& Z! Z% j4 y$ b. w% f. a4 i' |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-14 23:07 , Processed in 0.036526 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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