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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12886|回复: 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,* F! E" A) V& H- X$ m2 ?& h! S
input mcasp_ahclkx,
2 }5 m9 k, e2 S3 m  f1 E# kinput mcasp_aclkx,
/ f' R) m/ q, e$ u+ winput axr0,
5 f7 `0 `1 g) {+ }* b: `
* ]9 p- C1 V! J1 ]output mcasp_afsr,
+ s" T8 e( b! ?9 M) {output mcasp_ahclkr,8 Q8 g' n9 j8 U9 e
output mcasp_aclkr,
/ A6 Z0 i4 d6 k# Q. k. voutput axr1,7 v! O7 `( v. ?8 f
assign mcasp_afsr = mcasp_afsx;8 W, N& S! n8 H! q
assign mcasp_aclkr = mcasp_aclkx;
7 L$ n* V+ U/ `$ n7 T7 y; n. b" Cassign mcasp_ahclkr = mcasp_ahclkx;
; \# {6 F0 n. B& G0 Q/ ]4 kassign axr1 = axr0;

1 Q7 e6 r2 \! B6 j9 g3 }' T$ @
# H9 h" x/ T5 k7 b% t" f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
6 q9 p1 \+ Y# y5 H' I2 G& r
static void McASPI2SConfigure(void)* B, w4 b% T# D. W/ ?" O' |$ L
{
6 P9 w  ?9 j" F; i/ [. \McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 m! M" \3 O2 ~; `! I. O8 e% MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 G9 X2 A! K9 m) P2 g* Q( M7 e
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
0 `) L  b  e  l9 U* e* U% OMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# U8 d; }3 \( u/ p, g/ ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, Z4 t0 R1 G  U; A: L# X
MCASP_RX_MODE_DMA);
- O' M0 g: {1 V" X( g2 NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 m7 ?; x% u* M2 R" d* f1 m6 \
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; h" C$ C+ M3 J' dMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 F+ U4 P6 v( ^0 F( [# r( ^MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
/ w* @# t: Y7 Q! }% VMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! `, c, Z# i- ?2 K7 k# U( d
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( y8 k6 G& B& S3 v, B
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
) e8 W) F: q4 M+ b: U  b0 u1 \McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- @: F" Q+ x7 T  R! {+ XMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,6 p( \9 o9 ~: v5 k! Q8 B8 y
0x00, 0xFF);
/* configure the clock for transmitter */
# T* Q. [0 o, I$ Q+ A! JMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 z. U/ q1 I0 w) L2 F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 m$ m" l& T& M' vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 {0 S0 J( C" v6 j
0x00, 0xFF);# j1 M. j  ^4 u, {8 M

; w+ l! f! j3 F- M( j% D$ l/* Enable synchronization of RX and TX sections */ 0 ~0 w  c& j( l) p9 g# @4 x
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
0 A: l" x! e: |  \6 e4 tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  r  C3 m  ]- B% ^; m& Y# l1 {McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*4 P/ P: i3 N: C& i  E+ Q% r
** Set the serializers, Currently only one serializer is set as
& w5 ^; Q! j% t$ s6 U; n** transmitter and one serializer as receiver.
- e3 ~8 e$ r8 C5 o& q6 E9 F*/$ }& \3 X6 V) e9 H. `
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 t4 Q8 y9 `1 J' u0 y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 ^7 F" W4 C- R6 G0 f$ n** Configure the McASP pins , l9 p2 G  o& T- U. A4 K6 ]
** Input - Frame Sync, Clock and Serializer Rx
/ a/ K2 m/ U. A$ o9 \8 _( U' w** Output - Serializer Tx is connected to the input of the codec
: g4 f$ B' R) v9 |*/
$ `2 d! @+ Q# ^% xMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 Q$ d3 Y+ t2 [# z" [
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
* m& f, P* s" c  P$ QMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( S$ ~7 A6 l3 P: V, W8 \: n| MCASP_PIN_ACLKX
+ C+ [, `2 R# [2 }& S- O' s| MCASP_PIN_AHCLKX
- N1 M# Y& M% W: G1 p4 w8 K| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" v4 p9 g7 `6 z! X, l; z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 R& Z% _! r4 P; `& || MCASP_TX_CLKFAIL
, K' v3 v4 Z# \! O6 ?+ @7 K% R| MCASP_TX_SYNCERROR& P& P/ ]8 P( d6 o5 ~
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
: z0 M" \" v1 ^; `| MCASP_RX_CLKFAIL2 i9 `$ r( Q. O( |4 a: Z
| MCASP_RX_SYNCERROR
: A0 Y- u; s) b9 D4 X# l: M| MCASP_RX_OVERRUN);4 s# _. B; l/ {; }/ {8 G
}
static void I2SDataTxRxActivate(void)6 V7 A- E0 B2 w" U$ }4 M" @+ o
{
$ p* a2 w9 e- n3 O3 k& `0 e" H; [/* Start the clocks */
5 J0 j) n" s* PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 w1 ~! E$ N2 z% T6 k( h) QMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 B- p3 J1 \  q4 a6 FEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% U5 t3 ]6 k3 H! h
EDMA3_TRIG_MODE_EVENT);6 E) J& [4 p8 s4 V3 D: Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& m4 M  x4 z) L) UEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% M2 ?9 p7 A% n' `4 E7 @  Q1 _
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 q/ t$ W- B  s
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
0 ]5 |. A6 q, awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# y6 p" ]  I/ v0 V# E6 X  K  l
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) f9 w# I( R  Y* u3 z! @' H
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);  k2 ~# f# |; B9 a9 T; Z
}
+ u& O4 Y0 ^/ `' O7 L8 y! E
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; y3 v/ D; B* c$ z" l+ p9 D$ J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-13 07:29 , Processed in 0.046265 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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