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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9418|回复: 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,
# F0 L; {! F& }input mcasp_ahclkx,+ K' w- h5 t  A2 {& ^$ f
input mcasp_aclkx,
5 o7 H# P9 J  a0 X4 {; s8 dinput axr0,
& W$ A% r& r+ f; `8 Q5 N! H" U2 U1 N4 @$ ~
output mcasp_afsr,
( A* Z: B! `0 L3 `5 n& z' Qoutput mcasp_ahclkr,! J0 g5 F1 u' f; |; t
output mcasp_aclkr,
  U! ?# i4 M/ ]- Noutput axr1,5 W. V+ o9 D! J
assign mcasp_afsr = mcasp_afsx;
9 ]% g+ L& }0 d$ H' Rassign mcasp_aclkr = mcasp_aclkx;
4 m% e3 X/ ?3 ~: b; G7 V% z0 U% _assign mcasp_ahclkr = mcasp_ahclkx;. s+ e7 C, N$ d; }$ B7 x
assign axr1 = axr0;
" D1 d5 X2 }9 J

. _' x) e, g; R0 S) p) t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 A- y" f6 w, t- Q
static void McASPI2SConfigure(void)
9 _" I( u$ Q8 U# Y2 _$ r+ P{  K) x- n' q! r/ J' A
McASPRxReset(SOC_MCASP_0_CTRL_REGS);3 I$ k# C, P0 G" b  u
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer *// C9 |7 [) u# p- D7 S3 A' G8 V
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 e& h$ H& G6 `# c% sMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, }# N" b, r' hMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  q9 v. o& m8 ]2 Q
MCASP_RX_MODE_DMA);
3 L! n& b7 }& i. Y8 y- jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 @/ u; j$ W) l; h. I$ N  n+ I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 k: r' x8 S! t- p
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' r) X- \: g# S  f8 |. [* `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! C9 _  e4 F9 f, z" |; ]McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, , I9 y- e3 p6 m9 a4 G, z7 R% y0 Y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# _: _9 P6 p+ E
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: |4 y' Q+ ~$ ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); : e) F; B% g) [, {
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& o+ x4 i' F7 I" s7 x' m; a, v0x00, 0xFF);
/* configure the clock for transmitter */
6 h; _& E# W; ^McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 v3 R% T/ S) I0 ?  `# MMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 q% ], Z0 d# s! rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ T. l& `5 Y4 t' k/ N1 V+ ?- z0x00, 0xFF);. S  O* p; @7 m0 n2 a  G

" M$ N7 k# S" `9 ], J+ w/* Enable synchronization of RX and TX sections */
) L# Y/ x6 v* j: UMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
! ~$ P8 A% P" v8 b2 ?: sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! z8 ^5 J8 L: e1 w7 h7 WMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) [+ y$ _/ |2 G5 c# ]8 C
** Set the serializers, Currently only one serializer is set as
% Z) R7 H, H8 {** transmitter and one serializer as receiver.4 P. w( C0 C$ [2 p1 r8 Q
*/& \& c+ X( _9 e; b$ U3 o
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);; m2 @6 [# h3 C* Q! s/ V0 q2 }
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* B. {* i5 l# p6 N. z** Configure the McASP pins
4 X: W$ b8 l% b  `: L** Input - Frame Sync, Clock and Serializer Rx" l' ~# g* ~4 F) M" Z: K
** Output - Serializer Tx is connected to the input of the codec
1 d( j' Y; [: ^# Z2 Z2 X*/- t/ c) D7 Y- j" c; ~9 h3 p
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 ^. n( a( D. p% Z/ D( A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* s* t( Y4 R; X- {McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" f  H  b1 z+ q- h) S
| MCASP_PIN_ACLKX$ t: `) n# R; ~# V) H# M) ]. L% |& ~
| MCASP_PIN_AHCLKX
  K5 o9 h) Q! Q/ U: y1 z! {" g. R| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
! L$ _" f( w4 L& RMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ X0 Y$ L2 Z8 e2 f& _- [: d| MCASP_TX_CLKFAIL
& o- V! E8 U; W# q* `| MCASP_TX_SYNCERROR
' n0 [/ Y5 q- m% F. i2 @( Q  K| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " a$ [7 \" N& e& F+ L" A1 S
| MCASP_RX_CLKFAIL3 ^3 `4 {& |, q6 ]. t4 u3 g$ A
| MCASP_RX_SYNCERROR
8 C: `! Y+ b' w6 r| MCASP_RX_OVERRUN);
" q/ _+ t' @; k1 D" x/ _$ z% s}
static void I2SDataTxRxActivate(void)
$ r& g* |, g0 f{9 D  x& P! B4 `9 V0 p7 @% T9 E
/* Start the clocks */4 t, ~# ]& P; X: A) x
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 |' @8 @- }0 V  l) Q: E3 \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 M) c- y+ `: u) [. J' u" `3 DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, A% L3 d3 J! [; Y7 l
EDMA3_TRIG_MODE_EVENT);* b* X) c+ |" o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 d8 k0 ?$ C6 A; H
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 I: l/ m% d) CMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( [2 s0 e# U+ F: AMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! u2 b5 I1 o$ D% U: K3 vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ i: o  s- U6 ^: ^2 O$ O
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 `2 X* ~! j+ K. z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 E  ^) |4 \" A9 V- i# r5 X" m
}

; Q2 m$ x! F8 I7 v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% G- C4 h0 W/ C, S. x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-9 03:19 , Processed in 0.042526 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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