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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8622|回复: 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,
* o- }% S+ |* U! dinput mcasp_ahclkx,
4 V% T" ]4 z& R* w. qinput mcasp_aclkx,
' O5 [; a8 V7 \input axr0,
( z/ ~$ K. L. o" D6 g  z, z
  l' ^  c7 W' @( goutput mcasp_afsr,- V$ u$ \& q& [6 d( E3 `! q
output mcasp_ahclkr,' m( D$ S( n( Y9 \( s
output mcasp_aclkr,
9 z$ K  ~0 w' woutput axr1,- Z5 v1 \. e% t, Q% E
assign mcasp_afsr = mcasp_afsx;
6 q8 V0 Y* U- A7 ^3 R3 d- G. Y) Xassign mcasp_aclkr = mcasp_aclkx;4 Q7 J: s) S2 n3 ?; @/ w' a
assign mcasp_ahclkr = mcasp_ahclkx;! m: u% c( B1 ]
assign axr1 = axr0;

. ?& l) S8 ~+ Z7 T- G, T* B* q
2 q4 Z! r% W$ y7 z# n5 ^4 b! |
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ z2 f0 |8 A$ n; `
static void McASPI2SConfigure(void)# D; f) }: G$ W% b
{
& _, j% r9 H6 SMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
' j  ]# C: Y! ~# \2 T$ u6 jMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- Z  w# L  a6 z6 e8 [& Y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 U# q! ^, Q2 g
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% L7 }3 N7 \$ T5 [9 ~3 ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 ~# ?# @' C- k+ ZMCASP_RX_MODE_DMA);& s+ s: m6 l7 ^9 m* q8 |/ O  j
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 L6 V# ?/ q8 N6 e, X. uMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
, Z5 i& f. U* Z! O# \! z9 VMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 ?- F6 S& g- Z: TMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 Z. `# x1 o) C7 y$ h/ G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 ]; ]: }8 T; ZMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% Q+ v# n" F% L8 U
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 j' ~/ M$ x1 K7 r5 o1 @6 [' hMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" ?) z- i$ K% T- ~- G+ @  [5 L3 dMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
0 b& X% @- L' B) g$ r0x00, 0xFF);
/* configure the clock for transmitter */
2 o8 o  |$ X) [; M# VMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
/ j& ^; S3 d  U. \# N1 {! cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 o$ p& O- X) g2 n7 fMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' S+ ~. a, U& ?: W$ V; H0x00, 0xFF);  {( s0 |" a3 o5 s& y: m- p+ m4 q

& x1 D4 e- d* ?1 j5 h! {/* Enable synchronization of RX and TX sections */
+ m! z: w0 x1 |: j/ zMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 X9 T, ~8 K$ `! [* }& _
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# [) |9 N; `0 J6 J' C! `
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*7 Y) y! J& @4 I. p1 E4 b
** Set the serializers, Currently only one serializer is set as8 u) q, ?* N4 h1 F- j5 ]* \, r
** transmitter and one serializer as receiver.6 h' T. ]3 W% e, S
*/
& i: C3 d" D0 J8 C0 IMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' s- ~5 b0 `2 d2 ?: {
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 _5 }1 o8 W& n% X6 b4 W% O
** Configure the McASP pins
0 d8 o' ~. ^* q; K** Input - Frame Sync, Clock and Serializer Rx0 L# L  b$ r% ?, O$ t
** Output - Serializer Tx is connected to the input of the codec
# }# q& }  U+ W5 V+ l. q*/
- R, n+ p' v( L/ Y' v+ L! zMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
, E! Z# R6 A$ |/ \, E0 BMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) ~5 H+ g6 \5 K7 D" Y; VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: i3 f% F$ w$ I| MCASP_PIN_ACLKX/ J( H% i% j% I; A7 [. e, M
| MCASP_PIN_AHCLKX
  I2 X' J; A3 ?9 B| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 k9 j5 h* j" E. d' HMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 1 N$ n% h; ^) C- N% O
| MCASP_TX_CLKFAIL
# Y' X+ S* f3 ]2 n! ~! B( H" u3 h| MCASP_TX_SYNCERROR( b4 g" t3 f; i; P$ G
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 Y7 Q" A' \  F
| MCASP_RX_CLKFAIL
& y! d& v. _6 Q1 W0 U% j4 t| MCASP_RX_SYNCERROR
) }' f" W3 i8 e$ Z8 j| MCASP_RX_OVERRUN);
( H6 d! \! h0 U; [$ b}
static void I2SDataTxRxActivate(void)4 \* K9 g( s1 k9 e9 y
{. n, n" A9 y# Z# ^8 e1 X  m) G' i
/* Start the clocks */+ ^* B- c7 g+ X1 n0 r1 ?  F) {
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 T  x3 t- D) k$ d! Y, tMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 P4 k6 ?$ N3 \- q( x3 K" `- e0 {$ E! G
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% x' G+ E% f5 p5 e7 |EDMA3_TRIG_MODE_EVENT);
  v+ U$ r( y' g" I+ z  u- nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ q: Y; q1 u/ d) w. w) j0 z: dEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */9 X9 i; e& m- w* e# N. F' x
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
, X" E) H/ x" \% [5 PMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */. Y. j& j4 e" |- b
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
+ c+ A: d: ]* c; h' E. l5 k# j* qMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 c) Q; M7 X/ P' B! }& ]
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);/ k8 X3 @' I" P; A& @8 b: r! e) p
}

5 F. L. }9 m: U; J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 K( T6 y4 V1 ^' s+ t  E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 10:57 , Processed in 0.043488 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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