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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10870|回复: 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," B4 L) W$ a) b  p- u$ F2 Z8 N, p
input mcasp_ahclkx,
+ s- R0 s7 ^' n7 winput mcasp_aclkx,
. v/ b+ J0 r  B8 k3 ?input axr0,
3 t+ _: b5 \8 Z* H8 _, ]6 T9 F1 _$ s& c% O& o+ U  D6 z0 d
output mcasp_afsr,
8 H& \7 q9 X/ P' ^output mcasp_ahclkr,
; d: a) Q* Z2 u# O5 w: c; Y# \output mcasp_aclkr,
+ [! |; \! `6 z7 c; [! i4 x9 u3 j' ^output axr1,3 k/ C" O( @. ?0 p" c+ F4 q
assign mcasp_afsr = mcasp_afsx;& q4 F& v0 T! g: r) c$ Y
assign mcasp_aclkr = mcasp_aclkx;
% t7 B1 i) A7 y0 T. k" u' v+ a. yassign mcasp_ahclkr = mcasp_ahclkx;2 m" H! {4 R+ g: A; r' d; f* R
assign axr1 = axr0;

, T) n0 @6 b% N$ |# C
: }+ p7 E4 J) ?4 R4 P9 V$ P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

2 s" S( F; K7 P' Q2 o  U
static void McASPI2SConfigure(void)
" X; P3 u, T' I3 C; {! @{
' @, T( ^2 U7 @McASPRxReset(SOC_MCASP_0_CTRL_REGS);* K; {/ R# G$ N7 V, }& e
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 `+ h1 D" p4 G* n4 y; S3 o! ]McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);2 g2 n9 a! g) R
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 a7 x9 b7 K5 f1 O% V$ i/ F: I, P0 v. GMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," K  X3 _, ?. _
MCASP_RX_MODE_DMA);7 l8 X. b* h! r, Z  W4 {  K2 ^) u
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 v3 L) [) z7 F8 RMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */1 k/ z/ D) Q0 i+ K, h8 i
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 _& X# N  [% Z: G6 CMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);/ T0 G7 Y* i3 `& F  K' H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 7 i% U; `7 p" [, S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, O9 F$ s3 r' \8 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
4 W" m) D( \* L+ F* |0 X, h% z3 PMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 8 G% \8 k0 V& F' y
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,. v; @, w' H2 d6 K/ w& I
0x00, 0xFF);
/* configure the clock for transmitter */9 u- t% x- ?; m; t: K/ |
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' \- m# O" `; \$ l! i+ ]3 e6 w
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); / m, J. F! b$ |5 H# ?) ^
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,, Y4 Z- U6 k6 r/ O
0x00, 0xFF);
: |) W' B  E# r, }! Y- j) @! B( s5 |2 {3 h/ s9 O* f
/* Enable synchronization of RX and TX sections */ . r" y" [, k/ e# _' I: |# s
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! T6 V( P4 I" S
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
  \8 u0 s) [; l% R$ d8 \. p9 oMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
% S! g& f" C) Q** Set the serializers, Currently only one serializer is set as
# A! \" a) E2 h+ @** transmitter and one serializer as receiver.$ P3 J8 N6 |  T' t- z
*/
* \1 a# r& M- x8 ^( `: aMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
. B% B8 ?' X0 E5 [2 a3 W+ ]  S; r( sMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 [. H1 m- X2 h/ W: }( C
** Configure the McASP pins
% m2 e0 w) [, C% S& [7 R** Input - Frame Sync, Clock and Serializer Rx2 t! z; D( H5 g. p0 ]
** Output - Serializer Tx is connected to the input of the codec 0 s8 a5 ^+ k4 l4 v9 y' Y5 O3 m: R
*/' C7 ?. ~+ V+ Z7 f
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ M5 M- M2 d) \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ S9 `. m$ ^, t* y- U3 J
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% e) u9 D. X, H
| MCASP_PIN_ACLKX& _6 D/ I! D, n' C
| MCASP_PIN_AHCLKX
4 `  z8 c" e" a+ h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- ?+ M( b5 W, K8 Z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ R- H* f( z% M3 M0 u, L. u| MCASP_TX_CLKFAIL
7 o0 B: w. N" t  v$ Q) L| MCASP_TX_SYNCERROR$ {% ~# r& M: g3 U# E
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 3 A! |* l8 `0 M* J. l( n: M9 K5 d
| MCASP_RX_CLKFAIL3 y' V3 m1 y4 b; h0 B0 y/ g/ b9 A' ^
| MCASP_RX_SYNCERROR
& ^, _  V' m1 E: `% c| MCASP_RX_OVERRUN);; W# P: _7 H9 R, Q3 }( q
}
static void I2SDataTxRxActivate(void)  `) p. L, O8 ]' ~& S
{
# @. Y* b: m& L, ], s; j/ L/* Start the clocks */
3 r4 s+ }( }1 }4 ?  @1 V" VMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 H3 H% v  O( M* g/ b  q
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 h* B; C, K) W% r: x
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, w3 d- E+ X4 r/ u! j$ n$ wEDMA3_TRIG_MODE_EVENT);3 r4 n4 `. k; o1 v+ N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ q- A  }9 T5 j5 A- f& XEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% X7 r( m) J- W* H" s- h5 a2 RMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);5 p0 T3 Z# l+ _8 H! ?% R" G4 l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 D* T7 O& j" M4 ^' ^2 s
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* ^( c  z% c/ w7 t: y) tMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);; r) ^" n5 h. L; |5 B* d: }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. A2 X+ q" \0 a$ H9 Z) B
}

4 ~/ a' j8 i. Q1 |2 x* v
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! @) Y1 m/ n$ [, k# l& t7 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-17 22:42 , Processed in 0.038956 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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