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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12346|回复: 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,1 e0 M7 v% X" Z. {% ~; L0 `/ `
input mcasp_ahclkx,& n+ g6 a: f5 S- `  |2 p5 k
input mcasp_aclkx,6 q( G/ r  N, @' [% Y1 Q
input axr0,& p# V3 J" _/ c

0 F* z, G/ o) z7 koutput mcasp_afsr,
) i/ B6 T$ o; K% ?5 Y1 S8 q' Koutput mcasp_ahclkr,/ g0 p/ H  q: X! G' w
output mcasp_aclkr,
8 Z( g$ c1 }" m- Boutput axr1,
+ s6 \7 a2 o& X3 s0 m7 }
assign mcasp_afsr = mcasp_afsx;
) e2 Y: j" J5 E: W, g" massign mcasp_aclkr = mcasp_aclkx;: h1 C5 n/ A* ~7 T5 _% j) d
assign mcasp_ahclkr = mcasp_ahclkx;; V. ^2 Z4 `' M# ]0 l
assign axr1 = axr0;

/ Z, u$ s+ U4 V; Y" _- ]8 x" p+ y& W: |) _. i+ E9 i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, s/ R: t1 Q) N& g- e$ A
static void McASPI2SConfigure(void)
3 K) D7 K" T" D{: ?$ r8 f( R! M" y( I1 p" b3 v7 e
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
' q4 U& r* _. GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
6 o4 {8 p2 }$ ^* S: y; E  CMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; Z" ]: r  C6 i( Z+ c
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 u) i5 [$ v$ w0 r2 Y1 K& R/ Y
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( y: g. M' g2 r/ t9 d
MCASP_RX_MODE_DMA);
" _0 `1 v% V; x7 d: O  KMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' x8 h3 I1 z9 @# HMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 |( c. G$ z- [1 iMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 H) F) Z; A% M9 v& v( G
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 Q( y2 i9 \6 f' Q6 `& p
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ f! q$ J: X9 g5 K6 ?( I* kMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
5 G4 M! o7 g3 a2 M3 o6 o; `McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, G8 C, u7 L9 L# A* G4 a
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 I" l4 m8 }! R- p
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( B" x4 m5 d) c1 q" p! Q+ L
0x00, 0xFF);
/* configure the clock for transmitter */4 _5 ^1 V" ?8 b" O2 C& i
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( f; K4 X+ o$ K& w6 z6 yMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# ^% G3 K9 w! b: X+ k* G; I% KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; c# I! U2 V% \+ E
0x00, 0xFF);
! I5 ^* l0 a' Z$ X% M+ w" s5 ]( n
/* Enable synchronization of RX and TX sections */ ! Y4 e$ ^9 f1 k! H9 j) l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( }0 ~4 y; C8 F; k- PMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);8 a) N: E' i8 p4 M4 m
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& ]7 q* c5 o4 W3 \
** Set the serializers, Currently only one serializer is set as
( X2 v5 a- ~( ]+ b1 O** transmitter and one serializer as receiver.; d% ~! X, f3 I- W9 ]- \. `
*// G9 @) w7 B4 _1 e  v- B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);/ J% i2 b8 P8 {4 j" Q" F  D" j
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ B8 h8 o- Y$ }. a, I; p1 a
** Configure the McASP pins 5 d* y2 {. H, U: H  |# l, X6 I
** Input - Frame Sync, Clock and Serializer Rx6 ]3 G8 f- m% F/ A/ E; ]% A
** Output - Serializer Tx is connected to the input of the codec
" P0 E8 U8 }2 g% o! d# j*/
+ L8 t8 l0 h* `0 E) p& NMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* O1 ?' b: g1 ?4 r0 }$ `
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));- n5 t8 u" W1 l# F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
+ p- @6 C# i' p9 s9 K| MCASP_PIN_ACLKX( {6 _% [( ]( T. T7 a
| MCASP_PIN_AHCLKX# R- K4 o8 H8 B8 J
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. D* Y( v: N6 b! S9 q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # a# r! U7 O' G/ S6 Q% D& g
| MCASP_TX_CLKFAIL ( N  b; {5 V5 r" k! `! X; c
| MCASP_TX_SYNCERROR& `; b/ s  Z* ^2 K: u. t6 G
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& }8 M6 m+ \$ E: N| MCASP_RX_CLKFAIL5 q1 b$ Z- v0 p7 z/ ?
| MCASP_RX_SYNCERROR
6 a. A% B# A/ Z/ [& Q  B| MCASP_RX_OVERRUN);- Z7 D) q8 D, i% o& W* k  C
}
static void I2SDataTxRxActivate(void)
; I4 x2 l# v  P( ^, P4 ?- a{/ B/ @; [3 J  g! s
/* Start the clocks */! c! R( H: r5 @0 h# l- l! ~
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! b6 S! `6 s# g0 Q1 t
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( o9 c9 L, L$ h3 J! J) `5 ~. o/ G! I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  C+ h/ p/ C2 _: I. |EDMA3_TRIG_MODE_EVENT);
" U3 {- n+ K  ?) P* t: {) }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 T/ [5 r0 ^- i5 T5 ?' }: Q3 LEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 {! C5 o. a6 O# H- L3 }$ A6 }McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  Q, K8 D" a! k/ V+ j0 S" `! d% lMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
; m+ Y$ C2 h8 S; H! a3 wwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& V) @# ~/ j# `. m7 f% N; Y6 IMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);% v/ x3 F% A" I( s! I0 L
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& f' H1 t3 M. k- _0 B}

  F& `  d# e4 A! _
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 r' q9 I8 ]3 n& T# W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 03:41 , Processed in 0.045271 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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