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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12063|回复: 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,
( O4 i! G9 G3 p. T3 L" @input mcasp_ahclkx,
5 J5 |: b' i$ ]& K2 g% k! g8 a/ yinput mcasp_aclkx,
. X4 a5 I* D* Z5 C; kinput axr0,; S* E- \/ f8 Z- i

# D' S1 S  m+ T4 f8 [( _& v/ {output mcasp_afsr,( e% w5 t7 k- u2 I& F5 h
output mcasp_ahclkr,
. i0 r7 u# X) Soutput mcasp_aclkr,2 V2 M# _+ p/ i7 V: n
output axr1,
/ Q$ x8 G+ q: o1 [! k6 q1 D
assign mcasp_afsr = mcasp_afsx;- x3 \' ~) z* l2 `
assign mcasp_aclkr = mcasp_aclkx;
) s! z* ^+ m& v- l! L& dassign mcasp_ahclkr = mcasp_ahclkx;
% V% ?2 e1 G6 u' A" x) [. hassign axr1 = axr0;
; z/ d2 N! x# \& @8 b& d

! r( B! J$ }; P4 |' }8 I" K2 M3 W- z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

/ m" E- p9 @* {. q+ X* Q! \+ E
static void McASPI2SConfigure(void)/ u8 m6 r9 d6 Q8 w4 X+ r. B
{4 ?; {# O9 V8 f  ^$ j/ D$ u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
, g9 D+ B  N( B; w; Z5 eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* K2 |% m- V& m& O# `! H( E7 tMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ v/ F  k' q, B# f; r
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# r2 b* _1 t! MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 J! t; u/ @1 K3 x
MCASP_RX_MODE_DMA);
6 r( B* x$ T# ~4 Y, D, h8 A7 bMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,4 q9 V2 g/ r& Q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
0 R  G5 N+ R& K9 _, R8 ZMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, , Q5 ?2 d- Y! P8 [2 |. a( i/ x0 [
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
7 _" c4 ]3 Y* XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 y5 O. W) y+ t( Z0 P8 hMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 u+ t7 I2 G, \McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ ?; M- S+ O4 o8 P
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
- D4 h8 t/ H5 a% M8 a* `5 {. d/ d' xMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
4 Z% Z8 X. L* [  w( Y/ F( a1 K0x00, 0xFF);
/* configure the clock for transmitter */$ g' j* b0 U, Y- Y; t+ q
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
) r6 d6 M  U# f! j- u  e* `& @McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
, a; @6 j# x4 W/ u! D* n+ @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
$ t# x2 V3 i4 A6 y1 v4 q0x00, 0xFF);+ U- @& y, v: Q7 c; U
0 l# Y; R8 i4 D5 u
/* Enable synchronization of RX and TX sections */
2 e! p/ J7 N+ PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 F2 s* _& p. I# M! K# \' n9 r7 z5 [McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ }* y% S- j% B" f
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*: ?& h- I1 R) B; R/ X" b9 p6 m! e
** Set the serializers, Currently only one serializer is set as0 B6 ?( [, A9 R- M% E" R) l
** transmitter and one serializer as receiver.2 l& f( S5 C# T4 A
*/
/ n) d' Y0 W0 a4 [% s2 j* h* KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% S1 [" G: X  s# d) E) R
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' u* T" p$ ?0 j% y
** Configure the McASP pins 6 G+ D1 S% E1 G8 d* Z
** Input - Frame Sync, Clock and Serializer Rx% q7 n' k. l) H: z! V7 S
** Output - Serializer Tx is connected to the input of the codec
) F' E# [# B( L& O- M  P*/( s7 Y' @$ @$ m) u7 |5 H
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);* v. U. D0 c) o4 [( X
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ s7 X9 o/ A9 d% J- B
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' D$ V& U& F. |8 ?# t# G
| MCASP_PIN_ACLKX5 i6 R0 z3 q) q+ H# y" P) I' T6 I
| MCASP_PIN_AHCLKX% y5 B/ C" E5 u; b+ L$ z
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& e8 _- P0 |5 rMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 f7 F6 v2 C, k8 w( k- K
| MCASP_TX_CLKFAIL
0 w# l. }/ T- G! n/ i| MCASP_TX_SYNCERROR
! o) v4 R, \) |8 A3 ~4 L# {! P| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! q# _3 ], b: i$ Y7 [
| MCASP_RX_CLKFAIL
8 T6 b! W& n$ S! U" v; J+ f! }; b| MCASP_RX_SYNCERROR
: Z1 s, i  R; q% w- r. T| MCASP_RX_OVERRUN);
  Y" j1 D$ R$ q- A; K}
static void I2SDataTxRxActivate(void)
! G% H/ f+ v  O* |# |( h{
2 I5 |# ~8 ?" {( x. k/* Start the clocks */  t' q5 w2 u0 r' r1 o: A: e
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% S0 G) p/ D# l
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
3 Q" S& e: R$ g/ M9 R! QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,; ^& o* v8 n2 u% B9 b! a) F
EDMA3_TRIG_MODE_EVENT);, q$ Y. K! U8 g! R* d
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; x% ?$ p) f9 h& s% a2 sEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 z& M" o$ X* ?McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# V: U& f+ V  T) g# ^, z
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */1 q6 k# c& n. n& x
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
' g; W* m' L( ?3 `* ], N3 t! ?McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 K! ~0 V2 |! `- f
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);1 L4 U6 Z# U. Z& A5 K2 k
}
8 g* i  w. ?% A4 f! }, D# g' o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 b, s/ ~$ L) f" t2 |
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-26 06:51 , Processed in 0.042758 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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