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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9172|回复: 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,
: E. }3 ?0 \; D  ?+ d# w5 t' kinput mcasp_ahclkx,
! ~- w* K$ Z' E, ]6 Z5 f) Zinput mcasp_aclkx,4 Z  Z, j% s, Z/ _$ x
input axr0,
1 J; }( w4 B8 M2 e% x0 u1 q/ K" S0 C1 P
output mcasp_afsr,- h4 B" ?5 J8 r
output mcasp_ahclkr,5 @8 H/ o' U+ P8 m
output mcasp_aclkr,8 N& r& Y+ _/ E6 b. n( Q3 c. ]
output axr1,
1 ~0 h4 ^6 k# J6 D
assign mcasp_afsr = mcasp_afsx;
- T- z- s" x! M, ]assign mcasp_aclkr = mcasp_aclkx;
( ]% P3 k: J4 V5 {assign mcasp_ahclkr = mcasp_ahclkx;
1 H6 ?% h$ c4 m4 X* a. A  T) Yassign axr1 = axr0;
: `: n# ^# D* e" A. V3 ?. I
4 Q( B2 X1 l) M# g$ B3 l) v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# [6 x: l& N" \8 X
static void McASPI2SConfigure(void)( e( a# O. l! n- r) `) U
{% f4 ^4 O8 n3 v: s/ t; @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);- b8 R) R; R# u8 n) _- G$ D4 p' I
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
3 g* h; ~# |7 z% r! r' LMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ I: \+ H( d+ X0 S) X: LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
) k, @5 j1 \, gMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# u* F0 K  c. f3 E
MCASP_RX_MODE_DMA);
6 ]- ^5 j! e3 mMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 O) }# V# w) F' `
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' k( D" W% o  ?( Y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 5 G( ]+ v2 v2 o, a7 c, b
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);( W1 _3 B  [+ N3 l; C
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# [0 ]* x( h& m; g5 i2 jMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ S8 ]) }9 _9 J7 DMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ }" W6 ~- v6 I( S7 U- VMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
: R5 c. Z. G$ K2 R; P3 mMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
: }. R0 U  ~% Q0x00, 0xFF);
/* configure the clock for transmitter */  O& G! m& G3 m( a6 [9 Q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 u: T6 K; f( ?- Z  ZMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# g' ~  S( \  Q' j" mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
6 G. u/ v8 S+ ^8 M$ H. a+ P0x00, 0xFF);
0 b) S: b/ [5 c# l6 M9 \
9 |  ]% N+ T" Y0 C4 @- j4 c/* Enable synchronization of RX and TX sections */ & r- I( V& e& h8 B: v5 {  W
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
/ W$ ]7 }9 R/ j% M& ?6 \. hMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 E- S$ Q+ h" }  x$ @' Q5 F: h2 gMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
: M! ^! M: @+ H* K) u0 `9 d/ y** Set the serializers, Currently only one serializer is set as: x8 v6 Y9 \1 \9 I7 H
** transmitter and one serializer as receiver.1 {7 R, [" Z" m+ W0 A% Y7 |
*/% H# o* h" ]) H6 _6 J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, G6 d9 ~/ Y& {- FMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 {; S; e. C9 ?! ?& e$ w: m** Configure the McASP pins 7 k) w5 m/ V3 g7 g% X
** Input - Frame Sync, Clock and Serializer Rx
0 n. R! O/ O0 `5 s, b9 O** Output - Serializer Tx is connected to the input of the codec 6 C! r; C. t  e; v  m; ~  t
*/
3 s$ N) F& r) ^) c+ \McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 H5 j" s9 X* Y) I$ R$ M1 sMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, z7 r) s3 Z( e+ K$ P% i. k8 v% tMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 u5 a3 _. T5 D, y8 _| MCASP_PIN_ACLKX
! j$ F  s. B, k4 A7 ]0 X) \| MCASP_PIN_AHCLKX
! M3 A* {- i0 A5 P1 c# i| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
* v* E& N* A1 ~5 [# ^$ MMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR : b7 x8 m' k0 {3 v
| MCASP_TX_CLKFAIL
( z# @9 C3 ?. j, n5 b| MCASP_TX_SYNCERROR
& o' p, y& F8 j| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   q& ?! f0 p* G& j3 c
| MCASP_RX_CLKFAIL; N+ v9 f7 _/ U7 `3 P$ ~
| MCASP_RX_SYNCERROR 3 |2 ^3 K6 D( L$ ]- Z9 g2 L7 [
| MCASP_RX_OVERRUN);. g( w5 E7 G8 ^+ W
}
static void I2SDataTxRxActivate(void)8 U7 n: y1 O8 G0 v. W
{5 n, Y5 x1 A$ C9 |# o$ ?
/* Start the clocks */
$ d) J/ p- C5 o* e: u+ QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 W7 x4 n6 t; [McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ t4 y$ Q5 `1 k1 g$ y3 D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. O1 x' i8 Z$ p/ A7 M
EDMA3_TRIG_MODE_EVENT);2 u1 z9 }# Q( t
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, $ Y' a9 v1 N1 f' _. ?3 B" v
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* n( M' l$ L  B; v( KMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 m- k8 c5 T& i' H+ h5 l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ v( q6 X- n2 h1 T4 Owhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */. K8 l, X" M- }1 D5 E
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
( ?" [  U. K/ r8 c1 }McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! a& u2 }8 R. c) i( V+ [* o}

) r( p. X# T5 B# ^5 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 M1 b/ l! c# I) W& Y; ]* C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-25 03:53 , Processed in 0.039542 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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