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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10750|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
1 d3 U9 p& ]# Q% S: E( @& Rinput mcasp_ahclkx,( |& U" ~" Q! e* T9 p+ q
input mcasp_aclkx,9 P0 M  k: f0 [4 I) C9 g2 l
input axr0,
$ p5 r$ f: P4 U0 A, C
. p- {+ t' t6 ~0 @5 v, s5 ~! ^output mcasp_afsr,
; l2 V5 p0 a6 ]% D/ w3 C" foutput mcasp_ahclkr,
" c( f2 I  q) l8 y! q" ~3 \output mcasp_aclkr,7 r' [/ H5 ^% H* N* ]. z
output axr1,
+ \. {6 M0 V/ K6 h! W4 S
assign mcasp_afsr = mcasp_afsx;/ j  q4 O3 e7 `- s( U/ {5 k  O1 }
assign mcasp_aclkr = mcasp_aclkx;9 d8 z2 l. E* `4 \7 p
assign mcasp_ahclkr = mcasp_ahclkx;% E+ `, L, G# m4 |8 w
assign axr1 = axr0;

7 m' E$ f0 U; ^$ T: @: z2 l& _% |/ l5 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" x1 x5 v1 ]6 c8 m: o) o( l
static void McASPI2SConfigure(void)
9 Q! _/ j/ ]+ R5 C1 c{1 e% j1 S* ?4 Z( c. I7 @
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
5 D; w5 }5 G7 |1 v+ wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 |2 o% R1 U2 G! i+ z) D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& h" S% ]2 R6 YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
& e" Q8 a6 D1 q% ]McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 [3 j0 b8 W  l
MCASP_RX_MODE_DMA);
  ]. i/ \9 {$ F9 D, B: t. `' JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ d' s& W$ o) T. u  K% ^
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */  c( w) m( D8 H1 b& R2 Z! U
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
3 q/ K# c; A0 r! n; ~- wMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- h) q9 v9 w8 U. Y; p7 `; c
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 P" u6 Y2 I5 D8 b; a/ pMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
. j$ m" Z/ M% h4 G% \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- L: ?2 o/ z- N( K( B6 X4 v" UMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # R6 F& |# b4 I) v
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,& s: f# m, M  X, H* T
0x00, 0xFF);
/* configure the clock for transmitter */
* q4 i+ L! D* {McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 p  D9 `2 a' c4 W& L
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' O4 R! i9 Y  `' q. I3 {* oMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
% V7 }% K2 [" R  _9 Z3 `  M- T3 d* V0x00, 0xFF);+ b, k; s( U1 Z; ~" b
) D; {0 T" Z8 H8 @; c  c7 |0 D
/* Enable synchronization of RX and TX sections */
7 ^4 l0 P8 u( @1 J$ L/ M1 CMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
- b5 f. v) i. }3 F- B$ }McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
# x- s! J& W5 i3 j4 t+ vMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
* V. v$ ?& _- T( W** Set the serializers, Currently only one serializer is set as
- ]" v8 l5 z! H" w/ D0 |( L** transmitter and one serializer as receiver.
; n' i5 z! u6 T*/
5 @6 w3 e1 M# O% w( F$ Y) Q2 wMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% K* `% k( W* \/ m1 L( V$ gMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& ]: K! g5 e* u- }! N. _9 G, ]- h
** Configure the McASP pins
8 f: A. V: s$ f# p- t! D! R** Input - Frame Sync, Clock and Serializer Rx
8 W0 T/ {$ K; O2 n; k; E** Output - Serializer Tx is connected to the input of the codec , Z" W4 W0 d$ Q7 Z' i3 d
*/
7 p( {3 E4 O* C) PMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 `" b' e: j/ H, b* I
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));' V) J- e3 f! O/ k
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
2 z( j# P2 P$ S. V5 c| MCASP_PIN_ACLKX
9 c% v/ |+ y& ^| MCASP_PIN_AHCLKX
4 R+ `- \5 Q- _8 a3 p' G| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ ~! x+ u: D/ v$ d& A7 b+ H( KMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 N0 C, n& r( |" H+ V( S| MCASP_TX_CLKFAIL $ y9 O) y1 x) A2 h
| MCASP_TX_SYNCERROR
: B' R" {& z% t/ B| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 \# h& {: U3 G+ `9 D% p; k  d; O- p
| MCASP_RX_CLKFAIL
& h8 l1 W# h% M! a| MCASP_RX_SYNCERROR , b+ D  h# ^% H8 b5 Z
| MCASP_RX_OVERRUN);! J0 G* B3 K6 s/ V" M
}
static void I2SDataTxRxActivate(void)0 n# I; B* h( W/ v1 T
{% o: [3 v+ C/ w7 O
/* Start the clocks */
8 k6 j7 C8 o9 {, A+ f: UMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 A2 _) d6 W* k: h) B4 n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 K+ e) h6 n4 o! @! s! Z( `
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
( e4 B/ d% r# u# w( f' kEDMA3_TRIG_MODE_EVENT);
! `% ?2 ~7 @1 U9 ]6 p) yEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& t9 g: y9 m- V# u9 b3 [% ]EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 {# Z6 s. `( A! \3 v& P5 D  c
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
# [9 N$ U# @* _  eMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
1 z" B1 h3 J& ~6 Q+ H9 Vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */9 j0 j: o8 R3 q& [( S6 H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);1 @8 [' G' e) X8 z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
2 n0 r2 e' [' M1 e6 g9 q& f( Q5 I}
+ P* U  ^7 o# _' {6 s$ ]( x3 k
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 ?' f; i/ z% x  S' b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-14 23:41 , Processed in 0.041283 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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