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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
2 |, P. {2 _' b' @% Jinput mcasp_ahclkx,
* s) s; C/ z" v' F* C5 j6 Zinput mcasp_aclkx,6 H0 z8 }1 O+ X4 e
input axr0,
/ M8 B0 n. b2 o6 m- X0 s5 S: n9 p* V- z3 J
output mcasp_afsr,5 o8 K9 |2 L. I' C4 }! _
output mcasp_ahclkr,
$ j7 |2 K- e' O) Z1 N% e# |3 s  z5 Eoutput mcasp_aclkr,9 L/ |0 l, |0 i/ F% @4 Z0 Y
output axr1,0 B1 r7 _" s: M1 n: p+ ]
assign mcasp_afsr = mcasp_afsx;; _6 X/ ?1 R$ f8 [& O3 g
assign mcasp_aclkr = mcasp_aclkx;
6 M# K3 J5 T( t, j# U) N- N5 K" T: Bassign mcasp_ahclkr = mcasp_ahclkx;9 }" C8 h, @4 g, v0 U  f; Z
assign axr1 = axr0;
2 h9 ]; G1 _" n. t! n0 j! Q$ p9 K
5 Y4 G6 @+ W0 _/ o% N1 ~, Q; G8 u
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! a2 m' H; g# F8 ]! m" s' R& F
static void McASPI2SConfigure(void)
8 S- P: X& q5 R* \& B" {( |8 _4 z{
. z. D+ z( O$ D+ KMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 V/ r2 m% T: C7 p( _( f% oMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 q( A3 R/ F6 n6 i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 L, p9 S- b& n) \McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  R3 _+ W" j9 J4 a0 p3 @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% |+ ^3 k* {: Y5 \% x6 I% b5 c
MCASP_RX_MODE_DMA);
8 E6 S- ?9 T4 [5 N+ j9 _- g3 nMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# e3 ]( b/ y5 _3 O+ RMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
# c/ u# A2 `. Y2 q2 g( ~McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" |  {/ C4 K: @& j4 g2 {MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  |, t# L) B8 C& v) m9 n* WMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 q3 t2 p+ }. SMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver *// F5 W7 `7 A/ J, A
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 W- c' c; w  NMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( |% ^9 ]) ?) R# B/ ]$ l
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 ?+ z+ R4 |+ W2 Q, F. Q8 Z
0x00, 0xFF);
/* configure the clock for transmitter */
4 \- E, R, ~5 V+ L" U/ c8 `; c7 EMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" c9 y) Q3 e: Y7 y5 v) K0 Y' @McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : l. F, ~3 Q* }% T
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,7 }" u6 j; v% T9 {2 t+ |5 J
0x00, 0xFF);% T+ O( Q2 f, F$ P5 h$ p
% a8 C/ L3 E6 z# Y, b* V/ p0 Y
/* Enable synchronization of RX and TX sections */
* n# ~; a+ k  z% `( NMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" ^  r8 s1 {  z! y9 E
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);+ U0 J6 ^9 h( r& ~/ y7 Q
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; e( c& y8 H" ~- P
** Set the serializers, Currently only one serializer is set as$ I& J) V/ N* v% s& t6 D/ |  h% g
** transmitter and one serializer as receiver.
2 |0 h4 i3 d0 D( R1 M  i*// g( u$ y. s* e# G/ m
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);; U4 v  }0 T( E- R, y
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& ?) d3 @0 }8 W+ R! _
** Configure the McASP pins
- f( T( Y  Z& d1 e. W; L** Input - Frame Sync, Clock and Serializer Rx
1 v0 `; U9 \+ ~** Output - Serializer Tx is connected to the input of the codec
+ m; h8 Q. {) P. n*/4 W) `+ g7 ~' x5 j" n1 G
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);& z# f2 k" l  y& @3 a! t- @3 M
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
$ T! w' W) n) fMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
5 k: P- H) F7 M; Z1 F$ d| MCASP_PIN_ACLKX
- K4 j- a& C3 h! Y0 C| MCASP_PIN_AHCLKX
7 c$ m9 ]/ u) }- x7 ]( g3 h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& e9 I- c. D1 Q- ?- k, L7 FMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" ~* y+ x4 ^! ~  P' Q1 r| MCASP_TX_CLKFAIL
) R! a8 y% x- }. d7 U| MCASP_TX_SYNCERROR- f* \: H6 }2 `) ?; x, r9 R/ i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 4 U% J% S) l( x. k$ u2 r
| MCASP_RX_CLKFAIL
8 E9 E  Q* f" _| MCASP_RX_SYNCERROR
4 b1 V5 V$ C7 S9 W9 ]| MCASP_RX_OVERRUN);
* U0 W) J' h$ Y/ j}
static void I2SDataTxRxActivate(void). t4 \; s# k9 s4 x
{
2 s. F6 x+ [: `/* Start the clocks */
& l7 w5 g  w3 w) z# @McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);0 a. O8 p5 X* {! `( }
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */  `9 x* V' w: }- H- l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,$ [) E. I/ a4 ?  e; |6 v, U
EDMA3_TRIG_MODE_EVENT);
9 {  i% p( S* S2 _4 l+ eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! J% f( k5 R& ~5 |2 M- i% ]EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, d! v* y5 N+ h" s: c1 n
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ f6 w0 j! ]: R# n! B  R1 R! o/ [
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */% G: c5 E7 q1 p
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */: U4 m% E/ I5 ?/ t* L+ F7 M
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& `4 m) B: |3 z! n  o( r: FMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 Q: q  o" y. f$ N2 h
}

8 }3 L4 X. m& \" i7 u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 p& E' t# U8 }( H- }5 M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-8 02:47 , Processed in 0.044332 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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