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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9692|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
& Q, {+ R' ~$ ]3 Binput mcasp_ahclkx,6 n3 t  O" X( f( k) |
input mcasp_aclkx,
, s+ w) T0 l: j$ j% ]" D/ z' Einput axr0,
8 a. U3 W3 Y; D& P! q4 t. p/ {5 {" T3 I% D2 `" H: M
output mcasp_afsr,- n+ z$ T' R9 J2 r' C8 y" s+ ^" w; ?
output mcasp_ahclkr,) V1 o9 H0 K$ l  ^7 ~
output mcasp_aclkr,
/ c; Q: C* B6 Joutput axr1,
' z+ m/ Y* V$ b! y. ^1 Q
assign mcasp_afsr = mcasp_afsx;
! b1 M  Y" w/ S. o9 w# P, Aassign mcasp_aclkr = mcasp_aclkx;
. r" K9 D0 H& C7 v# jassign mcasp_ahclkr = mcasp_ahclkx;& p& k5 `1 a- K7 O' ?' h3 t2 V: {
assign axr1 = axr0;
- l& P8 l; n. E/ ^) c: w+ w$ _2 y
; l* `/ j( ?* M+ |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( K) g& v' W; d4 }' O
static void McASPI2SConfigure(void)
! E8 C4 M2 z6 C{
* j/ ^- f2 h) N7 O) U8 uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);  j) z0 O& `1 l2 N
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */8 q* o4 b- V- u! S% v) i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);" m8 S3 q% N. s( {
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! M/ ^$ Y7 M0 x+ j9 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% r9 h1 A; t* J$ I
MCASP_RX_MODE_DMA);
/ r: a  |' t" H4 n7 ~McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  D; o% h1 e$ r# U) Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( j+ s( u2 P+ t' f# {McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 {" T- @# k9 S# ~. \4 @% x: tMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
4 w2 J- q5 b: `) ^% Z5 }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 P9 g% O+ V2 ]. g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  [6 I$ A2 x# X$ `) V/ u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ B( q# ]) d( H- T( `9 s5 fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! x# i# L# p. ]; u! P1 s" PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," f" x2 g; n  P9 e0 D
0x00, 0xFF);
/* configure the clock for transmitter */6 h  V, L- Y, z! j" w9 v1 b- M
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) h9 M$ i, C, [$ _
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 ?$ N  t" L! ~6 @* N4 A$ p: mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 b7 E! U2 e- |0x00, 0xFF);
1 K. J' r. Z1 ^( w6 [, U. c! E$ O7 T& I6 e* g
/* Enable synchronization of RX and TX sections */
  O5 M, ^2 H9 n' ~$ MMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 e! k4 |# d6 s( H. g' ZMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 i2 }4 l% l, f- r0 a' S8 D6 t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" f% I6 ~5 v% {  t& G** Set the serializers, Currently only one serializer is set as; R( a/ _3 U5 D
** transmitter and one serializer as receiver.
7 Q  r# ~3 A$ z* f/ O*/+ H4 z# }' v' X
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& c; G1 v. v. R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- M. c# J2 N( ~$ I: K** Configure the McASP pins
& h9 ^) x* [! m2 @** Input - Frame Sync, Clock and Serializer Rx
( K, l8 X8 M6 |) \** Output - Serializer Tx is connected to the input of the codec
$ a( k# c1 G- t& L0 T/ t9 b*/' I6 H& z& W! G" _* Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 W8 ~6 s2 W4 A" j& `( _1 oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 B. R, |# S: f2 I$ O- J
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% F, |' |& v0 H
| MCASP_PIN_ACLKX# v" t' h) E6 n7 l3 W
| MCASP_PIN_AHCLKX3 K9 [' D" e# p! O8 A
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! e/ {" o/ h5 \$ g& }/ u% J
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " h& O9 z9 `0 p; {! N6 F, e- {5 d% u
| MCASP_TX_CLKFAIL
& }. Q% C( [9 I+ b2 L| MCASP_TX_SYNCERROR' p  N, U3 M8 Q7 y9 Z2 S
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* t* P: m+ q) i4 j| MCASP_RX_CLKFAIL
! y' t4 N0 l* z& b: V: r8 C| MCASP_RX_SYNCERROR
; V( G6 Z. B# _3 H| MCASP_RX_OVERRUN);4 d* s0 A, {6 U9 N3 z
}
static void I2SDataTxRxActivate(void)
, v5 ]7 ?" C, A+ T{# r3 t4 B( U) n2 w( N& x. h$ t
/* Start the clocks */6 H+ {9 Z) _7 ~) V, q2 f$ k2 [! ?) K
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 Q! v6 z; |' {1 A1 w5 Y& @2 ~McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
7 E3 ?( G6 F' ^3 b' {, `% E# N7 `EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% j" h+ w. _: n# UEDMA3_TRIG_MODE_EVENT);' n' ?5 f* s1 k& d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 g" p3 v3 G$ ?* C+ z+ }8 @( `/ l
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 H. v2 {( F6 y# `; c) EMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 e2 R5 G  x) i: S$ HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
% m: ]4 x9 N. c/ z& |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, A% `7 a1 T$ B: ~$ J
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);; F  L3 U9 v; ]7 j& k4 p5 X/ \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);6 @; L6 |; [' O4 o/ p/ h! K
}

, r% ^5 W& D" p; J, [7 K8 v( @6 l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 X/ m& k  a3 r7 C9 {  x6 X) o) ?7 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-17 15:40 , Processed in 0.039804 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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