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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9135|回复: 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,7 b2 m: X& \6 j2 A. H& k
input mcasp_ahclkx,
' p3 H7 Y* |; v% v3 L( B# ginput mcasp_aclkx,
: m8 Z! b' r- [: Y# [- ^+ k% E$ sinput axr0,
  M3 M8 P% }  A- d
9 v5 c4 `" `5 A/ t- o& d% y' K+ X# F9 _output mcasp_afsr,
+ Y2 d/ c4 x' z5 p! U! G# ^- {7 l; x/ x' ooutput mcasp_ahclkr,
8 E  H3 c. ~! G' U1 `1 F7 c1 uoutput mcasp_aclkr,
; j0 @3 X9 V% v( L+ noutput axr1,
% m- R2 v  X+ c5 E
assign mcasp_afsr = mcasp_afsx;
% ?$ u( k2 B  J$ @, D! R; qassign mcasp_aclkr = mcasp_aclkx;
; Q4 W& |/ H4 G2 w5 |assign mcasp_ahclkr = mcasp_ahclkx;
  G4 i8 b. s4 B+ H7 tassign axr1 = axr0;
) Q5 H; e% ^7 w: i" w; @5 A5 y

7 Z: o7 i2 c* u7 s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

* v) J0 \9 g% U
static void McASPI2SConfigure(void)  M0 I( m1 [6 F% T# V4 u
{( i2 ~3 p9 j0 Y5 R' J8 e
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 |' ]$ g' W$ L$ _McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 T5 ]% m3 H0 S. {4 ^4 [, oMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
; [! T) o  A3 G3 g! \; `6 u% eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 _! w6 l! z2 s: s* z$ gMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 y8 A6 h, K7 k) z
MCASP_RX_MODE_DMA);& v1 J% [4 p* [- K9 P
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 p* p; @2 p% K+ |# r0 bMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; X1 M) s6 E" p7 s& W
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
1 l; I7 U1 c8 s5 U6 A- EMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);* L- |7 @1 D$ D3 H& s6 x
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. U- |. u! u5 ?$ I; ?MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */7 b, M+ T) |. N" |4 ~
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: j, Y6 N2 _; o
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; P2 h: D% q; a3 [4 |McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) x  I: Q! A6 e5 E0 l0 p7 W5 s0x00, 0xFF);
/* configure the clock for transmitter */4 \4 H+ q3 Y: E/ j; J& J( M6 K9 b6 z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);$ e8 d! r: o' f  a' p0 G8 x2 \& O
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 6 n0 w9 r0 H6 A& g, `! V0 Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 |  N7 C+ s- d0x00, 0xFF);
' K+ S* W9 |$ R$ n  q6 c0 z/ j4 g
/* Enable synchronization of RX and TX sections */ $ \' B$ Z5 a4 z# m2 {
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' _+ X, J# q: @+ i
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 ]. @; y7 s) Y5 I8 c
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# W, v- _7 T. B& p- @6 C0 Q
** Set the serializers, Currently only one serializer is set as) c9 T1 Y" C  b: s# J5 M
** transmitter and one serializer as receiver.
6 C- W* g2 s* t. q. I*/. U, x( v' g. j* o& f4 F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
5 d, s+ m  [  k$ t- Z: nMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ Q9 |: U, T1 x  U/ L$ `** Configure the McASP pins
* I+ w' N( f: }1 C3 Q** Input - Frame Sync, Clock and Serializer Rx7 }, q: I1 @+ o* b9 G) v1 U. a
** Output - Serializer Tx is connected to the input of the codec ' g- W3 o* Y, N6 X
*/2 x; s' K2 b- R% y3 {% z+ c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);5 o9 ]$ t4 b& e, C# [6 \0 Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));6 J7 s3 [& N5 L3 x6 L2 {
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX, {9 j& M( i1 [6 j8 a
| MCASP_PIN_ACLKX9 G7 H" e- q+ E8 q1 W" |% `# G
| MCASP_PIN_AHCLKX& Z5 ?; p3 i$ K2 E0 [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ i7 s- ^) O8 z% G
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" S  @& M1 I2 Z+ Q4 E| MCASP_TX_CLKFAIL 6 C2 a2 u7 j6 O1 f# Z0 ^6 U
| MCASP_TX_SYNCERROR
1 U- w/ ^/ _' O2 ~/ w. T| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' s/ Y9 e9 u+ H9 F. m
| MCASP_RX_CLKFAIL
" l0 b" L  |! F- T5 R' ~+ d| MCASP_RX_SYNCERROR
8 C% `3 a+ z* D) r4 I| MCASP_RX_OVERRUN);
1 y. _, C$ E  U' [* z- \3 Q}
static void I2SDataTxRxActivate(void)
/ P! f% t/ W! j1 V{
+ _2 R0 X- r4 j, i6 ^: [7 `* z  X/* Start the clocks */& b/ o# Q8 L+ _- `2 S
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 Q6 J: _, l2 GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 a" o0 `: B8 REDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 s5 a+ L5 b7 j' g0 z/ Y  M4 WEDMA3_TRIG_MODE_EVENT);8 `; u1 d/ h3 N+ R: C
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 h8 i* s' _" Q  k; a: }( E& eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) F* y& @  P' G* N4 h" f1 sMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
: q/ n8 x/ u0 ]* E" ?3 dMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
) V  Q' t$ @' u) Zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" P7 G: w1 b* t4 r' s8 v" P
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 ?+ g9 z4 G* c5 Y, uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( z: k5 ?7 l1 ?% h, t- r}
  U* d) n4 f  N. y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 \$ x0 F3 Z, `# F6 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 16:42 , Processed in 0.036213 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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