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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8903|回复: 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,6 ^+ K- {" k- _- |" h1 Q
input mcasp_ahclkx,+ M) i! [9 o( O. i- ~5 x% O7 }. Q. G
input mcasp_aclkx,2 V" S. x6 c" a* N
input axr0,1 L$ O! G1 q; U
1 S9 ^: R5 N+ H* q
output mcasp_afsr,
' h& D2 G+ Y  N; K! ], b  Youtput mcasp_ahclkr,* B) `% @+ n- l
output mcasp_aclkr,6 K- l' O, i# d+ H& X; F
output axr1,
8 m- o3 k9 p8 U( o
assign mcasp_afsr = mcasp_afsx;/ a( m* E- y1 m8 e. t
assign mcasp_aclkr = mcasp_aclkx;
& q3 e( X9 J7 s3 @9 L- y- g& H" sassign mcasp_ahclkr = mcasp_ahclkx;
* t: Y) I# H% _2 Lassign axr1 = axr0;
1 M% o- @. a( P2 H7 q  K

- Z6 B* Z4 [: Y! {; ^' U+ j7 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% h. F5 {; ?; {. A/ b$ E! ~! l' v
static void McASPI2SConfigure(void)
. x" K4 {+ f/ ~/ E0 X# e{
; G* s4 w+ V$ r; {" w3 j- V, eMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 [2 T9 S1 V8 ]5 s3 ?2 i% H: \McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' [2 n+ g8 Y0 J/ a
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: b6 h  M! j! o
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% d1 \* G# N5 Q' l1 M) G) ^$ mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# `3 p" d& x1 ?* r" }MCASP_RX_MODE_DMA);
% M/ N# o& F5 |6 Y. X: |' |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,9 f+ F" K/ l2 C' k6 m) D7 |
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
/ m; v) z( r5 v1 D+ X5 vMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 M: J! {- H% [- S$ t; HMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% D0 ]) m8 r; o( H2 f, O, rMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% |3 N0 A. f6 Y( \MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: o6 h# Y' L& Q; {8 P
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 [" Z9 g. ~! z% H# c5 x% ~, k- lMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ! c3 w/ r% D4 L. ?7 c
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 b- ?# q: ]  C
0x00, 0xFF);
/* configure the clock for transmitter */; Y, }) d' _( Z  g9 C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# V9 r3 ^0 W* RMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# A8 U$ u$ ^' R) XMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 x+ I1 O0 |" z( V  }2 c, c3 ?
0x00, 0xFF);& X0 k6 L; o" O  n" N- t
, C- r/ o, R, S5 L" I6 \
/* Enable synchronization of RX and TX sections */
/ U7 U$ c- |  f2 a( G* Q* iMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  L5 ^/ L( s. Q% q
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
1 |$ y% X& K: U/ \  M: wMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 H" M: I1 n7 W  F! _! S** Set the serializers, Currently only one serializer is set as
8 T: s3 f0 j" m% Q" z** transmitter and one serializer as receiver.
7 E1 }2 O$ Z' u8 \) e% s4 O8 y*/
8 @; M0 E% t! w' J* b2 J5 |" cMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 i; d# `, L) t% N# m+ x0 i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 ]  S! p& p6 G9 ?  K# e! @8 l** Configure the McASP pins # i6 u' p0 f! G+ T6 @3 T% P
** Input - Frame Sync, Clock and Serializer Rx3 Z8 U2 F% v4 K3 o( d
** Output - Serializer Tx is connected to the input of the codec
6 W( m. l+ N+ L' k9 Q*/
4 C+ N  O, M7 F3 y( N+ i6 {McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 H: q. r/ T8 p+ {3 {
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 g& y+ j( i& `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' ?, ~2 K; j, A
| MCASP_PIN_ACLKX0 W- C: K6 y8 y( q) Q2 H
| MCASP_PIN_AHCLKX! a( j* {3 v! N* t- G9 v
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" X: X" l4 G) r: U' m# f5 a# AMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 I. ?0 [! |6 k8 Q8 m; P; i| MCASP_TX_CLKFAIL
! c5 C9 T- h- N8 g$ C! c+ h; y| MCASP_TX_SYNCERROR7 h+ T  e9 A) i% z" C* q, A
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " W3 h% Z8 J+ |' G& _$ @
| MCASP_RX_CLKFAIL9 p) ?% @) n2 l
| MCASP_RX_SYNCERROR
9 _% k& S- w- E$ M$ x| MCASP_RX_OVERRUN);- k. y7 @/ _6 o8 a3 _
}
static void I2SDataTxRxActivate(void)% }+ ^$ K( d0 P6 x$ G
{
- a# c) B, N( |6 a  Q9 Y/ h/* Start the clocks */; s, Y% M% Y1 c/ E4 H
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);( ?2 _! f* s* d) u
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */( T% h* E9 w* c. d# f- n
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- \6 e% ?0 v3 Q7 D9 h3 vEDMA3_TRIG_MODE_EVENT);5 w) _4 N9 q; J5 G5 p1 o8 i3 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, " q$ Q6 X  k8 D  l  O
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" b6 a- ]& K1 X2 B9 h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ D2 M0 L" H# f5 E+ K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 T1 f. J' T6 _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */4 B6 }5 w  h+ \: P( d
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);& E& G8 a3 \3 [3 d8 k# U) e. m
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ i  i: o! i1 z  i2 V
}

  ^# ?! k. S! ]$ U) M+ T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

0 z- v1 r& K% K6 C/ L* ~" r6 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-9 20:17 , Processed in 0.043744 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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