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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9993|回复: 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,4 E8 b1 R% g4 \
input mcasp_ahclkx," ~8 J! w/ \; ]* f: g; k5 {
input mcasp_aclkx,
. q% E! f7 {  _, [- \  E7 v( Jinput axr0,
/ ~! W5 g% q: C2 |7 q! |1 M8 f( r  N& @6 `- c0 q  k4 b
output mcasp_afsr,4 U8 x$ J$ D. I- C7 t* d( M* x
output mcasp_ahclkr,
$ P. q- e# ?& H0 x' O* Koutput mcasp_aclkr,
- m3 V. c& P% Z& f9 J+ x) l+ S/ k) |output axr1,
; m* h% f, m! p( Z) l, x, a! X
assign mcasp_afsr = mcasp_afsx;
! H# W+ y& r5 y2 Aassign mcasp_aclkr = mcasp_aclkx;
' }7 Y; }9 H1 J$ Passign mcasp_ahclkr = mcasp_ahclkx;) p# L8 U, t8 I/ E5 u2 E
assign axr1 = axr0;

& N& ~( S5 B, Y+ {- Y7 K  k4 @$ O0 N9 _6 G  a. L& X2 M+ N
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 t; C% M- ~$ j; z' A
static void McASPI2SConfigure(void)" J; Y! _- l9 Q3 V: J/ n# D
{
; z5 X, I/ H' _) }+ Q8 _" KMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ k$ ^6 Z$ e/ n1 i7 E& t0 R; XMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */0 K. M& \2 j' l8 \& N  F' {, Z7 ?
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' Z  l" d; u3 l/ d+ x: r% iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */+ s) ~% w0 j+ k: g1 ]+ o! `* Q
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* K5 H7 K7 h2 u7 G7 U% o
MCASP_RX_MODE_DMA);
) B. `4 u/ X, D- \9 ZMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- l* E* g/ x4 [" S5 r" T
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */# }3 O. N! Z9 m- ~$ Y! X( _6 ^
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; y7 D5 O- r- d4 c$ s, n) p$ x6 B
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ l( ^- p, }* |: A7 o" J( z
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 F& X6 ~& e( c; v; BMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */) t9 _& G3 p3 |5 w
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. S( r3 T. J- B) n
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
2 g; }! ^6 C$ h/ rMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ f" ~$ a; o6 o# M6 r! b
0x00, 0xFF);
/* configure the clock for transmitter */
( t% p2 }8 {: M- u7 v4 p# f" |3 jMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);3 ?7 ~7 n$ T1 m, s- N& F
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 j$ d9 R8 e2 EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 @1 F, A1 a0 `7 e, z0x00, 0xFF);
6 w2 M4 K2 [6 C; f8 r. A& V7 U' c% v9 A3 S7 I" ^) P% H
/* Enable synchronization of RX and TX sections */ & I. v4 D( N# u3 V8 ]( f
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */2 ~: J* f6 t6 ^2 H
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
% V2 o8 Z6 K. [* ^; k% RMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
7 J1 @; y) v/ D" |' P$ H2 ~+ {** Set the serializers, Currently only one serializer is set as
7 r2 p- I' X0 P/ R** transmitter and one serializer as receiver., H) M5 N9 k, h8 _
*/
$ \8 r6 \& X. u& E( XMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( t% `$ w/ U8 i0 i
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 }. N( h% u# ]
** Configure the McASP pins % [& F% i0 y" Y; m* T
** Input - Frame Sync, Clock and Serializer Rx
) t* s& I. L; d7 D** Output - Serializer Tx is connected to the input of the codec 8 l+ \+ B, y# p: {2 j4 \) x* c: @
*/
7 e  Q$ ?1 m# f# b: fMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 D  n) g- }+ g1 r( x/ E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));! e$ J) @" C- b; F% q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
" p  ?$ L% L2 r2 l| MCASP_PIN_ACLKX  o8 D2 L3 {, G( U3 z1 J9 Y5 U
| MCASP_PIN_AHCLKX/ S: b# t- _$ {9 Z4 ?
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
  u7 f# ^: t. e0 xMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR   O; w, d+ _6 x% a# \1 k
| MCASP_TX_CLKFAIL
; e+ ~! ?6 ^/ S. R| MCASP_TX_SYNCERROR4 V! B! M4 U1 y1 w* ]) ?. _
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% a2 S7 L* P$ i; v  K. Y| MCASP_RX_CLKFAIL
7 a$ Y: X) N- U0 w| MCASP_RX_SYNCERROR
( w% Z1 C9 R3 D; R! s| MCASP_RX_OVERRUN);
/ X) b  o; ^  G9 p; V& ^+ @}
static void I2SDataTxRxActivate(void)3 s, I4 i" G2 T4 q/ K
{
1 ?# ?6 }8 x3 q1 I: `/* Start the clocks */4 P" S! i$ O- R" F0 G1 k" q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- _- k) E# ~' R$ KMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 u2 D: t+ m) C/ r. uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; o, M" H0 [' i  @
EDMA3_TRIG_MODE_EVENT);# x7 s  D5 \, z+ ~7 I5 b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( T! x3 Q# }0 H) L: S3 QEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 b7 G, D3 V7 O8 r$ A
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 \1 p: @$ P' d9 C6 ~/ |- [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; V# }. {; f2 j. ^2 q6 T' }2 G5 b! K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* w8 t+ J' N: Y9 Q" jMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) T* C) S  M0 R/ c# [" L# QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
! m+ ]5 T( N5 B  L* l" T, p}

$ i; N6 |3 v( ^$ A1 E& r/ b/ ]. K
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
) {# x1 x1 H+ C  \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-26 02:20 , Processed in 0.040311 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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