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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8467|回复: 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,
8 e& g* p; a. V( N  w6 t1 K2 o* Vinput mcasp_ahclkx,5 T6 u; I- ~6 w& a0 \( ?
input mcasp_aclkx,* d8 y& h' V0 x! G
input axr0,( }; p8 A. p$ h1 t
! M4 {/ `( G# \0 y
output mcasp_afsr,
9 O# C  h, B6 g/ k/ |- g* boutput mcasp_ahclkr,
: O& K( N6 M# f! {1 J1 }* boutput mcasp_aclkr,/ E$ Z8 s- w% t  W8 E& ?
output axr1,, e, x! t" n! }3 X% o
assign mcasp_afsr = mcasp_afsx;
4 N. Q. b9 a) s8 k  B* `assign mcasp_aclkr = mcasp_aclkx;. S. ~3 C: \1 h  U' z# J. m
assign mcasp_ahclkr = mcasp_ahclkx;5 g/ [9 A6 [: v* D" }
assign axr1 = axr0;
3 q3 U4 r0 H6 O

9 `0 Y' T  [! n( n* `: L" f6 ?6 y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 R4 Y1 }4 }( H- }- S. {2 a
static void McASPI2SConfigure(void)
' S$ K2 v- K$ J$ i{: E' k$ k/ y1 t7 e: Z2 [
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% f* J0 N' {( a) S1 ?) ~McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 o; b4 ^4 b7 D+ }3 W4 S% uMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. r0 Q) S* a9 K7 _" y! V
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
! M) L: e1 N# ^, SMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& r  X6 d! m: `6 B4 n0 y
MCASP_RX_MODE_DMA);
& M  @( l, }; }( q" q4 WMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* M0 u5 a# N8 S/ Z1 TMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 `7 c9 X) f1 |& V8 q( z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 f6 }; S- T) Q. e* B) sMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 z$ x3 x5 @; y0 mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & v$ m- A2 K) o, ?# j
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ \$ ]8 x3 G" {8 {
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
% ]: N! o; K! q, F4 n5 JMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. ~. i9 i1 B# X& c# y2 T% `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,9 x1 u# X  a. ?; X+ p- X
0x00, 0xFF);
/* configure the clock for transmitter */' c* a" K7 T5 _# V, c1 h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
3 u# B/ g" a; q+ v/ s% y' |- zMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 e4 D! m! h! h& f! O; mMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 V9 _2 D) C/ T& \6 _( c* U. H5 V
0x00, 0xFF);
" R$ r4 n; z/ U! Z2 V9 P" ~6 j& W/ I2 p& K" q
/* Enable synchronization of RX and TX sections */ 4 g5 L: K( D& z# X( b0 t( V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; Z# r0 M9 V+ T& E9 _McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
" {9 v2 W( v# CMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 b/ V0 f# V$ e$ w* t" z) s** Set the serializers, Currently only one serializer is set as
1 l! B0 g$ T1 t, ]* k: Z' e** transmitter and one serializer as receiver.
5 N& N/ r1 Z: a+ |4 ?0 @6 Y! ~*// k9 x* e9 O$ X" `- k2 v
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);4 s' h6 R1 u8 X: p) x
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
- S" v$ X- W, v- D# z$ Q** Configure the McASP pins
8 f6 E. a1 E, d** Input - Frame Sync, Clock and Serializer Rx
" f; c2 A) z( K** Output - Serializer Tx is connected to the input of the codec 3 B: U+ i* j: m4 ]7 _
*// f$ S# U2 C: I4 e
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
; A9 C) ]5 b- E' d6 j) U6 F5 nMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: c+ j+ q* Z# V2 |
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX& ~$ _) i) a& k+ G& q. B" H
| MCASP_PIN_ACLKX& C: [" t6 p+ F% D
| MCASP_PIN_AHCLKX) B2 }- F* X; {* Z# s
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) W6 Y4 `( d* D) A8 P, Z" H: _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
) E; x6 O" N" L5 d. w| MCASP_TX_CLKFAIL
/ s$ K. d- Z0 G! [0 F| MCASP_TX_SYNCERROR
) Y+ v1 c+ l) f2 ~4 X| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
0 C9 ]* G8 z+ a9 z| MCASP_RX_CLKFAIL
+ |$ H9 f. X! D4 E3 f3 u1 P| MCASP_RX_SYNCERROR
" d0 g4 J# |$ Y: `9 R| MCASP_RX_OVERRUN);% {1 h  T  _% j& j* u: P7 V  `
}
static void I2SDataTxRxActivate(void)
, h' h9 g* q5 M8 n2 i2 ?{
( A4 H0 m: m- c! k/* Start the clocks */
! i1 {! r4 j# L, C$ c, S3 F7 E, XMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 U- Y6 W: g6 N* |# Y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 K; u! o* U$ y+ R* VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% M/ [4 F  b2 o1 x" @) d/ ~5 Q
EDMA3_TRIG_MODE_EVENT);
: Q8 e- B' }) n1 l4 Y5 UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - P7 k* b" x; W' |4 b
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# |0 h. m$ z5 T0 r+ `4 Y; s3 P6 C9 M
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 z  G/ l3 J6 A. GMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' ?, Y/ k' c; K  _. p6 }& F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 n' }4 \. s- J% E; i
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* f* k& ^2 x$ U% XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);. ]2 Y# a% j9 k( N
}

6 h* s' p) p/ R2 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 t+ o5 I0 ]  f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 07:37 , Processed in 0.038317 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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