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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12598|回复: 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,% z* U  w" Q5 ^! z& P5 |8 l
input mcasp_ahclkx,
: ~5 g5 I5 s1 J4 G' Xinput mcasp_aclkx,) Y  F( q. w& H# G2 I
input axr0,
8 \9 Y9 F8 h+ a0 c' [6 ^- d
. a+ U& m& t7 V3 V2 ~output mcasp_afsr,
! W- S; O/ _$ `  e9 z0 o+ houtput mcasp_ahclkr,  }. ?: ]; n; c0 b, U
output mcasp_aclkr,
7 j* Y! ]  U$ w& v  Q, ]output axr1,! y$ T# W, ~* ^& J1 h& W; a1 h
assign mcasp_afsr = mcasp_afsx;7 n& X- x2 z# i1 a
assign mcasp_aclkr = mcasp_aclkx;
9 l% E3 q3 c- y0 m& k0 Aassign mcasp_ahclkr = mcasp_ahclkx;+ ^, D, b' r  _7 ~( R% I
assign axr1 = axr0;
8 {* m1 G2 X  R5 F) m1 C
) ~! [. Z+ p, k( g% R" j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
7 H# }8 D8 ^  C5 D6 A' }
static void McASPI2SConfigure(void)
9 f( F+ J% ]) e* ?6 b{7 W- k% T: Q; e; A
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  P  m+ z; N( `5 n3 ]; P. o2 UMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 D$ L9 @" x9 r$ ^1 L% v! CMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ Y) }, T& ^) t" V; M7 s8 LMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 X; a3 ?$ p, G" k( u8 lMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& ?. P5 p8 f+ S( {% k, }MCASP_RX_MODE_DMA);
% `2 f0 h$ g$ u2 tMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' ~& z- [& h$ z6 m  b7 n; j
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
- m: W9 o) x, \% k) j5 M  [McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" z( y7 P  w2 v- mMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);) ?/ T+ r- G4 w- q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* D' J4 c* U% k: W' A6 pMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */& `9 |9 E+ B, g# _  b$ o. @2 }; [% b
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. \% N( M4 M% b
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  p0 D* Z4 c' G7 a# u. sMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ G4 A/ r' W) b' ?6 p8 h- ^9 W) I" O0x00, 0xFF);
/* configure the clock for transmitter */6 L! m, [5 x5 J; n
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
. ]0 \$ a3 E1 Q. @7 `9 a# {McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
& f& l0 T( z' G3 JMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 i6 n2 Z& [5 h
0x00, 0xFF);% V5 n: x: {7 Y6 T0 l% E6 [
$ u  C  \# N3 h' K  E5 }
/* Enable synchronization of RX and TX sections */   n% {+ `3 P! u3 f7 J8 V
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 J  u0 ]5 I( Y( WMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);+ [: R. ^+ {# D' n: T4 f! X
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 y. ?; X& y" l. l" E1 W, S** Set the serializers, Currently only one serializer is set as
7 g. M# ^9 o  j3 x" u** transmitter and one serializer as receiver.6 J% d- v/ r7 M9 T2 {
*/0 y3 P4 q+ l7 ^/ a" B& z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 N2 t' M- R4 J: s7 nMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
6 N5 a" B  b4 r/ r** Configure the McASP pins   e% W8 r4 c2 r. U3 m
** Input - Frame Sync, Clock and Serializer Rx: M2 u/ T9 O4 [- _; @: F* b, P5 _
** Output - Serializer Tx is connected to the input of the codec 0 i/ d& t: Q! H4 S0 j2 n
*/
- s- D* j0 v, J) DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 v8 a) ^+ f( }6 w7 Y2 j: z2 k# C/ \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 i& J* I: V8 ]; {7 s' GMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ J9 l# ?- u9 ~* W, k5 U
| MCASP_PIN_ACLKX$ S. P$ X+ L0 Q
| MCASP_PIN_AHCLKX
( x" s/ c. M9 w7 z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- ~" k. W0 Q% m+ _2 k; o
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  B& Y4 k7 x6 e% O1 E| MCASP_TX_CLKFAIL
& U: l$ c  }% G" u' r  d0 B! k* S$ b# X| MCASP_TX_SYNCERROR' p* F: v$ v2 y$ F$ M5 |0 \
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ( _* e( g. r$ N9 V, b
| MCASP_RX_CLKFAIL
: ^" t' J8 C& ^3 y% W& W| MCASP_RX_SYNCERROR
, t8 z  o$ v7 S3 A( r9 O| MCASP_RX_OVERRUN);8 f, E8 Y) I7 s6 a# j: N- j3 Y
}
static void I2SDataTxRxActivate(void)
5 T) A# g7 o+ `9 K5 ^2 S/ A{3 I! F/ J' Y; n- L! l
/* Start the clocks */
4 Y3 {3 v+ w% `7 FMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);) e% J' {+ v# v4 y& C
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 u7 E* V# o! [- ?2 iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
! P2 b6 x+ l. r5 ^" W: KEDMA3_TRIG_MODE_EVENT);
( ]' g1 {% }. }EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . y0 L$ D% o! t
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */5 \( I* {* Z5 o
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
5 E2 S, W8 P, CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
8 V' n3 }& |' ~# f2 awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. I5 Q4 @: _4 o+ H9 K/ qMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 t3 E* V4 s2 l; y0 g/ mMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);' h* n6 W) J' ^4 n
}

& i9 s: u$ m- m; Z  J$ S
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 y" g; q" W% Z& N  {5 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-19 06:50 , Processed in 0.045257 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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