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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9305|回复: 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,
  J! Q- m. ]2 Xinput mcasp_ahclkx,
2 u! S) X& e! K) u: U' jinput mcasp_aclkx,) W7 [" g8 s# x, O5 b
input axr0,3 O, K$ R0 f0 Y' {. ~4 [! Q/ }

3 g2 t+ ]% b* q+ ioutput mcasp_afsr,/ w" P/ u. i  i# \" ^
output mcasp_ahclkr,. t% O8 X: u& D
output mcasp_aclkr,
( f3 p" v2 P+ O7 K% noutput axr1,
2 S! _9 Y1 m( v' H; `: ?
assign mcasp_afsr = mcasp_afsx;
: |" M; P' K' q( C* Tassign mcasp_aclkr = mcasp_aclkx;1 z, H: K6 o9 N7 i$ n( J$ z
assign mcasp_ahclkr = mcasp_ahclkx;4 [: e# S+ M; g$ _! a  Q- V: e
assign axr1 = axr0;

. w! j" p/ J2 Q! V. ^
$ g& a1 {) \  j2 x
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! o. g: M( y) L9 D
static void McASPI2SConfigure(void)
* X' ~* l# s$ f! r9 b9 z{2 ^. Y6 @% W- Y7 N+ f2 P
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! E. r. Q9 m. a. }5 `McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! F& U- H2 ?+ @7 f; [, wMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, {) @, B6 _, i' L9 E( MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */5 J! Y" ]1 v% E" O: M
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 i# ~+ [) ~- d! i* z8 V, A2 c
MCASP_RX_MODE_DMA);  U$ b* s1 G& a) p% z6 m0 m; C
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 M" A- ]: W, o+ Q% p; {5 aMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 D, H3 I/ i/ S* }8 p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : P) Q, R" h( j/ f5 l) r& E) k
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  J& o3 I0 a6 s8 o2 jMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! \, U: Z* A4 q( |: y( J* }
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ I2 |( N$ {9 C, S; n9 ~, AMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 {0 E8 k, _% `7 a7 CMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " k' P3 h4 T- i& r$ Y9 C* }
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,# x- _$ O$ ^/ \+ F, B: B+ x5 B4 {6 R  d
0x00, 0xFF);
/* configure the clock for transmitter */
, ^7 r5 p. N9 F- iMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
+ H4 ?; M6 g2 v$ VMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ [$ }* ^  b' Q. Y0 R# m4 }McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: _# E( n3 [( d# f1 R8 _
0x00, 0xFF);
. C+ |8 _* `, I, n
0 Y- V! p+ b5 U( U7 z& |0 F/* Enable synchronization of RX and TX sections */
9 b" E# l9 Q( F+ X% M; r  N- VMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 D8 g4 R: D1 @0 D( f5 e8 |
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
3 F0 ?/ w+ Z+ b2 kMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ `7 H; ?# v- n% P4 \** Set the serializers, Currently only one serializer is set as3 S2 L) k' F- d( I' _) R- Z) J
** transmitter and one serializer as receiver.3 E! T6 O$ h" A4 L
*/
/ s9 [8 @5 `  P; h5 hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: K  ?+ I- H7 VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ w! a2 W8 o5 }9 `5 K1 ~, @
** Configure the McASP pins
% T! d) H& v6 j8 R0 r7 n** Input - Frame Sync, Clock and Serializer Rx
# E( ?1 }" R8 q- u# u** Output - Serializer Tx is connected to the input of the codec 1 ~/ K  Y& N  J
*/' x: g5 L/ ~) N$ h! n9 @$ c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);  w6 \1 e9 q8 T6 u! W
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. J6 k4 N" x- pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX3 b+ O5 {' H& F& c) `$ B, |3 V
| MCASP_PIN_ACLKX% N  ^  R4 i; O, E
| MCASP_PIN_AHCLKX- V  q  Z( a8 V6 k* d  e! ?
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: R5 @- f" l( W& a' d( M' e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ' }% B4 j( c: p8 p
| MCASP_TX_CLKFAIL
- L1 G1 F8 U8 c! f5 S| MCASP_TX_SYNCERROR3 O) F) H( b7 M5 N
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 x* x2 Z& a( w6 m, s5 g( g
| MCASP_RX_CLKFAIL
+ n: F. n% {2 t4 a7 e| MCASP_RX_SYNCERROR 5 W1 ?6 ]1 R6 R9 f1 J
| MCASP_RX_OVERRUN);
# W' K# L9 M" m+ I' `}
static void I2SDataTxRxActivate(void): {8 \% H) g' @7 |+ ^
{/ ~6 l9 u4 q3 Y
/* Start the clocks */
9 _- j( T! f- S! S! mMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 d3 k5 q( K0 [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */9 ^0 y. ~/ o" k4 M" e  S9 w' g
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# `# f$ }. K% G" ?
EDMA3_TRIG_MODE_EVENT);
- D. L* x# o, ]3 mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
/ S: }; e* P$ @EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 s" ^4 r  p6 XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 ^' v& X) C# ?& e0 s& a
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* s9 ?( s) B8 i7 w7 O( @8 Owhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 v* O+ J1 p1 L( ?% e+ L" ~; F, P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 o/ V, V" o+ k4 RMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# o  i" v$ X, ]; K5 j' K}

" J. t" N* M, U& x5 q1 V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* }) c( m. d" a& o$ `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 20:08 , Processed in 0.039111 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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