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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
! k# p$ x6 n, N, v$ L+ |7 Q+ `input mcasp_ahclkx,8 G9 f) h. J, C% N2 f
input mcasp_aclkx,
6 a  M) n, g3 z( zinput axr0,2 Q) W) N. S6 g/ X9 K2 W
+ i3 u! Y' u, v( ?8 N3 Q' u
output mcasp_afsr,
: P! a8 O- c) l0 r9 g6 @output mcasp_ahclkr,
" y( \; }' S( ?) t/ J& ioutput mcasp_aclkr,
) S4 u5 C& h. \9 s% _2 Y! Z7 |. ioutput axr1,
# [3 k, F7 Y6 h5 b) ?2 z
assign mcasp_afsr = mcasp_afsx;  Y9 a6 {: q3 L' b* z6 ]( ^
assign mcasp_aclkr = mcasp_aclkx;
0 M+ U  T6 B6 [, N+ cassign mcasp_ahclkr = mcasp_ahclkx;
6 z9 g/ y; _6 C# ~8 xassign axr1 = axr0;

' u% q3 l; a/ p4 c* g1 c$ E4 q0 P- D- Z# }2 h$ z/ |0 _5 ?' f3 K
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

" J$ ]  n: N2 t4 A
static void McASPI2SConfigure(void)" V. j, w- `& }/ A
{
8 r* q9 o0 g% l* pMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
$ d& \0 I- y0 FMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */& |& j5 a+ c  X+ Z# Z* I0 ]% g1 u
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 U4 ^2 }% M; A$ X7 ?; GMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */2 @7 M4 ~- j% ]+ [9 i1 e; Z* P
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( D2 W7 A  P& v8 `- cMCASP_RX_MODE_DMA);
. Y3 G  F9 y* K$ o) T6 C& e& RMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- G% Y9 x) w$ b- u: e/ A9 W% Y5 {% F! VMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" i! f  c( x' qMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
' L5 n7 H; H4 a1 N7 rMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
. U$ W# g! L* r# _' a# JMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,   k2 {  ~9 Y/ Q/ A$ I- l
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */: s. L- C. j! b- e9 q7 m: m
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* R# p+ \1 @6 `, k8 Q0 q: v  ^2 L" X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
6 |2 V9 ?8 ]) X2 H. PMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 ^+ O1 D1 L. G9 E* }7 z
0x00, 0xFF);
/* configure the clock for transmitter */4 {4 v" P, {, \/ G
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" ]3 j9 W( l& m
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 z8 x% e7 b/ N5 n/ W9 GMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,* Z8 z# Z7 `* ]$ S4 g8 ]
0x00, 0xFF);
; T0 H9 T. w! j* `& h" U
) p/ c) @" Y3 y4 o8 r3 b/ O/* Enable synchronization of RX and TX sections */
, _+ m/ C$ R4 f" F* \McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */. |2 P1 i0 V3 n5 |3 V' @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);4 f1 g4 D- I2 A0 L# R2 C" H& o3 m. j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*) |. S* x- M  A+ G- R9 d! W7 x
** Set the serializers, Currently only one serializer is set as7 G4 u1 C0 T# u2 F. W
** transmitter and one serializer as receiver.4 B9 u- Y7 ?9 S$ J
*/
! m) }- S# h, U  wMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# O" G, x# n! y- }
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
. u! m  X$ o+ Y# E2 H6 K& F** Configure the McASP pins
; s; v& p  H9 g8 q3 o** Input - Frame Sync, Clock and Serializer Rx/ F! Z4 _9 D: f4 ?) \7 p& e
** Output - Serializer Tx is connected to the input of the codec 6 R6 v. j0 b; t/ O/ y1 K& g+ q
*// d3 {% V2 c( A1 W1 g7 m
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);5 x' T& g! c9 |2 h2 A* o/ O
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));5 }' _  V/ E! w; j, v4 [
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# b) o% e. _. Q9 g: q) p: U$ |. Z
| MCASP_PIN_ACLKX
# S$ w- a- z$ W4 G. y" H| MCASP_PIN_AHCLKX8 z5 G' V0 M1 h6 i
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */. R3 [% p: n( o0 w" y/ H- O
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 9 |# L- Z, }: F( \, E( m
| MCASP_TX_CLKFAIL
$ r, \; k4 E# M$ k2 z| MCASP_TX_SYNCERROR; S. E7 c! h1 k7 M9 @; \' }3 Q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
3 L9 r! \& S' R' |" X| MCASP_RX_CLKFAIL
/ ]) Q; n: @) A4 o" o2 \' D& N| MCASP_RX_SYNCERROR 1 M9 d* O) Q$ V
| MCASP_RX_OVERRUN);
. H7 m5 G" l8 X) o+ {6 a, m4 ~: G}
static void I2SDataTxRxActivate(void)3 V3 D- w; m# o, I
{
! r) ~  W) k, C5 s8 S  p7 q: t/* Start the clocks */
# e. e$ ?2 v& r4 jMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. _- a7 N% w1 }0 Y0 x" AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: b) [7 t. Z' T+ R  f1 D# X- O& z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 ]& P( j/ w  x) [' {) q1 VEDMA3_TRIG_MODE_EVENT);
9 @9 d( X* f" ZEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; X% x" p) _7 Y3 z) a. X9 EEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) G: H$ h" w- M2 {( |McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
. @0 A( k6 Z. I( k& v0 LMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  `8 @& d6 V3 E- ^* p- y' C! Y) awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. W8 \5 ?! x4 D7 S; k* vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 E. A* `" B# g% u# U/ M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 Y% Z0 s( Z2 e
}

6 y0 }0 q5 ?' J+ s
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
# P2 {' h, L9 V( I$ O* {' c2 |" X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-28 03:49 , Processed in 0.042541 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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