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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12059|回复: 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,
0 C( g2 {# w; Oinput mcasp_ahclkx,
! U7 Z' P6 ^) |- v4 y1 E) |& Uinput mcasp_aclkx,, J, _, s  P' H) _4 D5 G( `3 C; F
input axr0,2 S- _& p3 h4 }, S

* W9 N3 s( ~9 D' K  routput mcasp_afsr,) q1 k0 e5 R7 h
output mcasp_ahclkr,
4 O( K- x# b& B; Aoutput mcasp_aclkr,
7 c# K6 X! C/ j6 G1 `& V4 T' y0 }  Zoutput axr1,
8 }! T2 Q/ Z: G. H* ~
assign mcasp_afsr = mcasp_afsx;
3 I! \1 h. l% j5 [( ?assign mcasp_aclkr = mcasp_aclkx;/ s5 t' }; w, |- W( f
assign mcasp_ahclkr = mcasp_ahclkx;
5 J! f" i) H; lassign axr1 = axr0;
( |$ s8 u( n. m- v, c

4 ~8 @# V5 t" g' J+ ~/ M: K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 l; k* L: G8 G& \6 ]) W0 u
static void McASPI2SConfigure(void)
3 n  |; L2 x3 G# I) c{
: j$ f% I% z, Y5 |3 k7 L8 z% c# hMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
( X2 g! V$ P5 M. j6 v; ]: sMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 {; u) G* A( K$ k+ XMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
# k8 n! k! b2 D! v9 n3 GMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- z- K) }2 {  }: L4 n/ h
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% j7 l3 b5 e4 a" w  h$ F7 mMCASP_RX_MODE_DMA);
3 [4 \4 {4 s8 Z7 EMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,) h: T2 w- r. ^! k, Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* Y: P+ X- X. HMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
9 Y* ]4 U1 {" k4 p: l# xMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* ]2 W1 n/ o, f1 f+ C; h% B( lMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# S3 Q; {5 S1 EMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
" l1 ^1 J) v% s) W$ [McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- s) ^2 n8 I5 z9 f7 KMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
9 Q/ V2 _) f+ L9 L: p* I3 IMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" D  E/ Y8 c6 s9 e7 F2 N0x00, 0xFF);
/* configure the clock for transmitter */
) t( c- h% e9 t$ v  w0 n, c; ]9 A* qMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ d3 @6 X& y, U! n4 E9 V5 OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ; j9 K/ L' m: p8 ^8 p
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," N5 b- x# S; n2 e# L  @" N
0x00, 0xFF);6 c' ^* A/ }% Q# k) @

! J) g2 k7 K* L6 H. c/* Enable synchronization of RX and TX sections */ . t* ?% U: @. S# Y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */5 ~6 a, \6 }! L) k- W( u
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 ?' S8 j/ P7 {7 G
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! J% H4 I/ m6 g6 L7 t- z** Set the serializers, Currently only one serializer is set as
6 F2 Q1 z1 }9 k** transmitter and one serializer as receiver.! Z0 E* g6 l: B5 e
*/1 P/ N  V  Z3 v1 B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
) P* w5 J1 @3 X4 V: B; t* \! i0 O& CMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*) ?2 j  H7 u% W9 c* Y  [) k
** Configure the McASP pins
4 R) n' i) n1 p6 `! }+ x. `** Input - Frame Sync, Clock and Serializer Rx
% |( R6 w1 ~8 k0 l( E7 D) t' C% T; [** Output - Serializer Tx is connected to the input of the codec 2 k% }0 I8 l+ l7 ^' I
*/
7 R/ e6 k+ m, L8 c; S1 i+ _McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
& D7 C1 c8 p( m$ v; cMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));" E. l) j2 H  ^# g5 I3 p" h/ W
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( u( w; W) |* G6 e* E
| MCASP_PIN_ACLKX0 C1 _9 h! ~0 T" \( |# O) q* {3 |) A
| MCASP_PIN_AHCLKX3 w+ [; J. K% ]( X( b; _- v+ O$ ], F
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 H* g* J4 _  t$ p1 _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR . p( c1 f; h4 n+ |/ j0 ^
| MCASP_TX_CLKFAIL 3 a9 U, n3 v" i$ o
| MCASP_TX_SYNCERROR* i4 c- b; L3 }3 q+ O: P
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
1 D1 ^' O* N4 z' \0 n| MCASP_RX_CLKFAIL
! @4 N: g& w7 ?! z| MCASP_RX_SYNCERROR 2 o, s. G- s" D1 a4 x/ ~; }5 C4 P1 S2 I
| MCASP_RX_OVERRUN);
, u2 g- d7 c2 c! G}
static void I2SDataTxRxActivate(void)
# b/ N8 t4 A0 P, Z{
4 r- ^& ?5 \  G- r* v8 C8 p( U& I. o/* Start the clocks */
  L- v! z4 I1 U5 d' ^5 p! B# a& pMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
) ^4 [  M+ ]8 _8 ]5 @, C  zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 x- X$ s, A5 T. `4 F' M" q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 I& C2 D9 M* H( j! d
EDMA3_TRIG_MODE_EVENT);" V; {# m# k  |, f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# E( q8 j! ^- c# u" \3 vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */% f" ~# I" o+ u6 E; y7 c. r" i1 \" q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 w/ m( y3 u, O! J( W* L( WMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ W  u6 R3 x( T1 p* C4 R/ d4 i
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
2 i- g( Y7 k( M% t$ UMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 }; a, E3 [( K: m0 LMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
* B4 e: j- f  a; D% `# [}

/ h: a; d  W5 j' T9 ]$ ~$ n/ G) Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

% g7 f' `5 @+ L# c; m6 S$ W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-26 00:37 , Processed in 0.039652 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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