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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8729|回复: 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,
# N/ b& C. h/ d3 V; p, ^( k, kinput mcasp_ahclkx,
( ^- B) l$ E: I0 o# Qinput mcasp_aclkx,
4 g" U. S; R# t2 {0 [$ xinput axr0,
* G# k: c0 n: ~0 E3 ^: R$ y: D- J( ^3 A+ U
output mcasp_afsr,* {" b3 Z9 f) _9 l* b# s5 d
output mcasp_ahclkr,3 D$ Y) |: L' c6 V
output mcasp_aclkr,4 f* q' y9 V7 q+ }* X! [2 B; q
output axr1,9 J/ D/ P1 ~6 J' ^  n" o8 }3 _
assign mcasp_afsr = mcasp_afsx;
. Q% z  b# y: r5 i9 a, ^9 Aassign mcasp_aclkr = mcasp_aclkx;
; [1 ?  W# w+ |2 Fassign mcasp_ahclkr = mcasp_ahclkx;
( ?) h  p( D  B! g4 Z; |1 |7 lassign axr1 = axr0;
) ?3 w( F" F- h. H3 B3 i
9 C# {; W; G; ]1 p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

" Y  T( t3 E" ^8 T
static void McASPI2SConfigure(void)* F! K# @# ^. X. U7 B6 q% Y( }$ c& ~
{7 d5 ?* p0 j5 h( @% I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 Y" D9 r3 e$ ]3 s) uMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 j* r3 T3 w- ]" D( L
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);& D0 l1 Y& h$ @0 D4 ?$ A
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! q/ U( ~4 @9 F$ m
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& z8 O& C: A" Y* ~5 E
MCASP_RX_MODE_DMA);, v5 S* ^' m3 `4 X( i
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," ^- C7 i& R0 w
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ i! y4 K  N) K! ?+ j  O, q" FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) g7 P" q( c- ?
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
) |; K$ X; C( [, `+ j# c% nMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! ~6 K7 e/ J: B: j3 L( gMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */. j6 R7 p8 g& t. X% }4 e6 C
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- ~% P. ~  ]' Q5 J( d$ [$ d8 T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); " n( ?, p# Z/ \; t
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  R  j6 Q  X' n  {7 Q0x00, 0xFF);
/* configure the clock for transmitter */
+ J$ O3 k  p( u; F2 q- N1 IMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- Z7 {* n  ]+ G5 S
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / B, K! v; p6 B. {
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,; T7 y$ N- l  l$ ^( k
0x00, 0xFF);
8 [, B: c+ }' A5 J- y
5 h% z5 K4 y) I9 U' t/* Enable synchronization of RX and TX sections */ 0 G- D0 K6 I2 U7 [5 Q" V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
) l6 G0 [7 n( B( o' sMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 x  H6 J0 Q$ C6 R
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*1 L+ q  P* p( v9 y4 W8 [
** Set the serializers, Currently only one serializer is set as
0 w# C% ^' I* l  u** transmitter and one serializer as receiver.
" r" ]/ V( j5 w* x/ C/ |*/9 b6 N4 X  ~7 q& T# {/ Z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; d' v+ [3 x  K+ g3 a+ @/ fMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ H! [! i2 E; X2 E
** Configure the McASP pins 3 Q4 F  j0 P) D) k% ^1 @- a$ B3 N
** Input - Frame Sync, Clock and Serializer Rx
- [/ Z* M5 A* B2 c- ]1 l5 R, V  Y: q7 @** Output - Serializer Tx is connected to the input of the codec * i0 B- W' T+ ~+ q
*/) D. l% G6 I5 r8 j! K/ g  G$ u5 N
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ m9 S% E: [2 N/ i; P8 {: ^McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));  a5 N% T& K* W$ ^+ n
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
# j6 ?$ }5 z- `# X$ o) c. O6 r| MCASP_PIN_ACLKX
2 V% z4 Y" e& }( A; B' ]| MCASP_PIN_AHCLKX9 i+ ^4 r( j7 v# y
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ Y) x1 {7 @* a3 n  QMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 k( d0 E' y$ j3 R" J| MCASP_TX_CLKFAIL
; c# G. Z" }+ a1 I6 V/ S& s" A| MCASP_TX_SYNCERROR
# O0 s, Y7 ]  N. o, Y| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( M% t* K2 _9 a: ^
| MCASP_RX_CLKFAIL
7 p# G  V" o1 i# A" ?4 A7 D| MCASP_RX_SYNCERROR
4 S1 X& C6 F% _! t& ^( q| MCASP_RX_OVERRUN);& f6 M4 d& v3 l! [
}
static void I2SDataTxRxActivate(void)
2 G$ A" C0 @$ a: d{
  `( `; {0 e5 F) u1 L# e9 I8 {" o/* Start the clocks */
3 X) ]+ J' S2 \' t- K4 e. nMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
' t2 P8 l  e9 L- w0 _" Z9 xMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 W8 [+ I* E. kEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
/ r  w( o4 A  GEDMA3_TRIG_MODE_EVENT);0 D3 l4 L, C, t& t) w, c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
8 j8 B0 r9 w8 l2 X! B& oEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 e* i. J) x: j1 G5 b( ~  TMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ D) f; @; n" C0 i" C- M' U
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% U  P  r9 U4 E8 Q7 {; w/ B
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */! j7 n: t- I) L' O
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 K7 F7 A8 Q+ o2 J: e* q. J
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
: {/ o( b/ x! M8 O# a7 z4 |}
! L, g4 w$ T7 q/ t: M" I1 h/ D
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

: {/ c% d9 T$ y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 12:10 , Processed in 0.041451 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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