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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
3 W, c+ e! x& binput mcasp_ahclkx,
/ ^/ |/ _7 E% s* j  W1 b7 E8 oinput mcasp_aclkx,
+ O* Y  p- R9 p! ]& T/ e6 Y0 kinput axr0,# I; d5 A& G6 S& ~$ X) z; s6 e7 x/ q
, ^! Z% j! }  _& `
output mcasp_afsr,$ u. a5 V, c( H6 w7 O4 T
output mcasp_ahclkr,: B- ]+ W5 ?/ y+ v" j9 q% `
output mcasp_aclkr,
; k; u4 e' I! C% a8 \+ ]& K& youtput axr1,* u+ C* W( R$ L5 J! v: {
assign mcasp_afsr = mcasp_afsx;
! {& O3 A! n9 Y/ q2 e9 X+ B9 tassign mcasp_aclkr = mcasp_aclkx;
# U# C3 w7 x7 Z  w- y. s( ~8 Vassign mcasp_ahclkr = mcasp_ahclkx;
1 y6 @% R2 y& G6 j$ gassign axr1 = axr0;
% x) Z9 H% T4 _" S
! w9 t6 H; ]! H/ p& o+ a) M  m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 g- ?* t$ M3 {; T
static void McASPI2SConfigure(void)
0 U; v- Y9 l% C$ P2 Q" @{
1 Q  D, }# A, P$ W9 h' \McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 ~. {3 B  |1 M& jMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 {: C* ~1 Z' R( K8 l" _! v
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 x/ O1 P) c( b$ a8 S3 D3 t3 Q  o
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; h8 z& }0 |- \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 W$ O% z! H3 |2 L4 Y. _MCASP_RX_MODE_DMA);
7 I2 x4 K% ?" Z9 Q+ NMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 @0 I3 k+ T% q+ |1 C+ D) R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */7 r% P/ J) M" J% C$ F
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 |2 N5 n# y3 ~( S9 V  Q0 pMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- Z- r6 M: ?4 Y% F0 y. L
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! Q. y" Q3 s3 R' O3 y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 j: j$ f8 \4 k# X
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
+ E0 d( b* X2 A9 o  r# T  A, ]+ UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 s2 r& m3 U0 D7 w- A
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ a. R$ i* r5 W0 y, b; M
0x00, 0xFF);
/* configure the clock for transmitter */
" a3 L( T! E8 ^0 z+ n4 T8 ?McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" a& p  T+ w2 J1 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 n  L8 q  a& D1 R; G  xMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 V) ]. n9 w+ d. N4 E" y
0x00, 0xFF);  M  `' c: A$ m- M8 [+ G; y
" o) U, u9 d/ ~' R- B0 Q2 G
/* Enable synchronization of RX and TX sections */
! J$ w2 l+ ^6 c& d4 OMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ r3 j, y* k' s/ m" w( S5 c. z1 Y4 K) X
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* w1 J2 h+ f( l, x4 X  F( F
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* E' S- A& b6 k0 |: h** Set the serializers, Currently only one serializer is set as
4 s0 \7 f; j  Y% @; v0 S' Z1 w** transmitter and one serializer as receiver.
7 ?4 T8 N4 f: F  j9 m4 c*/% z1 G/ I  c& N) R- h) [0 G1 C
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 P" D& e1 \# o' F) ZMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*0 M( h9 j6 w' O  I3 `1 t9 |
** Configure the McASP pins / a3 n1 U3 |) g, ^0 G# O
** Input - Frame Sync, Clock and Serializer Rx! x$ ~, k; B+ p: m, P+ a  L
** Output - Serializer Tx is connected to the input of the codec
# q5 h& [4 n" T* m; x*/$ ]' t) m: b# V; B* s' X7 Q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
" r  h- Z, _% }9 L) F* rMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 i+ M) R* m8 @4 h& t4 y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) a& U. `8 J, H8 I9 k9 V% z" E
| MCASP_PIN_ACLKX0 v: t$ L' P" V) k2 P4 M9 Y
| MCASP_PIN_AHCLKX
6 ~- N- n# P. b| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ u- H5 M; h5 v/ u) D% eMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 K% E: j% Z. V$ K| MCASP_TX_CLKFAIL
1 @1 Y5 ]0 k* q2 m| MCASP_TX_SYNCERROR
6 ?/ v3 t8 K" n, W/ R" U| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
8 F& _: R, F: L' h  S: p| MCASP_RX_CLKFAIL% G- Q; R; W9 r
| MCASP_RX_SYNCERROR % i: }0 q  d; l' x. C7 r. Q8 N3 z
| MCASP_RX_OVERRUN);7 V0 k6 |# ]1 \' r
}
static void I2SDataTxRxActivate(void)6 i+ _8 O( K: q) R
{( y1 l2 e$ X( S; O' k
/* Start the clocks */2 o8 A' q; t4 P) z9 j
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);: f5 p6 T( `6 y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */" P% s0 Q, _# U3 |4 [% M* w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,! m& t8 Y* j# s1 @4 f& o
EDMA3_TRIG_MODE_EVENT);
: u6 a) I6 f- uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, , p% @" ?) G( n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 ~1 ~, u. k9 R& ~7 hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);( i1 I: o7 Y, N
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 ^$ b  }' P! j* ^, m' t
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
7 }" T, [- J+ u4 {- d% q$ s4 rMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) ]8 @2 `  s! i4 kMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( r) G1 S4 `; O8 K}

9 @% k' P* i" @
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

* |. O. a# p! @! W8 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 07:32 , Processed in 0.039606 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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