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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8677|回复: 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,/ g: }2 ~: }1 ]8 b# {! H
input mcasp_ahclkx,- H4 N! ]* M% A$ i
input mcasp_aclkx,3 z2 B9 g3 t+ U% K# [
input axr0,& L+ W1 m: }' z9 C) Y; V% X5 [6 }

) u$ m; T! v! T/ U7 moutput mcasp_afsr,, z9 z% ?) A, `# r8 H
output mcasp_ahclkr,& \7 A! w. w: K: S& [5 A
output mcasp_aclkr,  U# ]) w2 y* b; U7 T$ l
output axr1,
6 {7 S2 z, m: c  u0 {+ s1 }
assign mcasp_afsr = mcasp_afsx;
" X& V$ l' C, ~# ~9 ^: w. w. Xassign mcasp_aclkr = mcasp_aclkx;. x  E8 p9 P1 M0 ]' r$ A5 J6 l0 a
assign mcasp_ahclkr = mcasp_ahclkx;
) g( q/ F8 j/ q- u1 d" Eassign axr1 = axr0;
; `3 C" B; I( U4 F( N( D; F, x

* j2 M6 I( _. E4 |/ ]" B2 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; g- l! B4 Q1 k
static void McASPI2SConfigure(void)9 z8 z* V9 n3 m9 z6 Z4 F  \% K
{) o. k, U/ a6 f
McASPRxReset(SOC_MCASP_0_CTRL_REGS);- E8 b0 q- a' K2 h" D' b
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& I; x& j, I* ]: N; z. \3 |McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: l) [# G* E/ F4 i8 G& ^
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
, J+ M8 }0 j; E/ Z; e% SMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# s. K% |/ x2 o) |% j
MCASP_RX_MODE_DMA);
- S1 }/ Q6 w% b5 D% f2 V+ gMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 V4 Z4 S- ?# m4 y. q6 a1 e" d% wMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( V3 e; g9 p$ C+ Q4 O/ C/ i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 R$ `& J0 X/ z# v7 I& j: s- ~
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);: [8 @; q" v9 `1 k0 ], a
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 a2 Y, Z+ y2 O! l4 H* f: i
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! W) l7 a% N0 f& w/ V# c7 `, a# i) OMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' o7 _7 m% k- \% u# @McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! \2 `9 z* p6 ?3 B) T5 E- JMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 G- Z" R" m3 j! _
0x00, 0xFF);
/* configure the clock for transmitter */
+ u+ \) g/ q. ^+ N% SMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- D. [- e; O/ `0 Z3 [" r1 ^
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 R8 V/ d; j4 O, H0 aMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
; Z7 R/ \! w2 r6 s7 B6 v0x00, 0xFF);4 x: D) D" l9 \- ^7 q3 N- ], N# _

- v2 ]* x, b& z6 Y/* Enable synchronization of RX and TX sections */
( `, T1 h5 d" Z3 L# k2 _8 CMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 i3 x3 j/ P: p2 I- t
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ Y& ]7 ^8 g6 v
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; r# y# x9 v0 p' d' K0 z) U
** Set the serializers, Currently only one serializer is set as& ]3 n. }7 c9 n' X* p9 x5 l2 l
** transmitter and one serializer as receiver.; L# ?# M; E- J, {
*/
7 k& v* A. ^- t# I4 B/ c$ Y# g( HMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);: ~/ k/ V) G" T) w# U# A+ y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& I+ I) \# b1 R2 W! k$ `
** Configure the McASP pins ; t3 P. x& `: N* l+ ]; R1 N* K: y" A
** Input - Frame Sync, Clock and Serializer Rx
3 {  \# e$ A0 {8 i** Output - Serializer Tx is connected to the input of the codec . i. f) R7 T4 d- Q, m3 I
*/. |; P) B9 q8 f0 H8 f
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 J$ P  q& j% |8 ]5 J- v- y, ]4 kMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& j( |+ a7 l; O+ E# R, B( F! p1 IMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
! c) J( ], E  y1 S| MCASP_PIN_ACLKX
  i3 W# p' h4 M  @9 D/ b| MCASP_PIN_AHCLKX
% A/ x0 u) c- [2 G# L$ I| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 F, K! I+ F0 YMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . n3 P6 ^" m# ]
| MCASP_TX_CLKFAIL ! E# S/ D0 y  {) L" e$ G; S
| MCASP_TX_SYNCERROR# u3 i# J; q9 i( o1 a
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
5 x) f4 B$ Y* t3 @| MCASP_RX_CLKFAIL
8 U3 y0 ]- F5 e. N. A( d| MCASP_RX_SYNCERROR
) g6 s  s7 I5 U( J/ T% }| MCASP_RX_OVERRUN);8 Z5 i. Z- @& n2 _- Z. U
}
static void I2SDataTxRxActivate(void)2 x5 U. a& B; i
{
& u) o; m. D  B8 `3 c9 `/* Start the clocks */  Y0 s3 V$ P, }) R  v6 W7 _! |
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* F7 E4 s# e  H) [  W
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" |' I% S; q; H0 v: jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ t8 o! S# q( H" |) o7 h2 AEDMA3_TRIG_MODE_EVENT);
  x- ]3 G( r) Y7 QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 w) ~0 M  V- [4 [' |EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 h. u1 e$ O$ b
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);9 A: ]2 L5 d9 k9 }; K% |/ b' x) A
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: d* M% |! \* V! [! b6 z
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
& Q7 m  u7 N0 @/ W# nMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- a8 t* ^$ w9 p, R4 }( C- O# FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) }2 }, ]+ R- w; t. ^3 e& a}
% M2 R" a5 i$ |2 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# y" ]* P- k) z# s* w2 p
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 13:08 , Processed in 0.044053 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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