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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11336|回复: 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," W! [' ]% h( q8 d; `5 D9 b
input mcasp_ahclkx,* v& O3 Y, i5 i6 a
input mcasp_aclkx,
3 U. F: \5 S+ T/ [* Tinput axr0,
  f* Z1 k0 X. U* s: h3 f
' s, Y8 M' \, n8 V6 C! ]output mcasp_afsr,3 C. y$ B' q$ `: J9 _
output mcasp_ahclkr,
9 _3 v! p6 U% s& w' d9 Qoutput mcasp_aclkr,: T6 w# e* n& j- z
output axr1,
7 i4 I1 ?$ s3 e5 P
assign mcasp_afsr = mcasp_afsx;
: E2 N$ P' ], j, f, e8 Jassign mcasp_aclkr = mcasp_aclkx;
, i3 ?2 ~4 P. |( U4 R0 F* k$ Qassign mcasp_ahclkr = mcasp_ahclkx;
( X! ~4 K. a2 Oassign axr1 = axr0;

2 y& k/ X4 |: Y. J' e
/ K: W( r2 s8 {0 J
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, z  p9 U9 H6 w) U8 T0 X6 I) c
static void McASPI2SConfigure(void)
7 Z2 n6 K- \2 `( `! d" x{
! C7 B8 V& l) x! GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
& Q) B5 j% F3 N2 p) _$ f' `0 f! wMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 X0 K4 R# L* n1 f  YMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  _: p4 K: A( {  E6 V! _0 y4 ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 t1 L; J8 a: g: H9 `' ?McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; i/ s, a5 g! X; C4 U0 x' I
MCASP_RX_MODE_DMA);
. B. t; d7 ?# ~  M$ u+ s7 FMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% X' D4 Q1 Z! e2 P( {+ v9 T
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
2 i/ f4 `' Q2 C) e) d: hMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ; c: c: [2 \( ^; K' q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 E/ }7 M8 Y8 x9 a
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 X  ^, l. p- i. L( A: UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 S- q$ V. \8 E8 T! zMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 N; O1 s' d. @1 ^* |' j
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); , T3 \" |/ B; g( T" S
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& R8 k% ~/ o2 T- a; i0x00, 0xFF);
/* configure the clock for transmitter */4 z3 p3 z5 R7 Z. n7 h
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
1 B3 g  c8 G& I/ ~McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 1 l4 Q1 B3 |3 X% v3 p; @0 \' w9 a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# y5 \: k( u5 ^8 l) @* T; U
0x00, 0xFF);
1 e/ S/ l7 Z; a
- p) c3 p+ Z4 G" Q: G/* Enable synchronization of RX and TX sections */ 2 ]9 T" Q0 [1 `( U. m
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" G7 y! W# ?4 S7 [3 c7 H& a
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- v  x" a3 r: E7 \! X( QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 a7 c- m# d- G' d5 k+ l; V2 U** Set the serializers, Currently only one serializer is set as1 F" g$ X: A. E- g! E+ Y
** transmitter and one serializer as receiver.
; X/ y- k- q9 C$ m& |' q% p/ l+ J*/; `! K" `, \  E  C: ?( O7 P! M
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! S8 E- }6 S) s4 ]% RMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
0 F: u) d+ w7 L' z5 C, \** Configure the McASP pins
- f& u8 r+ B" f* c** Input - Frame Sync, Clock and Serializer Rx
+ h: }( b% `, q6 t** Output - Serializer Tx is connected to the input of the codec " _( ?& W4 Y" Q) y
*/5 l6 s- q% u3 T  A3 U
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* N8 U/ g$ f4 g& x5 j3 ?- B1 ?# ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
6 N" P/ W0 T! a0 ZMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ z0 {3 m  ~4 N- |% F' \+ Y8 Y| MCASP_PIN_ACLKX
6 Y, B$ g% U/ ]/ w0 N| MCASP_PIN_AHCLKX
0 Y* q2 h! r, D| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' x9 E, b' q/ V- N9 o9 D! t
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 U1 j( Z- f8 M  z  O| MCASP_TX_CLKFAIL
8 x0 u5 c' \% F& Q5 || MCASP_TX_SYNCERROR
1 c4 q% e% |) e# [' M% ?6 t| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . l' q6 P2 D5 h% E: f
| MCASP_RX_CLKFAIL; B1 M7 t; n7 O6 r; e
| MCASP_RX_SYNCERROR . X1 E# `. ~9 A/ {! L. L
| MCASP_RX_OVERRUN);
+ F- p0 Q; Z. x6 o. c; A% s$ t}
static void I2SDataTxRxActivate(void)# I. m; T1 U/ E7 n
{
* v6 Q) o  H5 Y/* Start the clocks */
& ]' L5 O+ v: O3 K: c) QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 F# H5 O4 p0 D! W' ~McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 o( r# g  i* b( w/ `# Q+ @- jEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 z' F; ~. N; `: R7 A! I
EDMA3_TRIG_MODE_EVENT);' i6 h- t7 b) `/ Q$ Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
. e# f$ w+ f% T  N- n: iEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: v/ N( w) R% l3 F3 T2 P- G& [7 SMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
0 I! D% x# y5 @7 cMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* G' V! t# ~! I4 G- _) v& Ywhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) K0 D8 M: }0 A# ^8 Q1 b0 XMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
: P& A3 D; Y$ P* i- |' g- IMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 N* @6 O8 H  @) l
}

7 |- x0 j, @" I$ ~9 \, Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ z2 S2 ]- X' S8 s* d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-2 16:36 , Processed in 0.042064 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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