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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9754|回复: 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,
) i2 `# J/ p$ i: G! |2 Finput mcasp_ahclkx,7 R& {: o9 X8 x' @5 |. P) e
input mcasp_aclkx,
3 \4 z' e5 [( g! x3 {, l0 g! m3 winput axr0,& x8 B/ R& T$ T2 F* u( Y
0 R$ T* D* I0 Z8 u
output mcasp_afsr,
0 f# ~+ F$ t, `0 z$ moutput mcasp_ahclkr,
: x9 _4 Y/ U1 F% i/ Y$ M! r# e! {output mcasp_aclkr,# H0 F, F2 ?( S& ~* ^4 Y7 _
output axr1,7 i5 U% ?0 B* [8 S/ g
assign mcasp_afsr = mcasp_afsx;' B: c( R& p# U: I: d
assign mcasp_aclkr = mcasp_aclkx;
5 C& l; `9 M8 B5 [. Q2 Qassign mcasp_ahclkr = mcasp_ahclkx;
1 {9 b- ?$ w! Cassign axr1 = axr0;

* v" W- |2 E" h* f; y" t# {% b' J  p- C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ S4 G! V9 Z/ v2 i9 ~
static void McASPI2SConfigure(void)
; @* N# P% u5 R% r& B2 h{! O( [3 w/ d! w1 g6 e; Y, k
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' o1 e$ ~, ?" E9 ?" T3 D! ?  RMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 C: D. H" T5 E! e! i1 E2 y8 HMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
4 A; b8 S  D0 c0 ~7 ?* ?+ }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: J! o! {+ J" s) B$ J4 m" f
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( E3 ]; f! H+ X2 V( }  E* G
MCASP_RX_MODE_DMA);
9 E$ ]) G% v& m/ R6 GMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# {' C, p( \6 G( vMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, C. r) S: Z! v, _8 Y. ?" B/ O4 @1 YMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 2 \  x) {9 i# k. O$ N6 @) s& S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! C! p% O( \  ~8 N. H3 U
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, / v5 b& P5 d8 z! U) W7 _
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 m. }- K4 y2 a) F3 W: T4 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. Z" Y9 P6 k& C7 wMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- g% y2 K0 `1 _$ Y2 r, q6 e0 fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ V% N: g9 {0 Y0 E  v& P. e! W
0x00, 0xFF);
/* configure the clock for transmitter */) o  P0 B  S) d6 ~1 r) x
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 }* ?1 ]8 h2 e4 iMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 9 W, W/ _5 O4 [+ r3 r
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ e8 ]; g/ t* s8 P% R0x00, 0xFF);
- P2 z) ~# v) X/ ?- S( ^. }+ w
0 T4 W$ F$ \% A8 D: c% e& y, U/* Enable synchronization of RX and TX sections */
1 j+ m. p' z9 P" {! `/ A* sMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
9 \* T4 A' M- |) JMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 L* _" I7 W; s- N7 C, @' _McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 q: l9 q' A6 U/ V. ?+ u
** Set the serializers, Currently only one serializer is set as
! k8 y, y/ H4 a: J: u+ ]# `$ P+ g* n** transmitter and one serializer as receiver.# @  l9 R& I& X8 C) i
*/
9 i+ }( _) m7 y5 h1 S$ H9 d6 jMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% k& E. {7 S3 U/ x( G# ~1 e+ mMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( O! [: e; k/ G6 Q8 l: {- a** Configure the McASP pins
. k2 W7 D! b4 T" f** Input - Frame Sync, Clock and Serializer Rx4 i3 G* l9 k8 ^  o7 o* d
** Output - Serializer Tx is connected to the input of the codec
/ Y9 Y1 _! S4 H- M. p) E2 z6 v$ r4 G*// k+ o5 t$ M0 c( a  G
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' b2 h1 t  P0 T. C* ^2 H7 m) C' G
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 S  s4 ~, P2 J# j+ hMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* W% `8 ]; V/ D' E$ o9 T0 O: {
| MCASP_PIN_ACLKX9 S# Y' J4 B6 ^3 ~2 s
| MCASP_PIN_AHCLKX7 I- j0 p4 {0 H5 u2 f
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% O* h' p0 i7 |" w- |& a$ BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ F3 d- {& S* i: U+ p8 I| MCASP_TX_CLKFAIL ' z0 d0 k: I  s; ~* K; n7 ^0 U
| MCASP_TX_SYNCERROR
& F1 B6 L2 {! ?0 a9 b| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; X9 F% N; W4 h
| MCASP_RX_CLKFAIL7 B/ B0 M3 f- C$ z0 }
| MCASP_RX_SYNCERROR
& Q* b  w, P" h; t) @+ j| MCASP_RX_OVERRUN);
" ^/ ?! E: F2 X; ^) \$ k; U: I}
static void I2SDataTxRxActivate(void)/ L% m1 z7 r7 [3 p8 D
{2 W9 P6 A" i* D5 g% Y
/* Start the clocks */+ a$ n2 E# X, @4 P
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 B& N0 K/ N$ X/ @: O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% W$ `% G; j. K$ P, E" @: _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
; N* C2 `  }: `EDMA3_TRIG_MODE_EVENT);
0 w( b% f* Q* s( ]3 s+ _EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# a8 X" [, `7 b4 E! |1 [+ xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( X# A, R; }0 X5 T
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
. k5 B, I& M4 I5 B; {  tMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. D9 k# f, y+ W  r+ @$ s2 p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# x( b& T! X' F$ ?5 _/ k+ W
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* }2 d, a0 U. ~* l% N4 KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);; d0 m! H' A. z" D: P! s5 ^/ o0 G
}

0 b' u. @. W: Y( K: q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! |0 Z  h! q. g+ U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 08:39 , Processed in 0.040220 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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