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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12362|回复: 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,
$ y  ~* r: g5 z% P9 dinput mcasp_ahclkx,
* J5 q  E9 Z8 i. ?7 _input mcasp_aclkx,7 [2 b& G; o8 w) ^
input axr0,
1 `1 ^) o1 {- w% [5 X: \
  n- Y* k& K3 P2 S% o8 L1 q4 Joutput mcasp_afsr,
+ N3 \6 ]* w8 `7 ^# poutput mcasp_ahclkr,
5 l6 z9 {( l) a; youtput mcasp_aclkr,
- p! ^& |7 M8 B$ ]. Aoutput axr1,
8 Z2 ~1 O3 v7 k: |, l
assign mcasp_afsr = mcasp_afsx;
3 S& N5 X, }3 l4 t  v, B) K  J$ r; `assign mcasp_aclkr = mcasp_aclkx;, h0 q+ H7 F3 W3 ~; q3 u! u
assign mcasp_ahclkr = mcasp_ahclkx;
5 Q* z, \/ B8 X5 C& w* ?, F* m7 R; [assign axr1 = axr0;
* g2 @: Z4 I( M4 P

+ u9 {  g+ `/ D# U/ a1 T
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( y. ?3 B0 y( ^/ u/ v6 ^0 P* u; m
static void McASPI2SConfigure(void)/ x2 b4 \3 @# V. t1 i" w
{3 X% s8 R2 E7 A  R2 m1 y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 x- N* c; P8 NMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& v  x( q# t( ~# m+ q( K5 BMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 \- S% ]: n5 S3 ?. Q0 x5 ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# P# K7 p8 Y3 t2 U' X- ]0 H
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% Q- K& U& J) }9 R! V! y1 o/ P+ K/ K9 VMCASP_RX_MODE_DMA);% O; ^; f5 h( V( o& n7 f
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ U. E3 h: c) z7 y1 OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 B, ^7 v9 T# z! D4 {# KMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; w% @$ V$ ~9 S' D) G% hMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 i& p" `4 ?- j4 |; x
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- ]5 ?9 o( X8 E! g* W5 l9 SMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 e. H" F3 m# q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 n  c: j1 E& Z: r2 L
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; t2 e: f, L7 ~* E+ a
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 J/ Y; V7 q8 q( y+ d4 ]) C' |
0x00, 0xFF);
/* configure the clock for transmitter */
8 G4 a5 D6 A4 r  W2 oMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
* |. m. p1 v0 ~) VMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. j3 w+ G; R* k; sMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 q' C& x4 }! J# j
0x00, 0xFF);
) B% ~; z' P% [1 a7 |# H- U. q
# q8 i+ w# h: h( p/* Enable synchronization of RX and TX sections */
$ Q; p, J' `6 `4 y/ XMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( Q( g' Z0 m: t3 Q7 `McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' m# A9 B9 S) J8 M7 h+ c
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& p. R2 w5 v1 ]. y- n
** Set the serializers, Currently only one serializer is set as9 \' k. V$ s. x6 d; C  g$ w
** transmitter and one serializer as receiver.& @, e8 p# ]7 d8 I3 ^4 \
*/
" v1 T/ }: i2 P/ y: ~  v2 K/ K4 MMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
/ G: x1 H& `$ d5 [( lMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 J  u, ^* }* v. {2 C0 W2 [** Configure the McASP pins 3 T8 ?0 z% T  D" {! v# F6 \' R
** Input - Frame Sync, Clock and Serializer Rx
8 S& v! [. @0 `) Q  I* M8 b, }** Output - Serializer Tx is connected to the input of the codec 2 ]) T  R4 `8 I' ]
*/
/ W" E7 |3 z' |* {McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# {& j3 ^) o8 NMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
; l2 b, c5 ~* E9 T: Y# M, tMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( I6 ?( D/ B: V# t, v7 z* ^7 g- {
| MCASP_PIN_ACLKX
; q. ~. D* c0 F1 b# ~" || MCASP_PIN_AHCLKX8 m$ V5 w1 e% \! ]. m% l( ?& l" _
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# W9 ~# F+ B8 D' l6 EMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
* l) w2 k% b( N  G  \| MCASP_TX_CLKFAIL
7 a6 G" x3 G+ M- c  @- L4 u0 g( m| MCASP_TX_SYNCERROR
$ u& \3 w$ L# l; ]9 C6 i$ p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# c% w4 F0 V+ u( p| MCASP_RX_CLKFAIL7 u  R2 {; ^. g
| MCASP_RX_SYNCERROR : S# c# T/ H0 E) ]
| MCASP_RX_OVERRUN);
! r2 Y1 `2 \4 b6 ~}
static void I2SDataTxRxActivate(void)
; b* K- W  z& Y{- v& c( B8 x5 g
/* Start the clocks */$ A3 l( i' d( c& e, m* ]
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
, j6 V- `$ j$ PMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 }3 _# m/ g$ zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,6 I+ v5 m) Y, I) L7 N3 o, C
EDMA3_TRIG_MODE_EVENT);, M$ Z" H, U$ u7 N; W* _4 X* P0 W
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 \; C8 |! _0 B+ h% dEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: {) S1 i( J) I& [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);( I9 k4 [" P' H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
- x% L- H# @& n! nwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# y$ N2 u1 I: X5 E  i. W8 z4 H2 U
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
9 t& e1 e  \7 y" X9 UMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 X! J4 B6 F2 h7 I
}
8 e/ E* Z& l$ f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
: C5 e, H. `1 z1 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-6 17:18 , Processed in 0.040600 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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