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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 519|回复: 0

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1154

积分

金牌会员

Rank: 6Rank: 6

积分
1154
发表于 2018-11-7 13:28:07 | 显示全部楼层 |阅读模式 |文章模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
. g6 w1 u6 h$ m0 \: vinput mcasp_ahclkx,3 G7 x! U3 [6 i) B5 @+ |" r& b5 y
input mcasp_aclkx,  z3 K; b% N+ K& x0 \
input axr0,
4 g/ W. m7 x: @9 X! z* H# P( `$ H; n% B# g/ k7 t
output mcasp_afsr,9 m7 B) x- i) w/ L. Y. @
output mcasp_ahclkr,
! i# e1 S* y% Q$ A9 c2 u' ?; Joutput mcasp_aclkr,
% _3 G/ w/ }- [4 k: loutput axr1,
! d- h# p8 j( X& {4 q* Z8 a
assign mcasp_afsr = mcasp_afsx;# L$ N  T# G: X7 ^
assign mcasp_aclkr = mcasp_aclkx;
4 ~2 V( J% p% S2 C9 }assign mcasp_ahclkr = mcasp_ahclkx;
. d3 g- n  }& o: bassign axr1 = axr0;

/ E9 O6 X  I2 r3 F) J/ p0 W
/ a$ e$ f6 T2 w0 G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& x5 E; [2 s7 Y( `. F+ U9 s
static void McASPI2SConfigure(void). ?7 M& d9 X" d- D4 {9 J/ \
{
; L9 I/ [2 G8 r5 ]/ p+ oMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ ]  L/ v4 x" v+ g9 qMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* ]$ K5 Q& u) d# a; V) }( ?
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
+ x, M; A$ u  q: G3 ^McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */7 J+ e5 o1 w6 k) @1 i
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* p  x% i: K1 t! ~MCASP_RX_MODE_DMA);
0 V% A. u, N9 }5 Z, g7 r7 rMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 i. f0 }$ q. V5 p, V
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) M" ^  ~" V, b$ D- [; ]  \McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) f" G: x$ T( {4 p! w8 H9 E" N
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
1 e& {+ Q% X! ~7 ZMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- y' D" M3 n, s+ HMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */* i5 E& {; k0 C' a% ~/ o  @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);1 }2 H2 x$ s( N" q/ Q# ]6 r* k( ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 W( Z- e' W7 j6 q) I  z3 zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 y0 C# P+ \" X5 q5 A* q4 ~
0x00, 0xFF);
/* configure the clock for transmitter */( R7 y$ B* B" r/ }  c6 j7 |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ `. m) g8 c1 V" t( S- j1 C% c6 J" k% b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, f! u5 U2 O' r# W0 K* }: b7 }McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) S! F, p7 {9 @# g  C6 `9 ~; }0x00, 0xFF);$ U) l, }* c) `9 l

2 D# L9 J; p, ~0 W7 z/* Enable synchronization of RX and TX sections */
* l0 a, s+ L2 zMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */# ]8 }/ p6 m. v- Z# f
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);2 R9 z" W6 v, i- c' K" w
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*2 D( A/ x0 c- L& w( Q6 e# r1 v
** Set the serializers, Currently only one serializer is set as
2 ]5 y( I. R0 C. J** transmitter and one serializer as receiver.
; q/ |6 _0 Z$ B  Y& e7 g*/0 n! I  `) y) H0 y5 [" J0 ^
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 d+ V5 _$ o' t6 K6 K
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( K5 L! a$ P: F" S
** Configure the McASP pins
+ d4 V  \/ K; Q- h** Input - Frame Sync, Clock and Serializer Rx4 `' x6 g0 X" g- ~0 g: a3 w$ `' |
** Output - Serializer Tx is connected to the input of the codec
( W; p  i# @3 N2 p*/
6 R; G: w* N" o! Y- N$ Q9 `McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ X/ `# C9 V; ^' `1 s; A# l* M
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));2 B) W5 j: k# H5 n$ B8 S
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX$ \& d! L5 V2 [  {: ^- w6 U" f
| MCASP_PIN_ACLKX6 B0 L) U7 u, K7 @/ B: s) ~! J
| MCASP_PIN_AHCLKX
! `: _  U3 ?* K$ o0 g' u| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
8 j3 q, X: D5 {9 v& `" ]  fMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 H, A* D: H1 |* e- v# _| MCASP_TX_CLKFAIL
. Q7 i1 J! G8 L5 i, K| MCASP_TX_SYNCERROR1 [( O) \& l6 z
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
& N! ~8 h1 q$ Q6 u9 l. r/ L5 q| MCASP_RX_CLKFAIL
, e0 E3 y6 P: M% \0 `2 i, X| MCASP_RX_SYNCERROR
8 T* t# k1 F4 b3 _3 R# L2 i( z| MCASP_RX_OVERRUN);- O3 |- K9 G4 X- J( i9 d, @
}
static void I2SDataTxRxActivate(void)
4 x/ X! v# ^5 f2 X: P2 b/ W{
3 H( v$ q/ n! @. U! _. g* p/* Start the clocks */4 |9 Z; i" d1 T7 f9 g: j5 z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! l- @1 f6 n* j
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 s2 P- x) g; h) m4 l! j$ ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& v( a& |5 S5 r7 hEDMA3_TRIG_MODE_EVENT);
7 C" w" j. ^) d8 W) A$ x+ B  p6 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
4 o! _3 R$ `; a% U- I. h/ ZEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 G6 ~+ [3 e0 E3 YMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ I& t5 G% Z( n' K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */' j) W% [' e, D1 J4 V6 i, I( Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" o! q4 n: D8 [! ~& O: ]) e
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
- Z8 q; O0 |& q2 yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  b+ U% L6 V/ H: X}
0 r6 V' m( J" I9 X( L# t: j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

, \. o3 A3 L( R" P
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有0人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

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

本版积分规则  回帖提醒

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

GMT+8, 2019-3-20 15:38 , Processed in 0.186346 second(s), 34 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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