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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8832|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
  k. S4 q/ o3 C+ `) M0 X& I$ Zinput mcasp_ahclkx,& z8 n4 I" K3 e6 J" w
input mcasp_aclkx,' ^7 Z5 n& ~/ B: P9 k7 p
input axr0,4 o" [) u) O; j; E4 d: j7 R

( T. [# {: s+ ~4 `. I# {output mcasp_afsr,7 A% @- s$ t" [% m2 c
output mcasp_ahclkr,+ _2 _& c6 L! W' l
output mcasp_aclkr,
5 l9 n6 [1 t7 `$ C% ooutput axr1,
: T3 y( t( v1 B1 N) M; ?0 H3 V
assign mcasp_afsr = mcasp_afsx;
; n  E, e9 D' qassign mcasp_aclkr = mcasp_aclkx;
% E- ?/ \' p8 s3 vassign mcasp_ahclkr = mcasp_ahclkx;# P! k% N1 c& l/ @2 g& G  S* p
assign axr1 = axr0;
* [7 K. R9 U/ b0 q
9 l/ s; g0 J1 @/ l) d/ K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
+ h3 |- Y; l; ?2 I; u0 y
static void McASPI2SConfigure(void)
, ~) N; U" b' @2 L) Y{+ r3 K6 y$ R2 l! g3 F
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ [0 k* ~. K2 }5 \, CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */: n8 l+ g% |4 T1 i# M
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);1 Q6 `/ G! b. ]0 }, F
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */3 o0 B4 Z# B- I0 P, W( |5 \1 s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: W& @" r" c/ J* Y( v; PMCASP_RX_MODE_DMA);
- J% f! t* @. `- ~3 P. i8 ~9 oMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ k- x1 h5 O( y  T- I
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ Y- r' \: x, a- {
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, " p, }4 d1 o& v( b4 A
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);' U. Z% @1 }6 L% Q/ p
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & s+ b. Q9 S3 V& X& A0 P7 C
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 w+ U  J; o, l& ]* [7 _8 }% OMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);) Z8 U2 x: B- x  m. G* E
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
8 ]0 p7 `. S6 w9 K/ Q* X3 v: ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" O2 g# l# J$ i& ?0x00, 0xFF);
/* configure the clock for transmitter */) s4 z9 e. l3 C- C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
, e% z# f4 d3 {/ s0 dMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
# |8 w/ F1 g9 e' F, N/ \+ Y, gMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,! l% K5 P' u2 E$ i) Y
0x00, 0xFF);/ Q1 @' [. R- y) h1 `# G8 N  l
' }4 w# H; w, @" k; {0 I& n( X& N
/* Enable synchronization of RX and TX sections */
9 S9 s* w4 [3 Q4 x% {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ M4 |- m6 h9 IMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- ]1 M& Z+ n9 g+ g; hMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*: Z! _: J$ F  \* t% M" W+ z! m
** Set the serializers, Currently only one serializer is set as
2 e1 p# V' g: p2 x0 A** transmitter and one serializer as receiver.
) ]6 [' K& Z& S& u8 }( D/ i*/
( h" h. G. y# {5 ~  w* \McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 Q0 D! m. F  ^* X2 ]2 A( wMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*# @  }& J6 l' R2 n7 y# Y
** Configure the McASP pins
+ ^0 J+ M) S7 X5 _) H8 l** Input - Frame Sync, Clock and Serializer Rx9 ~& C0 U7 [! W6 }4 |, |: Y+ w$ `
** Output - Serializer Tx is connected to the input of the codec 2 q; U4 H! t0 d0 V8 ]/ W
*/: B/ C% G# ?  f: K8 m  f1 U. c, x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);5 U. C! V' z/ B5 k6 Y1 N* Q
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. Q6 ~5 E6 s8 W8 a8 a8 a2 hMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. d8 K. n5 z9 _, R$ ~| MCASP_PIN_ACLKX
- f4 u9 F1 u9 Q8 T. f7 C| MCASP_PIN_AHCLKX
& M. C2 K1 R0 M| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */+ j: \2 u& d, k- i2 n$ r
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR $ N- j- d8 |2 _$ F* G  y$ u1 _% h
| MCASP_TX_CLKFAIL
2 x& b2 f1 O* p3 r| MCASP_TX_SYNCERROR$ c5 \4 q# i; M5 }1 x3 y9 K
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ T: R5 C8 u5 s6 a| MCASP_RX_CLKFAIL
% s$ X* ]: p  @| MCASP_RX_SYNCERROR * b& n# A" z; L& g  M1 y) F% \
| MCASP_RX_OVERRUN);
+ R: V, k0 V% j5 D3 d3 S}
static void I2SDataTxRxActivate(void)0 v/ V/ x: h4 R; a" l0 c
{
' Z2 i7 `8 \- F2 o, J5 y/* Start the clocks */; t) N4 K" q0 W6 ]5 I0 Y- L
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 ~& o- I2 i6 V2 V+ u* \  cMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. ^4 y# |& q9 x7 |, Q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ h3 k) s: u' j' y4 B1 DEDMA3_TRIG_MODE_EVENT);; n* Q# r6 G, o8 M/ E3 U; c* h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! x' V4 e$ u) r5 f9 Q5 |% s
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
0 t1 R- l: F; C# Z5 iMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 F4 ~; e* X6 s! j; x0 HMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 G4 }. C$ z; ]3 n3 e9 K* _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ O* F; C( u% z, T2 f: qMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ \. h& n7 S0 U$ H; ~* f6 l# `
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. h) d# m. Z: i- s2 G}
( _: N+ P: v" G' F
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% y1 d/ H! \8 Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 02:21 , Processed in 0.039246 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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