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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13006|回复: 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,9 D' y0 [1 Y: Y' I) v. {( L! k
input mcasp_ahclkx,+ b. \7 l: Q3 M- [% j% i: p8 o
input mcasp_aclkx,
8 P1 M  V' g* Uinput axr0,
, C1 u5 H+ z1 I& ?
$ y0 @5 a6 P  Xoutput mcasp_afsr,2 A+ o, O1 g8 h& j- D
output mcasp_ahclkr,
5 h% r# d9 R* u3 q  Zoutput mcasp_aclkr,1 Y# x0 s: n( |+ B) Q2 Y
output axr1,
; a$ q* E: m# J1 R% m
assign mcasp_afsr = mcasp_afsx;
: c" b) D% j. {) U5 H& i  x% l% oassign mcasp_aclkr = mcasp_aclkx;
. h- v5 a! P. ^  massign mcasp_ahclkr = mcasp_ahclkx;
# H6 |9 ~  z1 I1 rassign axr1 = axr0;

4 c- v: e& x' G0 J: ], e( g4 a3 K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. u. _, ]8 |1 O& h- K. G
static void McASPI2SConfigure(void)( j; ?6 c  }6 b: v( ], W, D
{
) o( E" v9 z1 OMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 N8 |+ m" f+ pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; P( |" C) X5 Q5 O  u1 SMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) e  F/ F* w: U6 Y0 H$ @
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 [7 _$ h) }7 j$ k3 @8 BMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 v0 @" S* O; B9 L
MCASP_RX_MODE_DMA);. P" o  o$ B* J9 Y; ^; n" k
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," m0 y9 I" f$ n+ j+ x- Y- S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */; \0 `* R* t# ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
% b/ \" n& y- _: O" uMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
6 x% W0 \: C+ G2 kMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. x) U$ e0 y. I/ o; FMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  N# ?& A8 g% ]" dMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, F" `( j. I0 ]/ Y# |$ v6 }
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) n' ]' l; Z6 ~8 b- T7 h8 a' ]9 OMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
$ k! v% m% E0 d" X0x00, 0xFF);
/* configure the clock for transmitter */
: F: P$ f! t. ]McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ Z$ g3 ?1 `1 N; o5 B0 J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 @( y3 K) z$ Y7 L" u" ?/ V# gMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! T6 H; v' I/ K" O3 @  \
0x00, 0xFF);( R5 H! D' R3 B5 [5 g  w2 i. ?
; G7 }6 q# \( o5 {- P3 c7 \* T$ _
/* Enable synchronization of RX and TX sections */ & I" i7 _3 h; l- m# q; c
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
9 t" C/ D5 `. E! F$ p" xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 W7 N+ t+ {5 U1 p# ?; L" }
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- I9 j0 S% N0 e6 g" T) P
** Set the serializers, Currently only one serializer is set as
5 L+ n: ?/ G3 u** transmitter and one serializer as receiver.
4 s) w* D; k/ _  ^/ T*/
- w# k/ e5 V8 J) A4 t/ E: VMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% M1 W" R0 Z- Z- J" f! C/ P# aMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
+ C! k% H; ]. h' A7 _( g% [9 U** Configure the McASP pins
: g, G8 d. ]* \1 o2 f: I4 n** Input - Frame Sync, Clock and Serializer Rx/ h9 {6 d( C' |. Z- D' F! R
** Output - Serializer Tx is connected to the input of the codec . L6 L$ P8 Q* J& i  ?9 a7 k) K
*/
* A! e$ {+ p0 K* z; O$ A6 u7 h$ zMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 }, d9 [: h: MMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! H7 H4 p- {7 V. a& C' g" o
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 W; z4 H8 W! S  i' B! ~' s1 g  o
| MCASP_PIN_ACLKX' h, _3 V& R  ~$ @$ l, w
| MCASP_PIN_AHCLKX
. k: C& |) @$ v, @. m| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 Y; v/ m, w* u5 ^: ~
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   c& \) z% \8 p6 o3 {
| MCASP_TX_CLKFAIL + o# g9 n, {2 I# c) u
| MCASP_TX_SYNCERROR% z5 ?% b/ j" }0 B  f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR # G5 F2 R$ S% l1 R) i- D
| MCASP_RX_CLKFAIL
5 `7 F7 \( L+ z) e7 x| MCASP_RX_SYNCERROR
1 L& Q; m, L0 l% k% r5 F4 K- X. || MCASP_RX_OVERRUN);, |) D. s5 ~& I- c1 p
}
static void I2SDataTxRxActivate(void)
7 y6 Y1 _4 [5 d{
/ q4 ~3 ~5 P1 O# S5 c6 ?/* Start the clocks */
3 t4 }0 \  R% S  }5 \7 z1 Z( ^/ N) q5 WMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 U2 ~5 h; o: zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 C. f2 o) h5 A# G' b5 W% EEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,% F. s; j# I5 a" C
EDMA3_TRIG_MODE_EVENT);) G: ^4 G- d  r/ J& B$ Z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. p1 C% B- s' p$ i& }7 X# H! wEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 Z- z5 \/ x6 \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 Y' k* a% ]  R5 ^& ^% q( z8 f
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& Y- b' j2 g% B5 r$ ]; M
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 V3 Y  R( Q# P& s, W3 `1 J0 e
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) K! c% l- z2 Q5 U1 |McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 l" t" ~  R& z1 R) O, ~6 j
}
8 L# K) e+ E5 K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
1 Z6 e2 L& f5 d8 f3 t+ |; M% _$ X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-5 12:52 , Processed in 0.041706 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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