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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12540|回复: 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,! u6 ~" [9 W/ I# b
input mcasp_ahclkx," z; U" X' b8 Y
input mcasp_aclkx,# y2 b' O+ s" I) g
input axr0,
+ c; P' n* P! A+ e; `# b: j) C$ H1 m/ u
output mcasp_afsr,
5 z* {7 q& c. [" H) t; ~+ ioutput mcasp_ahclkr,) V9 F, ?! |& _$ A) H
output mcasp_aclkr,7 M% x8 r& W+ e
output axr1,
, K2 P" c: T2 c3 Z& V( m- i
assign mcasp_afsr = mcasp_afsx;7 u' x' Z, \$ p1 V
assign mcasp_aclkr = mcasp_aclkx;% c& D4 X; l2 n' K7 r# \
assign mcasp_ahclkr = mcasp_ahclkx;
' l1 x' D) o6 lassign axr1 = axr0;
7 T* j7 c( \! ?, |" W
; y- q9 s# j# a& q# k7 H; V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
0 J5 z2 J' B* S6 _3 m, F
static void McASPI2SConfigure(void)6 S9 p& I' D; \: N! e: F9 i
{
; f4 C2 D' `/ ^' P" u* d3 WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);8 t. L0 m" v" f; r. n6 t8 o1 V
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */( |2 ~' q' O4 ?' Q5 Q* j4 F
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 \- G$ m1 ^7 V8 A& e4 }5 MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) l3 V0 o) _  R1 ]
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ J3 }& k1 U6 d4 R7 A( v. @
MCASP_RX_MODE_DMA);
7 {1 ~4 R/ t) f, m2 JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 }/ I) W, Y4 C4 EMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */. p- C( {$ A: d, Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
0 j. c. K6 J: ^7 l2 _- u6 l" jMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, Z/ _7 A$ \# U8 C# W% w
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % r0 C1 Z. r; P: b2 O7 i7 N, ~" e* Y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; P: R, i8 L3 P1 R9 k0 V; [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 M$ v4 T9 y* b* u- s& G
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" y* D. V. N2 J% g" `, eMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* Q. k# Z% `% c
0x00, 0xFF);
/* configure the clock for transmitter */
" x' m( i! c& z9 Q! z0 d2 R" gMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( {& L6 H; q4 o, r
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' X; X' d, E( p) [' S: l: F& O) C4 aMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 u& n. a% {3 k5 U0x00, 0xFF);3 ]& H% [* b/ {  B# Q

: q) m5 r$ P$ Q/* Enable synchronization of RX and TX sections */ ; ~) G4 d$ `* j$ W. m
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& [6 ]+ Q* o3 R$ s6 o
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 o8 G, H0 [3 r1 ^# R- A" KMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*6 X1 K! ]5 Q. m( S/ [6 @) y. X' z
** Set the serializers, Currently only one serializer is set as
% G" Q) Z1 T: D3 S+ ]$ n0 E- @** transmitter and one serializer as receiver.% U3 B0 d! }& |/ V
*/
4 ^0 C: g% O7 QMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);7 W5 a! W9 N8 y! Z% Y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! m1 g+ z9 R  f3 F7 C** Configure the McASP pins : Q" P% R0 ?3 |( e
** Input - Frame Sync, Clock and Serializer Rx- [% R- h5 C0 \+ h! Z+ _
** Output - Serializer Tx is connected to the input of the codec # p: M" p3 ]+ f* T- E7 z! u, c! @
*/
( f' ~, s% g, Q! Y2 CMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" U# b7 c4 ~) u! B% H
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ n: W0 n- i) n1 z5 R  ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% q: A$ C% B" I; H$ U/ Z7 V
| MCASP_PIN_ACLKX0 E& A# [$ C' L/ a
| MCASP_PIN_AHCLKX8 B7 A6 Q5 L: G5 J) x5 O+ h2 E, X
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) _( p/ z' \' |
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # E" i( {* i3 J2 y7 ~1 K
| MCASP_TX_CLKFAIL
5 y1 i4 ^# Q5 L& C! |$ `; P! Z8 B9 Q| MCASP_TX_SYNCERROR
. ^6 `1 V, g. s$ V9 X! Y  ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 O" a0 Z- X9 y& A+ r4 N  D! k
| MCASP_RX_CLKFAIL
5 i7 G2 l* M1 p' X8 E| MCASP_RX_SYNCERROR
+ [3 Y6 t8 q0 \5 K3 @! G| MCASP_RX_OVERRUN);
' j  ^- [$ q+ `}
static void I2SDataTxRxActivate(void)% n: R" E! o/ Z9 ]+ o
{
0 r. w1 @2 X6 o6 K" q/* Start the clocks */5 b- _3 ~) P/ |
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. D' g# H" p' i  O5 \% X! l  D7 TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( p+ X3 L# @# k+ j: P7 N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! D6 s8 ^) ?5 d1 }: oEDMA3_TRIG_MODE_EVENT);
- y+ u/ r, ~% T! vEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 ?- N5 `1 `( o, {& [
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: X+ O. v7 F0 A+ }/ E- _McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. _8 a" v2 ?# `( d9 _
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
, |5 V: r: k! j4 f- r- o# ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */1 Q9 c8 _0 H6 k' k
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
5 S. d! C( q% a0 k& GMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);: h1 M' M8 i: X; c8 k9 Y1 U9 F
}
" e  o0 D7 u; Q# d: X$ d* k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% T9 E# }$ q) U  h7 r
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-3 18:09 , Processed in 0.046892 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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