MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8345|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1211

积分

金牌会员

Rank: 6Rank: 6

积分
1211
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 `' c' q/ [' z" f+ w4 a
input mcasp_ahclkx,: Y" ]9 u8 r. `: b. J5 b) b! s: z
input mcasp_aclkx,) [8 H+ M. x, D5 H
input axr0,: v9 l7 A/ W, e- D
, o0 J; Y. ]; s% b- B
output mcasp_afsr,& o* O8 h7 i! O2 g% P; c4 q1 B+ [
output mcasp_ahclkr,2 I. A) J  Q& l- u
output mcasp_aclkr,
. T7 f! i0 [6 d7 T- @7 i. I  G# youtput axr1,: G5 I, T: B- `% w; Z5 {
assign mcasp_afsr = mcasp_afsx;! W! `+ L& I, s, Q& `
assign mcasp_aclkr = mcasp_aclkx;5 v9 Y5 v8 k) t; t
assign mcasp_ahclkr = mcasp_ahclkx;6 i' x- c/ |4 S
assign axr1 = axr0;

) d7 U5 f7 |" R% Q" e) ]$ G# L- w8 b, q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ O: M" U/ k8 W7 g& p" d
static void McASPI2SConfigure(void)/ }  J8 G9 W& V  W2 B2 q8 d
{
, z% U) O3 P2 M' ^2 ]: @, kMcASPRxReset(SOC_MCASP_0_CTRL_REGS);5 t7 ~  b" w* O) L: N
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */3 y2 L" d7 z2 f1 P& q1 @8 l
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 U4 |) a. X) F; A7 p8 A
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- O# p6 d6 Y7 R6 ?
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 ^+ b. d  b+ c7 y+ I
MCASP_RX_MODE_DMA);
0 q7 r) f7 }2 S  A' l! l, jMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 m2 D0 p/ p' d# qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; h/ }" c$ j# A$ x8 D# KMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
2 d. N0 J' m+ ?6 y8 \  hMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 [1 w# @- J! H
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
7 {% X3 x, h3 o, |  vMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; k  l1 P; M' Q0 b  G! S7 l# l3 FMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 T3 l# P8 ^& B0 i  O* w
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
0 ]2 t. H& ~5 \+ RMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, F2 m) i  g6 B
0x00, 0xFF);
/* configure the clock for transmitter */
' d% u/ O. ~: @2 |* o7 cMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);/ h. I3 v, f5 W
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + q1 P% ^4 s/ C9 \
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 C6 A5 c. e+ K2 z$ g0x00, 0xFF);
# S5 k  J# R3 `, }! ^) c, \* p2 |
; @; j3 t5 ?5 E" T  L6 `% R( A0 l/* Enable synchronization of RX and TX sections */
! V* Q; `  I+ b0 Q$ jMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 q, o5 K+ ^! d* n
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);9 ^* T5 Z( [4 f/ E8 ]% T# h( [# w- [6 t
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" s4 V5 H" z# ]8 K9 u) u2 C1 s& _
** Set the serializers, Currently only one serializer is set as: \# f/ G& P# M0 Y
** transmitter and one serializer as receiver.7 B' j4 @. `9 m6 k3 p6 @
*/) Q, K9 X6 U* a; f2 e
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
7 x; N( {: b8 G+ G+ v7 l2 uMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*% l) y7 C# ~' {) i" m. S
** Configure the McASP pins
5 k- ~. i" I4 q** Input - Frame Sync, Clock and Serializer Rx
  Q' g% P& p9 T/ }4 M* w** Output - Serializer Tx is connected to the input of the codec
) _. a4 g7 f- ^& x! m*/
; q# @0 p) H: q7 Y/ S& `" L( \# w" eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
1 C" E# y  Q1 h1 }* ]' VMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! f, T  a9 j* G4 y0 t) E) T% Q8 S! yMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
8 Z. D+ K) ^3 ?7 g- I3 x5 [8 J| MCASP_PIN_ACLKX
$ N) {/ g; j8 s& ]) `% J9 \| MCASP_PIN_AHCLKX1 o3 H  g1 t1 `. X5 C& _
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( j% w) Y* K* i* C! D
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR + _# |8 Y, o/ y. S
| MCASP_TX_CLKFAIL ( l& K$ i  w' j$ @" ^
| MCASP_TX_SYNCERROR
4 p. v" N! |* p2 l0 t| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 1 v0 I1 i7 J  ?" v
| MCASP_RX_CLKFAIL; |7 H- B* f& y. O( a( _
| MCASP_RX_SYNCERROR 5 @) e% @3 n# P9 i
| MCASP_RX_OVERRUN);5 l0 T9 F; u6 i6 k5 M6 W
}
static void I2SDataTxRxActivate(void)
2 m8 |/ N, v% Z' Q$ V* P{
3 f' C3 P# }# l2 A# x, w/ D/* Start the clocks */) A+ P, D3 ?  G" X) n
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
% E. H" c" I# IMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */7 S- U% ?8 A5 R8 M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 ]) j+ c& {# B) o( F, i$ \
EDMA3_TRIG_MODE_EVENT);
, N; P" g2 t" e) n! M1 I( J7 |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! A' F7 ?7 k- s. v* w, A
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */; _8 ^5 L$ j) h" ^/ e
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) v8 T9 ^3 p* P$ ~8 [/ n: \
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 a1 x+ n" ?* S, {0 `4 W
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
6 L% I! l* k+ NMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
0 I; L& T& ~& z( f5 lMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);) U5 c6 |: J3 ^7 \1 a
}

. V/ K( a$ w' S. |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

7 D# m2 V: z  D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 15:59 , Processed in 0.044054 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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