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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9624|回复: 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,
! g3 e8 O9 X9 g  D+ ?input mcasp_ahclkx,2 D5 L# q1 x9 a1 T- G4 o8 g, @
input mcasp_aclkx,
7 Q8 m! U% \6 h* y! l) Qinput axr0,
% d/ T7 }  {4 f5 d6 C8 h0 [% I. M8 F' p
output mcasp_afsr,
5 w3 ]+ h" _6 v; toutput mcasp_ahclkr,; B0 t3 d& h& J0 M
output mcasp_aclkr,
) m5 M, o. z8 k  ?output axr1,
2 b# }2 d1 [9 R1 o; {# ?5 {7 J
assign mcasp_afsr = mcasp_afsx;
' w3 Z- D; i+ J. C2 B  Dassign mcasp_aclkr = mcasp_aclkx;
* z8 a) b6 R9 b2 p1 ^* Passign mcasp_ahclkr = mcasp_ahclkx;; ~( s; d  v- w1 X+ E- m  L
assign axr1 = axr0;

: C; q8 a  B0 X, l; N8 @, }! D# Z) S8 A) |4 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
" ]/ P  }1 _/ F- T9 c) `# \
static void McASPI2SConfigure(void)- P/ q; `+ I7 V+ C2 O7 @
{
- L# K9 o: G# \0 DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);* A% \+ O& ~2 H# f( o0 C4 Q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* b* b, q/ \: U
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) \* ^. _9 a( X
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ T$ k. l+ Z. _7 g" jMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( h* d, @" ~; [7 }5 n' a2 W* c0 XMCASP_RX_MODE_DMA);( B, |+ o. H$ N/ G
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,8 G( v: c& c* X. z1 I$ S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 U( o0 F8 ~, U3 Q: B) k
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 9 d5 ^, x# \; j- q6 v
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
: E; s6 K! J  G3 O/ u) l- mMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" I1 W( Z7 S" J+ H5 i* HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; X: z7 L' q  T% Z0 V4 a  O  K5 RMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ I6 }! ?8 z0 V& {# U$ u+ K0 Z; E
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
! C  ?/ c) P' b8 Z3 gMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,8 B! r& ~4 O5 V3 \! ?5 `& o1 m: C
0x00, 0xFF);
/* configure the clock for transmitter */2 n  D! p1 d( n/ x: E3 k2 \2 e
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; i& I3 G# G4 K  i8 ^& O: f. j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ) F! z# o: e1 r  [
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,: G3 s+ B) }7 `" _
0x00, 0xFF);
0 R7 A- n( w' G& Y( ~# I
# d, |1 X7 F$ v! P# I5 Q/* Enable synchronization of RX and TX sections */ # g3 C; g: a. L+ L2 P: b, {' B9 [0 q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- _' x6 \0 @! |, v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);( K9 \& f: n6 b, ^* f& e4 F1 ]
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% `: d% M+ o. g4 B3 d** Set the serializers, Currently only one serializer is set as
# C$ e4 W* X; M; N8 w** transmitter and one serializer as receiver.* U' p* b/ k  ^, F* [
*/: d5 Z0 U9 P+ Y$ X# X( w4 b
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 V; o; m4 `, }: D. f* ?  T
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! d6 A1 p) Y# P& V3 j# B
** Configure the McASP pins & `1 D4 P; f7 p' V3 l
** Input - Frame Sync, Clock and Serializer Rx6 u0 ]! z1 s: S2 \4 {
** Output - Serializer Tx is connected to the input of the codec
0 w8 E+ @6 J, c*/& @( _. M6 e4 r4 \
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# y# B6 ?) ?, |8 P! r" ]% RMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& C' i1 X! M. wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
% R. x) k9 z/ J/ j& P| MCASP_PIN_ACLKX
4 W0 n% _* s* |; J6 }| MCASP_PIN_AHCLKX" B( [1 P: L7 j' k- R& D" `. ~
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. c1 N% Q9 a3 S/ _McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! l, p$ T; ?& \. R9 Q( w
| MCASP_TX_CLKFAIL 8 S" F* Z9 y  r
| MCASP_TX_SYNCERROR
6 p- K$ n9 }/ w. p4 O: ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
9 c# G2 B7 h% w% F| MCASP_RX_CLKFAIL& U4 D' j3 B5 w! N
| MCASP_RX_SYNCERROR
% e. s  ^3 j. N- {- w| MCASP_RX_OVERRUN);  y' d2 @4 L3 N6 e" y
}
static void I2SDataTxRxActivate(void)
5 l0 T' x8 r/ W  z# h, w* X. t{
" U* H- I* i) W  k/* Start the clocks */0 x( ]; Z/ Q2 H% Q9 i6 Y) S! F
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 N; C' i, |0 V! |! d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 b# k9 v  {( @/ G- P8 p  R9 y! q6 W/ q$ mEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  h" b# v) U/ O2 P8 C* G: e  _
EDMA3_TRIG_MODE_EVENT);
1 ]. \4 i& q/ n  C5 r3 R4 Q+ oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
1 ~# w7 B& u; eEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
' N* k, Q# E$ z0 DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 Z+ P: J" q- h8 o) k! a( m! e+ Z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 y5 u1 n4 C( Y  K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; z* s. k& N, T2 i4 fMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
' F" f  M& C( N- @* bMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% y* Z4 [( y& l8 U}

$ S) ]$ B. ^0 G+ m  q9 q& C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 N6 l7 G7 \: N6 _# G. Y& c' {8 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-15 16:04 , Processed in 0.042736 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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