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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
5 U3 I8 e5 H6 y2 [+ h% r% {% \input mcasp_ahclkx,
2 O4 |& i! M8 C$ n; Ginput mcasp_aclkx,
2 c# N4 Y$ t/ F) Q2 ]1 Yinput axr0,' v9 q+ N! L4 `+ K! @: x# E8 r9 l
2 j& D2 h- A3 a+ g! w
output mcasp_afsr,
2 O8 _+ `6 l2 {9 Y, A; \output mcasp_ahclkr,! Y0 m, t0 T9 Z2 g& i
output mcasp_aclkr,
3 x$ O0 y4 T- i+ d0 N8 d; ooutput axr1,
/ Q; C8 L' g) j
assign mcasp_afsr = mcasp_afsx;2 }% S; T! C0 B# z/ g- }0 ]7 I
assign mcasp_aclkr = mcasp_aclkx;
; L3 z8 z8 w7 m4 ^% _; `assign mcasp_ahclkr = mcasp_ahclkx;
4 x  K# |8 H- }4 M: |# sassign axr1 = axr0;

$ C+ i. T7 ^, i# ~, ]3 H
: F) Z! X# E" Q3 S
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

. F, {: `. G5 h" m9 a1 P, K
static void McASPI2SConfigure(void)8 e; M; K. O6 t$ x2 K% E
{6 D3 O: E! t, S( F
McASPRxReset(SOC_MCASP_0_CTRL_REGS);2 k$ H0 K: u% i
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! A9 L9 }+ Q+ H* \' Z% KMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 [2 k5 j% |5 \3 t* x, {; a8 ^, wMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! g* g5 J' A/ H/ m* v. W+ I6 F; _, nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& }6 ~: N6 s* K# S3 w& A
MCASP_RX_MODE_DMA);
" S1 |# W1 p5 ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) u$ e& k7 r3 e& V: f3 U9 B
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 }1 e/ [, t  }3 O1 H2 f
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
6 I& n- V) [1 h6 ~, J+ I1 M% X& g9 PMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 ~: n  k8 {! _, y2 X
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & Q5 p; e0 R" H  [2 E
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 M8 K: W. ]% d
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. b1 x  V) E, @% j. Q4 {) C; q
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- b# G4 i8 \1 w" t- ^8 KMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& d" g3 u, V7 B$ ^2 q* G
0x00, 0xFF);
/* configure the clock for transmitter */$ J3 L$ ~& ^$ i% k6 D1 U0 B
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% a9 C/ U" u9 l, G: BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); , [! m3 p0 D* t0 }5 N
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 }) s2 n- M& Z" k+ g8 I( B8 x0x00, 0xFF);
# \( P" Z3 g, E/ C
; [; R9 G; I- y5 O" Q/* Enable synchronization of RX and TX sections */
; j$ L( v- [' v9 \0 \; G4 PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
, \) v/ k; ]  K8 I! oMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) [9 k7 [7 L( F" J) d5 N2 `. ?McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 Y& \5 C& c, H; ]$ f# O** Set the serializers, Currently only one serializer is set as
& t+ a+ P% f& @5 D& i& t** transmitter and one serializer as receiver." I8 \/ C" b# g% h
*/9 ]' X# E3 k, i2 U  l2 l( a. }
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
& s! w! {/ S$ L! r  B6 U6 [McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 B( ~/ X- c3 A+ ]5 [
** Configure the McASP pins
6 D+ w3 W3 Z8 j& e3 c% q* q** Input - Frame Sync, Clock and Serializer Rx
& h* N# t1 Q4 d, ?; J" f** Output - Serializer Tx is connected to the input of the codec
1 |& z! U/ x( X7 o3 _$ r/ f: L- Z*/% }0 }4 L1 B' A
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 T( O4 Q' d/ H6 V% j, DMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: F( ?! s1 D& k, o3 l9 D; V
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" k+ }3 r% e5 [: E' d  ~0 s
| MCASP_PIN_ACLKX
8 s. Y' D1 Q: N) ]+ z% u| MCASP_PIN_AHCLKX
8 @2 j) [. G+ x- Y- }: v* ^1 z5 w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. t1 K8 h: [% s& v% Z$ P4 v7 C
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % Q- ^0 }+ v' Z  |: [& |
| MCASP_TX_CLKFAIL : Q7 e# d' `; }  T$ I) z/ h, b
| MCASP_TX_SYNCERROR
4 [; D8 L  W1 |! A  y$ Y| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 c/ E1 C. ?& ~# e: Y| MCASP_RX_CLKFAIL6 c% N$ S! N% ~$ k/ ~$ ^
| MCASP_RX_SYNCERROR 1 }) z. P8 H2 o
| MCASP_RX_OVERRUN);- p% ^, u( R8 t( b
}
static void I2SDataTxRxActivate(void)0 c* R# l) a3 X: _/ t
{! h( l- G$ \5 o- J1 r- p) a
/* Start the clocks */3 ]5 f, K, G* |% g1 `( A: ^: i, P
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' u3 i+ d9 {* L; z2 A5 K9 u
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
: f5 A! r% g) a2 ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  b! h+ t1 r1 S& C, f" }" [
EDMA3_TRIG_MODE_EVENT);
  q3 u1 C) N' n) m5 Y& M  O6 ~/ tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
1 y) {0 v, k; C7 IEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */& d/ q+ i) Q0 f8 C0 f
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' }6 S" f, x$ YMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 ?0 v$ T$ q# ~' v' y! gwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */- N. N" j2 t+ z' H+ f
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) ?8 W2 d2 M4 o
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ ~" w' W0 S- M9 l$ }/ G4 D; m" J2 {/ p
}
4 d" y* k1 ~' O! ~  r5 G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

1 @' ]% m  F3 c* Z- [" B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 04:54 , Processed in 0.039995 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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