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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11853|回复: 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," e) Z( ~5 o7 _6 z. Z
input mcasp_ahclkx,
7 r6 F0 G; M% Zinput mcasp_aclkx,
- Y7 u! B  `# o, Cinput axr0,8 }5 Q/ D8 I" W9 }* }1 D
, t/ e2 |) K3 p
output mcasp_afsr,- p2 L% }4 V: F+ f+ [
output mcasp_ahclkr,+ p3 t2 m2 s. F. O1 a' k0 k7 u9 B
output mcasp_aclkr,
/ i+ a# Z7 T1 D5 L# doutput axr1,5 U5 y" a# N* B1 ~5 f7 R$ V2 v
assign mcasp_afsr = mcasp_afsx;
" Z' t4 w1 p# R  C2 x6 C# X3 K, oassign mcasp_aclkr = mcasp_aclkx;
3 A2 S# E8 F5 \4 k& K# rassign mcasp_ahclkr = mcasp_ahclkx;5 a4 w; n% O$ D
assign axr1 = axr0;

. d- }: Z/ i, z% d
8 B- M3 g' G! ?) A
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

' ^; {8 Y# J1 R$ S+ S
static void McASPI2SConfigure(void)
1 p2 H! p' N. s2 N9 a{
9 S- `3 ^% @3 k8 ~& E& F( K0 e6 g- xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);9 ~' b4 _% V& p+ J
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */5 i' O& U1 t8 u4 A
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);- |' z) x1 t  S3 Q  m+ ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */, D2 O( G* \* @0 o# y1 g. @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* X6 S: N# M9 H8 Z+ e' c$ d
MCASP_RX_MODE_DMA);
5 i1 A) U7 Z6 V! `6 zMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% P7 }7 Q3 ^+ X% ?% v4 `! Y+ ]MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
% M$ q8 O. m6 k9 FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ n1 P% y8 Y" }# m# CMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  |4 ]; V  j% `3 |4 TMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- O- O3 ^# N! B7 O: O# _+ u) ]MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 i/ \  i" o( V4 K
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);/ W5 z& U6 `: T( W/ C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   F" N3 X) ?% a: L3 L5 Y8 x, l
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) n  [% K! T9 ~' }( _3 E# u) r0x00, 0xFF);
/* configure the clock for transmitter */
/ g9 l' Y0 \; B* cMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* t% u+ I6 y$ u' f6 z8 V
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 a% C% |! W# O/ h5 W7 M: AMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 W8 q4 e) j% q) }, C1 S
0x00, 0xFF);
4 F% t; w+ N7 \# T/ D% h1 e9 a* T3 m2 p) c) g6 x! G+ J/ P1 Z+ M, D6 u
/* Enable synchronization of RX and TX sections */ + r, y0 Z5 S: j
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; L& N% {2 Z+ H4 Y; Y" _) h4 r! ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 m+ c) q1 o0 e" [4 f) [
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! V) E! _9 O0 |) n
** Set the serializers, Currently only one serializer is set as
( m4 X2 P0 |# `) `** transmitter and one serializer as receiver.. `" ~" ]' f7 u4 R! R7 E
*// f  P7 [, m2 ]$ E) h) }
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% b6 ^9 `  B6 x: l  G+ B* |, tMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 V2 }7 k( n$ h** Configure the McASP pins 1 P0 p, D* P$ }# X0 Z; i
** Input - Frame Sync, Clock and Serializer Rx/ P) b5 S& Q6 m5 C/ S$ S
** Output - Serializer Tx is connected to the input of the codec
# q- N5 K+ p; u*/" J1 z* M- B' I6 S* U+ [# W3 f! t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);7 w- b: v: y; }* V3 V
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 R' b7 g7 i9 z
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% m" c2 v1 C) r
| MCASP_PIN_ACLKX
8 h" |4 }6 {* Q  M| MCASP_PIN_AHCLKX2 b* z( X2 U- ]
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
3 v) V! ], m  h2 K* Z$ {McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 7 O. ^! c$ Q2 W& o
| MCASP_TX_CLKFAIL
* [2 m7 _9 e8 E# G% A9 s1 N- x# p| MCASP_TX_SYNCERROR/ u- g& x& i+ H0 Z+ r! V8 t' @  m3 @
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ; a. H$ d5 ^8 J6 d& H' n
| MCASP_RX_CLKFAIL
. I. l5 v/ U4 G| MCASP_RX_SYNCERROR
4 i: l$ B3 V% X& [8 V$ ]) L| MCASP_RX_OVERRUN);
4 D" O/ O6 }! Y' a}
static void I2SDataTxRxActivate(void): w/ m+ @5 T8 [* c* m
{' k) u* D% y, G& ~. {* Q( {
/* Start the clocks */
; S$ Z0 k1 V, l. J4 n' O. NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 {+ U. N: a# L2 C( rMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 b9 M  o6 J- i$ \' p& QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  q1 `5 j7 q. B0 i; T" K
EDMA3_TRIG_MODE_EVENT);, M. N: X8 e( |- l, Z# v
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / T& N: w  E6 }7 C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 _! h0 M7 m7 P" B+ u1 F9 B9 B( hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
/ y0 V: p% F( ^4 [) HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// b) B$ O- c* Y8 _% o, D' `' H
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; L, w% _' v' l# C# i8 l* {
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);. l6 G. N5 e( g6 d- W9 f
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  ^  x& |4 S1 S6 A: O}

3 r& }* Z1 R, `# g* w/ B
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
3 T; t+ B( E, T% s; S# n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-16 16:04 , Processed in 0.037472 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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