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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& c$ Q1 W2 o; }) J# Ginput mcasp_ahclkx,
! d4 ~# S& s/ z9 b" m* e1 }input mcasp_aclkx,
, r' M( m2 i1 t3 L. A" B; n" sinput axr0,
, _; r; X5 c& D* X, o: e- J" [; u+ l1 z; f2 x  B
output mcasp_afsr,5 @: f* R, y$ v- I
output mcasp_ahclkr,
) P4 y  I' o6 G$ a: J: f# youtput mcasp_aclkr,
0 i) m4 W6 ^: C7 m4 R2 Boutput axr1,8 L! o4 [' P; o8 c/ l! k+ x/ G
assign mcasp_afsr = mcasp_afsx;6 \" M. x+ @0 l
assign mcasp_aclkr = mcasp_aclkx;
& e3 {3 r" {0 H( l# L) Eassign mcasp_ahclkr = mcasp_ahclkx;2 A) t' j6 b- P! D
assign axr1 = axr0;

8 m- ^8 L5 A, ~7 B# l; M
" k8 D2 \! G3 b: g2 Y0 j2 Y; B6 ^
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; A8 Q6 m+ t6 E$ W1 J
static void McASPI2SConfigure(void)0 N- M7 [1 P/ K6 X
{
; Y- J4 S. Q0 L1 v% T! _McASPRxReset(SOC_MCASP_0_CTRL_REGS);% u6 m! f+ P: p. E6 V, b
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 H  x2 K0 X+ i/ aMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! O2 u# ]5 F3 `* P, K- GMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
2 j$ ?! [* t  k& {' jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 ^  v5 z, l. r( s  ^$ x$ iMCASP_RX_MODE_DMA);
3 ]% H4 G$ c) r9 J6 J2 LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( S7 e  K9 h6 k# b
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* @' ]  z1 q' q! ^McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
: M8 [2 C4 f+ _6 X9 `MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 G. i3 v8 t! R$ u0 d5 h5 o1 WMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& N6 X; q2 }  q. {1 M8 X" S, f  xMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ Z" n0 D# x) J* H2 LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 u* R* B6 D4 l- E, p4 f8 F5 d3 zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ H! Q9 ?9 l8 [
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  O5 ~9 M2 D% |; Y( M0x00, 0xFF);
/* configure the clock for transmitter */
1 A: s2 t( v0 D$ j2 JMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ Z7 f! w4 A4 p+ W& L- ]McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& ^- E7 g  @5 QMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,  E* W6 A" m, z- R  ]
0x00, 0xFF);% u2 t. }8 ]" i) C8 @( E+ c7 D
2 \$ E& [( S: y- _8 y- W% p+ J
/* Enable synchronization of RX and TX sections */
+ K# x  \5 I" HMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. l7 d. R5 F, Y4 g. F' B- q& J/ @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 m$ O$ b5 b4 FMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' S( c7 y5 u1 w- r' E8 d** Set the serializers, Currently only one serializer is set as. M7 \6 `; q  c0 W
** transmitter and one serializer as receiver.
3 U' {2 \6 i, E0 i4 Q. w*/
2 S# H. Y1 ^2 M, U# I6 r( ]McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 \# F4 l& V. h0 j( f
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  E& m8 d7 Q1 x& o) d% \
** Configure the McASP pins
' a/ _+ s" I% e4 X; o* T; [** Input - Frame Sync, Clock and Serializer Rx
) S; K. H$ h; @** Output - Serializer Tx is connected to the input of the codec
/ h& A- C, M2 y0 C: x3 Q*/
+ X0 N6 f# r# j) v6 G% dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);. U. M7 [3 c2 S& N
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 r' |& P2 |: t- A9 D' m
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: Z6 D, b9 L4 d9 s  `! x2 U| MCASP_PIN_ACLKX, k2 D9 U4 a0 m0 b
| MCASP_PIN_AHCLKX
1 a9 `9 V3 f6 T1 u  b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& l2 d  {4 D7 ~3 NMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 Y3 f. N$ l+ i- V4 F! G; ]
| MCASP_TX_CLKFAIL
+ p+ P: r; Z& C5 [8 M| MCASP_TX_SYNCERROR
6 C% ^. r8 b$ ]( u9 E# I| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 `0 |5 d( @" N9 F| MCASP_RX_CLKFAIL1 Q! {( b3 D+ X' r1 m
| MCASP_RX_SYNCERROR ! c+ C" @: m& Q/ x4 S/ N( r" \: a
| MCASP_RX_OVERRUN);
% Z: p# _; ^4 H0 T- M) K* R}
static void I2SDataTxRxActivate(void)0 n+ p2 }* Y% |! T. ^
{
( l) _' I/ J. ^. e$ u/* Start the clocks */; {7 [* r$ w/ j- a% |- L
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
# p8 N. `- t% V# @4 Y" WMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 o/ Z0 R) @+ L/ G5 `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
3 J+ m- X) j% ^/ g: i  _2 TEDMA3_TRIG_MODE_EVENT);) F; H8 k8 H+ i3 z+ |
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * U: Z& w9 w& E, j' N  [
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) w* j$ ~" ~5 o9 x2 sMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 Y# }  O: s7 q4 |0 ~4 g3 e; GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) k! ]5 e/ c+ g9 u7 Y( v
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */5 Y7 u+ X7 d% c8 c: F" Q3 c4 S4 R
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 U% v" L' I- E1 f! h, QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. C9 ?3 Y% W" |; }- i3 m}

% I. r7 Y9 r! f" [! ~, K3 f, q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

) O0 v- v& ~4 I7 c! ~# h7 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-3 23:45 , Processed in 0.038524 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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