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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9218|回复: 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,2 [+ \, p. l, o+ r
input mcasp_ahclkx,; s: U% g. N' R" b- D. L
input mcasp_aclkx,
$ `" \) B2 C' {- G* `6 ^input axr0,9 u3 K2 I* C5 b; v' \" R0 Y0 F
/ m; m  C* r  A
output mcasp_afsr,
# J! k; E+ p" N$ Koutput mcasp_ahclkr,
4 o6 H' i7 c1 i! koutput mcasp_aclkr,
( A4 i7 v+ s& G0 uoutput axr1,
# i( M3 @9 a; }. G1 _; S
assign mcasp_afsr = mcasp_afsx;
9 H" O7 }  Z7 J( [assign mcasp_aclkr = mcasp_aclkx;
1 Y  I% s1 n3 ^9 \assign mcasp_ahclkr = mcasp_ahclkx;# A7 T# \! o6 m% M# q
assign axr1 = axr0;

0 E, S* u# @; T# V: z& Y( A7 r/ T
5 p4 s+ h8 M! `9 s! K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, i$ z4 W+ J3 o+ w- }1 u1 [  k" `6 n
static void McASPI2SConfigure(void); A! E) h: J8 }( p" d
{; e# P8 J1 b( v- z5 J
McASPRxReset(SOC_MCASP_0_CTRL_REGS);; U. B2 b& q3 `; ~' ]. l; _+ ~6 r
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
. M% E5 m0 W. w% P! `8 TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 q  _, \6 b2 Q0 G; u) `McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */6 v$ S  n* ^% k: w7 f6 o6 z
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; B1 [4 e( T" C  S
MCASP_RX_MODE_DMA);
8 X1 ~! P5 q, aMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 h* K  O' H3 V+ w" [2 V& Q- f
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 j, t5 X+ X& B+ h/ r0 i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   x3 X; X9 p& k" Q' [5 v
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, l7 c6 [& x5 d: }2 h, {2 H9 v
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 ~9 M7 W. g: C" g2 p  LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 T  v6 ?: V/ j/ {- p2 eMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 X" Y! u% E0 d6 p
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 E# [- ~5 ], G: K: K
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 D0 n/ i, X/ r) s0x00, 0xFF);
/* configure the clock for transmitter */6 {# d( S( e, Z0 q$ m# ^5 s
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);7 P/ B4 K3 j2 e
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
* L2 P+ m$ E2 W6 M8 P3 \McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,& u0 U* r+ J/ f  B, v9 x( L
0x00, 0xFF);
7 D* v- `: t' g* r8 D2 l& B& }+ p6 i' M
2 U3 h% [" l# r0 A9 g0 Y/* Enable synchronization of RX and TX sections */
! \3 f- V& @. c3 O' v1 gMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */: N6 a4 J+ [! J2 S) Q, C
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);- x7 u" _% F9 G4 Q, y- N- x% n# o
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ U' J' h- U# u, B  ^/ u
** Set the serializers, Currently only one serializer is set as
6 c* m( u( \- q4 [6 f1 X* L- _2 K* P5 p# V** transmitter and one serializer as receiver.
9 S, P7 d4 M+ `7 S1 A*/
- r1 ~" P8 n9 C2 S1 W2 }McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# [0 h4 z* f7 k# H9 E0 W( NMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 A1 e" j+ A9 D5 ]8 I% [
** Configure the McASP pins
4 C( \+ o; Y  m+ u( ^, c** Input - Frame Sync, Clock and Serializer Rx
" t  G; K# h' S" T6 c; Q6 D** Output - Serializer Tx is connected to the input of the codec # }- P9 c5 J+ P- l9 S# T0 m
*/6 _5 M; ~$ @1 \: ]1 E) L
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);! e, p- |7 b, f2 q7 X+ U
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ R; Y% l# |' S5 {
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# w) a, ]4 Z+ c+ Z% z$ b
| MCASP_PIN_ACLKX& X8 t& n4 r/ y/ Z( Y1 y8 d- K- q
| MCASP_PIN_AHCLKX3 r0 L6 z) V- h7 v9 ~0 p
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */" ]" l& T% }) v& Z$ J$ a+ t" V2 M
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   B3 V6 h4 A" R9 r
| MCASP_TX_CLKFAIL " h: a- q+ C! l2 {5 U2 t
| MCASP_TX_SYNCERROR
4 ?' `& M4 Y; Z, B& M) z| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - k- z( l3 v4 E) M8 i0 G  p: d
| MCASP_RX_CLKFAIL
! X) E4 b, i$ E9 O# Z1 ?1 M; k| MCASP_RX_SYNCERROR $ ~7 {: S' w; Y1 e/ L' r
| MCASP_RX_OVERRUN);9 l0 O3 V% G# `3 z6 S3 a" P( ]# L& |
}
static void I2SDataTxRxActivate(void)
; i$ ]0 B8 w$ ^0 P{' b" [/ g* L" p  h9 I
/* Start the clocks */
, O5 `- e* }  e. z- |McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; Y. {$ G- z8 `7 lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 d! t' K" T' z7 x# C9 H7 p" CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 k8 W6 j7 ^5 B4 K& W; y' wEDMA3_TRIG_MODE_EVENT);
" t/ w# P, |/ v  AEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 4 p, e( z, A9 R) ^7 r5 ]
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 t5 v" |3 ?. M; O* Z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ A1 \& b% A% d8 S5 m/ c0 ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */  u' q- r: f: c
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 G8 n4 Y4 E3 Z  d" R6 Y  `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 B' K# B/ G$ S
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& J- F3 R" Y$ X0 ?7 V3 ~+ Y}

% c4 l8 ^5 Q* ^# o% P" Q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

/ z5 j9 U' [, Y6 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 10:21 , Processed in 0.038882 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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