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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12497|回复: 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,+ v$ S% w* O- C6 j8 r8 _$ {4 \
input mcasp_ahclkx,5 u: P! r  \1 i' C# ~& C
input mcasp_aclkx,
7 G0 i8 N* l: h4 M: }input axr0,
& |* W7 t+ a5 Y; q3 w  }# A3 R- g3 V9 Z: t
output mcasp_afsr,9 k) @0 ~; t$ B7 X1 g3 R6 ~6 \
output mcasp_ahclkr,
1 W& f* l3 K% [8 f5 Z9 x$ E# G2 ~output mcasp_aclkr,
* c5 V% w0 ]$ M( |output axr1,
- b( _. E! ~* \$ N6 n) `
assign mcasp_afsr = mcasp_afsx;
" v1 S) f" Z8 x, W" {4 p& Qassign mcasp_aclkr = mcasp_aclkx;
8 V/ m+ o( A" N/ v8 n8 ~% P4 u$ oassign mcasp_ahclkr = mcasp_ahclkx;2 R' v/ @1 p) v0 H
assign axr1 = axr0;
) m) u' C* F1 Y) |1 \! V3 ^. D
' p# @1 l8 N4 S1 p* v
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 @5 `0 Q) K. o5 i( ^
static void McASPI2SConfigure(void)- u( w$ L2 S! K# }& T1 ^& g) g
{
' P( ~, E) T3 T6 ^. w' ?+ [McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, @6 U3 V4 v, S; p, P, F% SMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
1 B4 c) y$ O; M% L  b6 c, aMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) n' e$ M' m+ I5 \4 E+ n
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */! H% ~: r( H  W+ s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ U5 `! B5 E" U1 ~4 A- W  HMCASP_RX_MODE_DMA);
) x: r3 {3 y3 ?: q) c/ i1 s% JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 D6 P  `% J9 h" g
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ C# I2 N& a+ W9 K6 M% n2 w! D
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 }1 I( O8 ?  ~& U% HMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 q$ `0 S3 j& yMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 O" o  ~" a' i5 }# M  AMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  u6 S  u+ C( O9 w% F; D
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);% a! }7 D1 P- R3 L0 f
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # q. j5 f5 x' R1 q2 c
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 z7 r" n! `5 p, D; D3 ?5 p, Y
0x00, 0xFF);
/* configure the clock for transmitter */
% [5 d* u9 D# `/ B$ c5 PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ O  w" D7 Y; n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & @% K) V" O; c. w: ?
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,% k/ h2 r8 D: n# D5 y. O
0x00, 0xFF);
- G) W  I' q; o4 {2 ], _; I% Q. s+ A
/* Enable synchronization of RX and TX sections */ ; N0 r0 Z- t9 w8 k8 q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. T- G' ?) y* ^1 h! M2 X! y( \$ V& ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. i4 w! G: L2 _5 p* D& B! LMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 a, @* n- M/ b, l; j** Set the serializers, Currently only one serializer is set as
' l; h: \' Z0 [( t3 a** transmitter and one serializer as receiver.
7 g; @2 U! x& w+ p*/
. _% ?$ z: A9 c- i* j8 n, bMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 X2 t* y* F; B  H, c7 w8 w5 B% aMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
1 w- V/ D, M4 F1 ~** Configure the McASP pins
5 i1 _% H$ p1 K7 Y** Input - Frame Sync, Clock and Serializer Rx$ f4 y# ^; v6 f/ }. I  ^8 K5 d& }
** Output - Serializer Tx is connected to the input of the codec ) p% `6 Y6 w+ T* ~
*/
0 A" G' N1 J& v% {4 ~9 ~McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" v8 N! |/ w7 N1 y0 w2 M
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
4 U, p# @9 `% ?McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) f' s; w1 J+ r, C
| MCASP_PIN_ACLKX
! B/ e7 o% o6 a% ^, r) \9 D| MCASP_PIN_AHCLKX
7 l# c4 G5 b) |1 P3 S| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# i9 H& t. `5 M( @McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' Z+ n8 O4 y" }% R5 D4 u; E| MCASP_TX_CLKFAIL
+ J" w: Z& S0 k, L. G3 M) M: R| MCASP_TX_SYNCERROR
! y4 D1 O5 m5 e6 K' a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 y" {; N% E3 Q( R& d/ l% W
| MCASP_RX_CLKFAIL: w$ q7 O0 N2 z0 B2 r5 C
| MCASP_RX_SYNCERROR 7 ]0 b* V  _, e6 i
| MCASP_RX_OVERRUN);
, a- v: ~- A$ k( Z, v}
static void I2SDataTxRxActivate(void). W) X3 e% j6 U$ B5 q) W0 I/ p) _
{+ j: }, U. G+ L# X$ D" Q* x
/* Start the clocks */5 z' r$ q6 a- @( ^2 m4 Z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; w8 `1 ?! g' R7 N, O: c( O/ @McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */1 }9 ]6 A1 n- J6 k7 Y  u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
) [# y. c9 s* P# ]EDMA3_TRIG_MODE_EVENT);  O/ a' p  G0 c: P
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 2 j+ H' J! s& T* n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
/ U. h' e& C( [, UMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. t9 h& z* N3 x% E* q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ E' \" [" s' F8 N- H6 U$ o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! _! P. w! I2 C7 Y% N9 H7 l7 `+ O. tMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);  S  M/ [3 o3 Y& e
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! w  F0 t- Q6 T) ~
}

' U3 T: n/ V9 ^4 c$ C0 t) q4 b
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 V4 A5 X, S* G! Z' l+ Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-22 08:11 , Processed in 0.044844 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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