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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
* H* K* Y; l( o0 J2 a( tinput mcasp_ahclkx,
: M/ H5 h6 B) `& U2 ^9 \input mcasp_aclkx,
# h% I9 \( _+ I0 I8 uinput axr0,
8 X! x" _. L. s
5 e) p" m* ]1 woutput mcasp_afsr,
3 n5 d3 J# h! y- H) foutput mcasp_ahclkr,
- Z& q. k: r. W$ u  E# D0 Poutput mcasp_aclkr,2 J1 \8 Z$ ^: g" V/ M! F( P
output axr1,
* t9 K$ v  O. N% l# p0 ^
assign mcasp_afsr = mcasp_afsx;, W- c9 s3 e, x/ N# v
assign mcasp_aclkr = mcasp_aclkx;( l; t; ^+ [$ i8 s0 X' `- E; D
assign mcasp_ahclkr = mcasp_ahclkx;
% h  z0 k6 Q4 U- k5 O/ V% Qassign axr1 = axr0;
+ {! \( t4 x2 K  h  l

4 Y% u/ Z" N* V9 |7 H, Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 j# t5 `' D7 Q1 g, S3 S3 K
static void McASPI2SConfigure(void)
% Q, b+ T  n1 c) J  n6 y8 O{
5 H& D6 n" v: Q0 `/ hMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
# l) ~& U* G$ y1 VMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 t& y# @  _/ z: tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 J7 I5 I! Z& h. T
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */9 [, D# f. y( k! v' r) O
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) t' k; K" o9 o) o
MCASP_RX_MODE_DMA);
6 Z, l0 O5 l% V. FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, O# u/ Y1 Q3 F$ }
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( {1 O6 y& c9 v: E$ SMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 {) w3 Z5 P- i8 ]MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
8 K7 L7 i; z; p- \+ K" hMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ Z3 i7 K/ L0 M1 u  ~MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ x6 V9 s$ O: W3 C# G1 }2 L: IMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! Z2 q+ E4 Z3 G7 G+ pMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   f9 _0 M  |/ ]; g' ?
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* l- [- m& v+ ~) ]2 \- K
0x00, 0xFF);
/* configure the clock for transmitter */4 J8 ^/ b3 e' c9 j: e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);: b8 r! @! V/ ~9 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  `$ `# ~+ R) _4 Q; Q8 Y6 {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ M% M3 Y' \  v$ G  N5 X/ C
0x00, 0xFF);0 @2 y, d0 C5 F3 I8 x5 w0 U
! y' M! i, m' Z  l
/* Enable synchronization of RX and TX sections */
; K2 c' }$ ?+ G: s- S# wMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 z  o" v! L% |* q' Z8 k; R: PMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
$ d4 R2 g6 w4 @# B5 q9 Z7 ^McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- p0 w( H6 G, {9 m- r** Set the serializers, Currently only one serializer is set as' w- ^6 ~# i( W% G$ B$ n
** transmitter and one serializer as receiver.
+ q/ z3 Q. C" z* ]; J; H*/
  p& H* y2 c; RMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 }2 P0 u3 l9 I! v8 s! B
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 ?# o5 j# d3 H: D1 T: ?** Configure the McASP pins 4 @( r/ [5 C7 Z
** Input - Frame Sync, Clock and Serializer Rx
! ]$ [& n- p% I6 G% g4 f** Output - Serializer Tx is connected to the input of the codec / i. [, G) u; H5 b3 l9 g; _5 p/ Q
*/
4 V5 P4 I9 U. z" l: q2 IMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ Q$ T) K! x2 W8 zMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));6 l# u8 ?0 `( E' q2 I& r. s5 b
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX0 M' Q2 M- i  P( s8 \- z
| MCASP_PIN_ACLKX
' k0 M# `' E: k$ P) @| MCASP_PIN_AHCLKX, E( `# ?& |/ a9 Z  N
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" b" c% o8 s4 cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. U; T$ m/ R( |, y+ ^| MCASP_TX_CLKFAIL
0 A. N8 ~8 m7 }| MCASP_TX_SYNCERROR
+ M+ R1 B0 L" }. i9 P# _| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 V" T  t2 J2 h! ^% s| MCASP_RX_CLKFAIL& f4 g+ @7 ?4 v0 }# g
| MCASP_RX_SYNCERROR 1 v2 F9 b2 }2 {8 M+ o" b* D
| MCASP_RX_OVERRUN);
5 I6 \: S% ]6 X( t' s# ]/ ^0 H}
static void I2SDataTxRxActivate(void)- a( x# N" G. z5 p) x  ?. B5 {
{7 N  [2 d: B* y
/* Start the clocks */
% H3 N4 \% J+ K5 h3 j% k, |" {McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ H# Y( }; q; `( Q, UMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) Z! v& P6 v. `7 x. ~1 }/ P8 {
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 x! y$ i4 J3 [. o  hEDMA3_TRIG_MODE_EVENT);
: ^  Y2 D$ N0 _: pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 v0 D* a9 ^, V9 nEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! o$ z. w1 Y, o  q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ o# G  B. C$ B4 l1 |* b% }, T
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% Z4 T, a: t3 B1 P! H! N$ pwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! P- X& [  [, k7 t4 L6 h9 C( s0 S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' }* Z; f$ |2 V, uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);& T8 ]+ }+ Q  Z( `1 g* Z3 f
}
$ _2 Y# P; s3 s' @9 A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* G' D9 |/ ^) R% {8 ]0 _% L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 09:32 , Processed in 0.038096 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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