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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12374|回复: 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,
! @3 b7 M! {4 s) g2 ~: Q, ]input mcasp_ahclkx,, k* `# p5 J0 y' a; f5 m$ O2 q
input mcasp_aclkx,
6 r' c0 b0 s" O, M0 s( ~# Pinput axr0,
  r% I/ ^& M) b) Q/ q% }- O' A% _: j9 m: e' I; X
output mcasp_afsr,
6 P% c* q! G; G% }7 @# \output mcasp_ahclkr,1 T5 g4 A0 x9 _, t% y
output mcasp_aclkr,
: Q: h4 w8 y8 q9 D% poutput axr1,8 Z: [6 M6 J) a$ j( W( {
assign mcasp_afsr = mcasp_afsx;
! J9 U0 n* F" e# _# n) [8 F% {' Sassign mcasp_aclkr = mcasp_aclkx;
$ s" |/ s. E" q# X  M. |assign mcasp_ahclkr = mcasp_ahclkx;
" D, e+ H& q8 |( Massign axr1 = axr0;
& c5 }6 k" x* g0 A6 B8 u8 i' H2 v
2 Q- U3 h! A2 u4 E1 ^% P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 N. n9 r( X# Q) Z+ F& r9 D3 U
static void McASPI2SConfigure(void)
! G# ~* j, E2 H  W1 k  Z{- p* [4 |% T+ ?
McASPRxReset(SOC_MCASP_0_CTRL_REGS);! @. e# w7 F1 z. p& O
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
( P7 P. d/ q1 \: G- XMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) x/ K3 r6 }6 d, a; ^8 n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. M7 ~" z8 r7 S* G6 \9 C1 C
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 R+ g9 t4 Z  Z: b& Q% [! P. c
MCASP_RX_MODE_DMA);, m! v6 Q0 r! C( \& @
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 T: N6 [" b0 i# A4 h( D0 MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, R! Q% C( M2 F2 K$ zMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 B$ Z9 K. O, S$ n5 cMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
2 `& l. G' a* b0 q1 MMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 q7 b5 k# [: y- A2 V* a8 r& bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, u) {2 C" g+ H6 m7 rMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- a; `8 X- ~6 ZMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% g% T! [1 K" n" BMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,0 r% u9 ?' @. r+ L6 y) ]4 N
0x00, 0xFF);
/* configure the clock for transmitter */: [% R$ i3 S  [- x2 G' T& Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 D# n# E0 A3 D5 c' Z+ J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- [7 F3 i. O: a# O1 ~/ q9 q5 o4 c5 gMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( B- I: X' n4 I1 }
0x00, 0xFF);
; G% ~: K. [6 C5 g
$ n) n3 k+ r! c" J. Q+ H/* Enable synchronization of RX and TX sections */
9 i: t/ B% k' z3 rMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */4 Y' W, Q/ p, K! w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 x( i# O2 [. `* P* `2 f2 RMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
- c& Q1 ?8 c0 |** Set the serializers, Currently only one serializer is set as2 H' X8 x. b8 q
** transmitter and one serializer as receiver.
/ w, t8 m, B' q9 i5 i2 G1 n) u2 t4 [*/8 z  N2 }; T, ^2 J) B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
* b( u& S- Y; Y' M; R. TMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! ?- Q6 E- j+ B& b2 X  d** Configure the McASP pins
9 @: K1 s% U7 n2 M& Z/ T** Input - Frame Sync, Clock and Serializer Rx" x" o+ t7 T" X' e' I3 \$ W8 I
** Output - Serializer Tx is connected to the input of the codec 2 L: Z" D; M3 _+ y
*/
  B. c& U/ Y( q' O3 cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- O3 H% F+ {4 K% TMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, j/ g; J/ F) |0 C, O6 m  xMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX6 o& z1 S. }+ _
| MCASP_PIN_ACLKX+ @' Z3 B) X& p$ ~; D
| MCASP_PIN_AHCLKX3 A5 W: ^. d# w1 Y3 a6 x
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 w1 W; l4 K8 v0 f2 ]; N# t% UMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / r4 K4 i4 o# @
| MCASP_TX_CLKFAIL 8 m# D  I8 i0 K: ~1 l4 s. N
| MCASP_TX_SYNCERROR
) d: ?  L9 F  k; }+ d| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* |% L% r; A$ w+ @$ L9 T: t| MCASP_RX_CLKFAIL6 A% {1 H& m9 t
| MCASP_RX_SYNCERROR & C. @' ]% ^: Y, n
| MCASP_RX_OVERRUN);2 I: y0 u! A) B! t. i0 f
}
static void I2SDataTxRxActivate(void)  N6 B1 y" z; h* y% Q# n& v* {0 W
{
2 P$ a0 K9 W0 s3 d/* Start the clocks */; E; j' C7 M( U/ H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; ?/ _6 ^0 v& l4 s! w5 K: lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
5 Y3 [8 t. K9 ~5 SEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% K1 X- U# S2 l0 \EDMA3_TRIG_MODE_EVENT);9 h' S5 s  N/ K/ o  A: n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # H' b& D! M2 |) x
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 }: v; F+ [/ R0 }# F2 m
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);8 v9 [# ^7 x" u6 B2 G4 {
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ P. k; J5 _5 ]4 Kwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 n  u9 N6 b  F2 d8 `( v  ^McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 x# z9 d6 N1 }. L. M8 E
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: F3 Q3 u- L. S! d}
' Y$ @& P7 i3 A+ }' }. w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 C2 s6 J, V) ]0 W$ \0 ]1 p% u/ b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-7 00:02 , Processed in 0.039973 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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