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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10491|回复: 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,
' ^3 j6 K6 p$ L  c6 qinput mcasp_ahclkx,
8 M% ]9 P( G% C# Finput mcasp_aclkx,
6 M4 S  ^$ `, `! ^input axr0,4 }" S1 Q4 w' N2 M, s6 Q
% `: D, M2 }  l+ |# z
output mcasp_afsr,
6 L" {5 U* R4 z' P0 |7 Coutput mcasp_ahclkr,7 w" e3 k6 z# a* |$ p# W" H0 l
output mcasp_aclkr,
: E6 N+ A+ Z1 f8 U- l- m' Loutput axr1,: s. r$ B! F, J
assign mcasp_afsr = mcasp_afsx;
! _6 V! @0 p( f, Z  fassign mcasp_aclkr = mcasp_aclkx;
9 ?. O" P+ C- l. L7 `" a. jassign mcasp_ahclkr = mcasp_ahclkx;
+ K$ T, T! }  e2 T2 ]assign axr1 = axr0;

. A, Y# ~( W4 d) |& }+ L
( l( \  x$ R: {$ a4 D2 B" f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 q/ \7 m3 k9 E
static void McASPI2SConfigure(void)
" E+ _% o- s) b9 I! t4 f, M( z{
& j: r5 W: m! q( U5 E- j# uMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 s# g# a/ r: }$ h. ^) kMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 M" t+ _- B* W' F
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
  y- p" D8 \* W2 c9 O" qMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; ]6 Q% r6 `6 k6 u0 D8 H% TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 M  m) X* D# H7 F$ x
MCASP_RX_MODE_DMA);
# G* x1 h! i& j. ~3 r+ g* C  IMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ G& w) @0 [4 B8 M9 yMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* H3 T3 L8 @; \+ W9 h
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  ~) M9 Y1 E# Q; q0 [  SMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" P) }/ E9 T2 U  J' N& i
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
9 F, ?+ A  p( MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! b: e7 y9 o! h5 ^! Z& _  OMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);6 f/ [2 R- C! s5 ]
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 3 f) I9 g9 j8 x5 m( _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
3 R6 S# P% O+ L/ t( T* O# Z+ w  G; i0x00, 0xFF);
/* configure the clock for transmitter */2 n! y) v9 I& Q$ l$ g, F; M
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);) W& z9 c2 I6 J5 D, O1 q
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 w" q* n$ j" C! v- M1 t8 MMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,+ p' ]( P, X+ o0 t7 a' D  x. e
0x00, 0xFF);
/ j- V8 `) l2 W2 b! l+ R8 c) F9 t! c/ m
/* Enable synchronization of RX and TX sections */
9 m2 m: P7 {7 Y& P  ~McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 p0 L6 B5 o9 v- U3 S  tMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 V& V" A  |( z: F* n% w5 ~
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*# v- p% b! ?0 {" ^1 w, Q: s
** Set the serializers, Currently only one serializer is set as3 v0 p+ |! a7 H% T5 L( u
** transmitter and one serializer as receiver.
" k/ y* z1 B" p9 i. R1 M; O% P*/
* W, O$ s, W2 W1 @, xMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 V; _, Q; R7 h4 `/ @& ^7 AMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: R7 ]/ T: A; X/ }! n3 S) |) G
** Configure the McASP pins , {1 M" a8 P! T: X2 H6 I
** Input - Frame Sync, Clock and Serializer Rx  v0 x( r# O6 g6 q7 ~4 J4 f! ~
** Output - Serializer Tx is connected to the input of the codec
) R& |6 C" D5 Q- w*/
& D0 s: ^" t. m5 R; Z$ Y: qMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" }) ?6 c+ N2 _9 {- k& u
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 s. ?$ T! g5 }
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
5 o5 D4 y$ W+ X* y/ L| MCASP_PIN_ACLKX5 Q& f$ E1 e' I  h0 q
| MCASP_PIN_AHCLKX8 K& n$ g. f2 ^* k: z/ q, z6 [9 l
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 R, O" b) T& H8 C0 C' Y
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  i4 Z, [; g  V4 q2 _| MCASP_TX_CLKFAIL ' x. n( v- w3 P
| MCASP_TX_SYNCERROR8 X! D* l5 h- q4 e5 S2 d3 |& R
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - |2 {) e+ F9 q; e  Y, \: J4 i- I) S
| MCASP_RX_CLKFAIL$ @( L5 f  e4 I; s
| MCASP_RX_SYNCERROR 3 W9 \! X, X; d4 i% R7 w
| MCASP_RX_OVERRUN);3 `; P' h* \1 F  S/ L
}
static void I2SDataTxRxActivate(void)
  X: v: R2 _7 Q) I( [1 q9 O% K{
; v% Z( o# C/ }/ o6 K0 e, j0 ~/* Start the clocks */
3 _1 c; ]- V9 {$ AMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);+ G( Y2 K7 S2 ^( m7 `$ R
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& }8 @. E% F4 y0 k0 J& ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,) I' D$ n$ \( t* X" y
EDMA3_TRIG_MODE_EVENT);( L+ ~1 C, z3 j* Y$ o
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: x2 R2 v2 B2 d9 v. xEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! x# |7 K1 O6 \+ ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  i  U0 b% K2 I% G0 Z2 CMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! X6 B. Q0 l0 S  [+ A; p5 |# bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# @7 ]. ~2 w, g6 ]1 q+ xMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: q* S2 S- M1 QMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. q  \2 y; v3 [+ E) K6 R) \+ G3 k}

$ Q# k5 _' ]. u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
0 F0 v6 K; B: x4 O; S* Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 02:32 , Processed in 0.040469 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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