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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10382|回复: 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,
9 t' R3 R6 Y9 y9 zinput mcasp_ahclkx,6 A: V- d$ h9 X" D+ N$ S8 i& n
input mcasp_aclkx,
5 E( W" H! A$ y3 Z/ H* `input axr0,
1 v: Q4 r9 Q3 @7 ^. w1 U# y: e1 K8 a5 j, [. H% R  x4 b$ R
output mcasp_afsr,
$ m/ k( I% E  U4 e7 routput mcasp_ahclkr,# X& e2 V/ i# [- u! c$ S
output mcasp_aclkr,
& Q4 l( i" G1 Y5 [0 @+ `& joutput axr1,
2 _6 ^5 a. a# H1 e" d4 n
assign mcasp_afsr = mcasp_afsx;6 q/ A- f1 U4 @# w# X- M
assign mcasp_aclkr = mcasp_aclkx;
$ o- t$ H, s6 g/ S' D- G. T3 wassign mcasp_ahclkr = mcasp_ahclkx;( b1 L/ @6 [' S
assign axr1 = axr0;
! L8 u' O7 i! }* W5 R8 {

- ~. ~$ J1 e* K- d" ?1 v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, e/ I/ @8 s  u* L2 u4 n
static void McASPI2SConfigure(void)
! k0 {1 s, b# c2 T. R' q& `6 ~4 v7 A{
8 h, n$ Y& s" I2 Q4 v+ \McASPRxReset(SOC_MCASP_0_CTRL_REGS);
; y8 O) t4 \. k: m# gMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// x+ z" ^2 p$ z/ W
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
* \+ q6 n5 A- c6 @% P1 VMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
5 y% r2 K1 \; q' y/ F: \0 MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 m6 L; w( o0 L$ I) zMCASP_RX_MODE_DMA);
9 O8 {0 @% R& C% a5 l% _McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* t  S+ @3 U  g" C; d7 jMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, W5 r) u$ j9 [$ k: |. |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; q9 X/ x, k% [) w6 ~  V% BMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 e' K5 v0 I- G# L
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  Z+ `2 |8 `. W6 C: |6 E: ]4 ^MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 n7 |# Z1 C' H8 H& H& c" WMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) Y* o/ |% V- |; A* R0 FMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! v( a' ]5 O" q( f% }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& r; g2 U. k& X  k. X4 M, l
0x00, 0xFF);
/* configure the clock for transmitter */! ]# r( ~4 F2 p5 g/ {- b
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# g+ D/ B, C4 O$ {$ tMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
% I2 S+ z8 p" z) ^McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# i* s/ |6 c" K0x00, 0xFF);
7 Q: J! `( a' F. p1 N* C7 O) d) {  }5 @9 q$ S8 r8 p
/* Enable synchronization of RX and TX sections */ 0 M* {* [1 [# K$ j- o+ h5 t* e
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ y; k1 j* E; `+ P* hMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 ?0 c; }, z2 w! tMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! {4 O3 ^! Y! S8 M2 H( ~% f# K2 z( A% h** Set the serializers, Currently only one serializer is set as
7 a# h  C: ?3 ~- w; I** transmitter and one serializer as receiver.6 B0 k1 v+ q  j
*/
& B( t& T9 x3 V2 K; x- |( |) F. y( GMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);- D! }* V* B$ I( P/ z  |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( Z! N: }* b1 S( [** Configure the McASP pins
/ L& C+ L* L  C  N& o# S6 T7 T** Input - Frame Sync, Clock and Serializer Rx6 M$ p+ z6 A. S8 S8 p/ t
** Output - Serializer Tx is connected to the input of the codec 2 N: }8 K/ J# }+ }: ]  L3 ]
*/" _2 n+ B/ P, A
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
) ]9 z; t& {$ }8 `' @; {5 s9 o6 Z) mMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  T9 D! S5 ?. P% i* F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 Q$ A( X3 [0 b5 `5 Y! Z| MCASP_PIN_ACLKX2 M- ~8 r( U" F1 g- w
| MCASP_PIN_AHCLKX
# u5 t/ u, ^/ R  p% h  p7 P! X' e| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 [" ?# o3 h4 M* @& GMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ `5 a( L; M0 b; ^  q" H& I| MCASP_TX_CLKFAIL $ ~/ U) S9 F0 l5 ~' d+ ]7 l
| MCASP_TX_SYNCERROR
/ E1 a+ [2 T! F| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 x, A% h4 N$ c1 {
| MCASP_RX_CLKFAIL
. M% D5 U! W. r* k| MCASP_RX_SYNCERROR
# }7 T: w7 p7 A; ]# e| MCASP_RX_OVERRUN);- Z2 S8 R. e7 B' X) U/ J& f4 D
}
static void I2SDataTxRxActivate(void)
! H* O: F; n* }  |* Q& `5 p( x$ R{4 L5 v2 H: u2 Y) w8 z8 V
/* Start the clocks */
+ y' Z5 a- k2 c- \McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 N% R* ]. W6 g6 O
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# Z/ ]1 v) c, f* P0 [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
4 c( k1 \0 E* S. uEDMA3_TRIG_MODE_EVENT);
, H& W9 [0 L& ]7 \. V6 Q) uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - z2 n! z( B5 T" u' e3 n# Q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ L, P" e( `; ], I3 h# F0 `McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" y& N) i6 _9 k
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* s, C, L- b+ y3 |5 [while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */& y$ i9 u9 B, i: b$ K. F
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);. @" z. D  i# z0 d; }  ~
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: B$ ]1 d- I# `3 I5 p
}

; D+ J% A! n4 ?9 ~2 \- h. s0 ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: H) Y  V; I) R- Q. a. I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-5 09:47 , Processed in 0.042565 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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