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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12494|回复: 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,
, A0 Q7 [% t! ~/ X9 A; ?7 Kinput mcasp_ahclkx,
& ]8 D# z# F5 ]$ v( Z8 u" Finput mcasp_aclkx,
9 G' b+ W" \& l' X1 O0 m7 {input axr0,
! J: k: p: Z8 w0 d" O. W2 g+ ^4 t# v( _6 Q' m& h- ^9 g
output mcasp_afsr,2 @4 W! E- K/ e( o8 D
output mcasp_ahclkr,' w* d- S1 i4 Y3 N# Y
output mcasp_aclkr,
( L2 d$ Q7 I% u- ]! _6 g0 }; poutput axr1,
. a5 c- D  s+ ~3 ]) E" {
assign mcasp_afsr = mcasp_afsx;7 G9 ^! j( a8 L0 m/ n
assign mcasp_aclkr = mcasp_aclkx;; H$ U% O7 f! }  b# o' e9 S% r
assign mcasp_ahclkr = mcasp_ahclkx;
+ |9 P7 F- Z4 G. A: ^, a, yassign axr1 = axr0;
; W/ V- n2 l) n$ }0 P4 C. ]- ?! F4 D
5 }8 u- |5 h3 I- X8 `  k6 a9 f" J' u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: L% T4 ?5 w3 W# q4 _! N
static void McASPI2SConfigure(void)' v5 L' ~; r4 l" Y( U+ H1 ^1 y
{* G- @/ G0 e) {2 u$ u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 K2 e% e/ r# I$ ?3 F9 dMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; h4 [( O* G! E# [McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& O4 @( b7 ]$ u
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */: H+ Y6 ^$ f  g6 k7 q1 {
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' Q1 |2 G8 q# U* Y& q; Z, o$ z
MCASP_RX_MODE_DMA);
6 G+ G! ?4 F* L* N6 ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," v' j  J: e, p$ ?
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 \/ _# Y% u; AMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
( t% Y+ N+ m4 ~5 p% vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 l, z1 ?! ^4 O- S9 V- n7 BMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 e& O3 k; R0 G; wMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */' X8 n# l: |' [! U! r$ c
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. i& g: Y+ j( o$ v8 H& z) h, Y$ }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 y1 h" {: r5 B0 ^# }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
% S( V* ~) _1 j  k0x00, 0xFF);
/* configure the clock for transmitter */- A' W- A( Z: ^
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ ]6 H5 I" U0 T* xMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  p8 y) L# \9 O4 o7 ]: }) yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) J6 P$ j& U* h
0x00, 0xFF);  Z8 f- n" W$ o" [3 r) Y
$ T2 J- C4 k: B8 G
/* Enable synchronization of RX and TX sections */
8 z. C$ x1 y% D. b6 j3 c+ MMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: G- v3 m2 z+ X, \, v6 \
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) x, `1 r( p! |' \3 Y9 X$ a% ~  EMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 m0 {" f$ A9 y) _- v. e
** Set the serializers, Currently only one serializer is set as/ W2 i: v0 J  K8 P- D
** transmitter and one serializer as receiver.
8 v6 f. ^# W; y*/
9 s& I" J+ u' o6 I, O) I" Z4 w3 IMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ \% W7 y8 F" j) G# e8 ~0 z' Q( cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ L0 r# |- G% x' B$ ?0 Q( n$ m** Configure the McASP pins
# [$ r( {' z) E4 |( C** Input - Frame Sync, Clock and Serializer Rx
9 h. I4 n$ K# G** Output - Serializer Tx is connected to the input of the codec - Z  n( y3 x& }: g" ?$ C
*/
" _3 Z* v8 F0 D- e  c* D7 e, \- uMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);5 H- t" i, ?6 q" O6 X1 R
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 E& u1 b2 T; n1 B& l
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 U3 z0 g. a3 j5 P0 k
| MCASP_PIN_ACLKX1 s0 ?6 t5 {- I: F" ]
| MCASP_PIN_AHCLKX
, [4 k  w; h& K7 N| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */0 \# u* Y+ o; _1 a; O4 @% R
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' Y( p) L" l: i/ S; U* _| MCASP_TX_CLKFAIL ; O% Q+ g) A6 s) h5 p$ U6 c: R
| MCASP_TX_SYNCERROR/ V: @# T) C, m$ u
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 O! z& P& |2 g- _# ?| MCASP_RX_CLKFAIL1 X  ]* F+ p0 Z/ w6 b$ t2 z& @
| MCASP_RX_SYNCERROR
7 g5 N) k7 ?# R7 S. n; C! ^| MCASP_RX_OVERRUN);& s  ?! Z1 X6 J
}
static void I2SDataTxRxActivate(void)/ J8 ?8 B- K2 x5 J# C; q
{
6 c( L2 ]  D2 a, a/* Start the clocks */8 c6 F; C8 m6 [4 w3 A/ e
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- F( Z7 T7 F' F. Y5 ZMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
2 `1 U$ ]/ l4 b8 yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" E3 i0 |" S4 |. H7 U* x6 VEDMA3_TRIG_MODE_EVENT);# T* ]8 R' N. y" T* f# t/ {) i
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- @. g3 F: S% d: ]' d7 |+ Y9 CEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 B; V% l/ T" f$ _& t) H# JMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: x( t: s8 j3 t) C% S
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ j& L2 V2 g% M8 n; ^- ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 Y9 E6 ~2 M) m2 FMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);! n. L$ z& f+ s5 C( L
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);" w, L: Y, f  d: `2 O1 e' J
}

# ]% T/ V! y( _" }9 c6 z, R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 A; s5 ^" y8 i" K* i: w+ `- J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-21 07:24 , Processed in 0.043392 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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