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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11561|回复: 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,
5 C+ {2 Z5 T3 H8 y! k: m/ }input mcasp_ahclkx,1 c- U; ?* s( h+ n/ u2 m
input mcasp_aclkx,/ N$ h( w+ A) V5 S- w3 f
input axr0,# n9 l0 l6 `; X5 d. C/ ^1 U

. X4 P9 r2 P4 _. g4 r* zoutput mcasp_afsr,
5 U2 _& S4 c$ {output mcasp_ahclkr,
8 C2 b# _: [& J7 ]/ s( z. v6 koutput mcasp_aclkr,; J. _9 f4 P6 ]; S/ L
output axr1,, E3 ?# s) F; Z7 ^4 I
assign mcasp_afsr = mcasp_afsx;9 E- v9 y6 `# j+ ?, j9 J+ m+ I9 @
assign mcasp_aclkr = mcasp_aclkx;
$ j; s8 A( h$ @; `. }  X" P& `0 X3 Vassign mcasp_ahclkr = mcasp_ahclkx;8 w  ?3 B6 a6 [0 M3 j
assign axr1 = axr0;

, S* M7 p. M# q7 ^) |9 w+ s6 t: o' L4 t% \$ D6 ?; f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, H' r5 T& N1 t+ D
static void McASPI2SConfigure(void). l3 K7 M; t+ g. \" i' M3 y2 r
{
' O. A# D* R! }& |1 ]) Z3 p+ t0 DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);/ g) n5 i  r+ ?, ^9 b3 Q, L2 `
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
! g" y& d$ t- m/ OMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: G$ V$ H: H* d& x- [2 e! XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
# F$ ^3 g; \' j8 b( r% KMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; R6 q  Q* \3 l0 r
MCASP_RX_MODE_DMA);
: V9 O8 z, K; R  E; G; n( M. v' PMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* k5 l8 d, @1 i1 ^% n" K$ S
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */' [1 [" g/ e9 o5 g+ z
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  O; G# V* i* \7 i7 [/ a, RMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 `6 ]7 s5 T/ ]; M3 OMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! ^& b) p3 |) Z- J' SMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
  E7 Z* B) g8 j/ D& vMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ ]. v4 O) l3 C* |' L/ t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   z! E0 K5 r8 q- p3 H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- l4 {# M" C# S" c" W7 ^
0x00, 0xFF);
/* configure the clock for transmitter */
6 h) I+ k1 t4 Q: }( YMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
5 f% f- L+ u: `% B, T. lMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! D7 U5 a4 d- P# ~# [. k5 r- |0 NMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,0 H7 r+ X% y, ~$ l, \2 x: e' V3 l8 |
0x00, 0xFF);* r8 g9 O2 M9 T: u" J. ~( q

3 ?+ L. p8 g8 o4 u6 t: z/* Enable synchronization of RX and TX sections */
' ~1 R/ A9 ?4 {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */- v2 m0 u$ ~9 s% q* I4 B2 h
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 v6 d# y( b4 [  @McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 p; n/ p7 |4 H" b" l/ ]** Set the serializers, Currently only one serializer is set as% g2 }$ S& v# _. u8 Q
** transmitter and one serializer as receiver.
, |" ]; w- ^$ p) P*/
, k, i3 V# n, g/ Z1 F. l: x2 {0 dMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
" [6 Z3 o4 P* W' \2 V" ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*' i5 F! k! q% P4 _  }
** Configure the McASP pins 5 d$ K5 P# \" t; u; r
** Input - Frame Sync, Clock and Serializer Rx
# n! H4 z0 S7 T8 \  e8 n** Output - Serializer Tx is connected to the input of the codec
+ x) v- x8 i/ ?' y3 k*/
9 s; t+ [4 ^$ w+ ^( A1 s* |5 TMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 f: W! C+ K8 t: o4 l$ E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));4 x! W) @6 D5 W/ Q" Q& G3 ?7 C* q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX% O) Z3 Y7 i" H& _6 H* ?
| MCASP_PIN_ACLKX
8 K/ j  X' f0 u1 k) H, H| MCASP_PIN_AHCLKX( u3 s3 ]( H7 a" H/ C$ q) t0 P
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! g: m$ K+ m4 Q  M7 U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 8 H8 s- G0 C6 @" u8 U0 p2 g) H) J
| MCASP_TX_CLKFAIL
& ^& V2 f5 G' G3 R' H+ s| MCASP_TX_SYNCERROR! {$ k2 y! K( \1 d% {
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 6 r' a+ p8 R0 N3 M( a1 a/ B
| MCASP_RX_CLKFAIL
/ Q" Q. o2 Z0 g, A! H% T| MCASP_RX_SYNCERROR
) N9 r+ |% a% y+ j' t| MCASP_RX_OVERRUN);  G, W1 q. H8 Z7 a
}
static void I2SDataTxRxActivate(void)
: g; I6 Y% b0 ]/ j2 s( D{
$ X2 I- N1 |* O# j/* Start the clocks */3 w; Y: o1 Q+ m. a+ |* L( t* y  Z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 q0 k. U3 J0 G9 ~
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */0 ]/ u! o1 j6 ^$ K+ _1 Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
, i" e/ h6 r) y3 vEDMA3_TRIG_MODE_EVENT);
+ U: N; Y: u: D9 {: b' bEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 8 F$ u! V3 n0 I2 Y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( S! T0 N: z& j* Z; I3 O4 l8 {
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* e, c* A7 g3 a
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, Y' B* E5 a4 v6 f) B
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 R) A9 j( ^4 D7 C+ S% h; s, R
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" l- ]- v2 p# l: SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 d& O8 S) R" n3 o( t* [, m5 S
}
8 r  K6 j' S& f* ^: P; b/ L; B4 c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

+ Y0 E" u; ^6 }3 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-9 13:37 , Processed in 0.043516 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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