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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 O+ z8 a% ~. d& J3 V
input mcasp_ahclkx,% h" E7 w: W6 n+ A  g3 e+ I
input mcasp_aclkx,+ C& M$ Q' `+ s4 s; ]' p3 F
input axr0,+ h/ _5 s4 X8 i7 y& ]
$ e* M/ p$ R! a! u
output mcasp_afsr,8 d1 {& r; u) Q( k- j2 X
output mcasp_ahclkr,0 n) i+ u9 I! g. Z' U! H: ^0 W  s8 o
output mcasp_aclkr,
1 T, b) ~3 `* boutput axr1,
' {0 ^- l8 X0 H% o+ k
assign mcasp_afsr = mcasp_afsx;7 }& W& w- c+ [9 t% O; ?  C
assign mcasp_aclkr = mcasp_aclkx;
, s: w0 p4 ?- x9 j' F+ H0 z0 i) ]assign mcasp_ahclkr = mcasp_ahclkx;
2 j" P3 S# F/ }& }4 \1 kassign axr1 = axr0;

4 [+ u5 i/ f" l
, d/ D. j8 ?4 s% H+ }- @- D
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
) c( M# M- A# V/ B8 M
static void McASPI2SConfigure(void)
# U. J  w% V  c9 [# @4 x{1 l% a& S! z/ S  F
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 U5 ?- X$ Q* J& N% c. v0 ?% eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' E$ h9 }$ X7 mMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);  a9 U& l* K: z$ N( _# O$ O, _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
$ h" z3 ^& ]4 x! X) y. s" xMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; O0 F# l5 i# o0 d* l
MCASP_RX_MODE_DMA);; g5 U: r9 z) l) e
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 U8 B& X% M7 x3 MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' D5 W% h) h; u, n; O; l+ N6 d& FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) T$ \: E! n- W9 q, C' P! [6 M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; v( A+ o8 b  B; N5 z$ eMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
$ g8 G3 {5 e6 K; vMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 d: i: o  Z  `$ z5 C' ]" tMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- z1 [0 P! L7 @: M( ?6 k
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
) _  o8 D2 E7 r2 zMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,* J( l+ J/ q1 A) p1 p6 I
0x00, 0xFF);
/* configure the clock for transmitter */
! X+ t) D" F- N  B& vMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* ?# z5 r  s9 F3 X; w
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! d/ T! p% }) f  F; `$ iMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# u. Y- m2 W. V4 q# g6 b+ \& q! t) T0x00, 0xFF);
; h4 ^4 G: [( W0 l
; N, T* I# o9 B4 u6 X/* Enable synchronization of RX and TX sections */ $ G; i  I& E( |' w/ K: C
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  C) z' _$ E& f5 QMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);3 A2 K; D+ I* E; {9 y4 ]% n+ P& |
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. }( k3 E$ m* G8 @** Set the serializers, Currently only one serializer is set as) b2 I2 _$ G# ~9 I
** transmitter and one serializer as receiver.
( Q/ f3 ^' S. b8 Y*/
* ]6 F4 f& k: \" X* N: }( g; tMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' ?- [8 x% m' B
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*7 ?, c1 v) b+ ~! W$ h3 W, p
** Configure the McASP pins 6 j. ~/ u9 n8 G, @% O
** Input - Frame Sync, Clock and Serializer Rx$ d! [# d6 C# w3 y( x+ x' K! q: a
** Output - Serializer Tx is connected to the input of the codec
" I/ [: t# k# b: G* w9 Q4 O$ v7 ?*/
/ ?2 o" P7 n' i( D, HMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( d7 o) r- V. n) O' hMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
% ~6 C0 Q) Q% Y1 @McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 O$ R: g' I; D& }8 y| MCASP_PIN_ACLKX
2 K7 ?/ T. s$ p| MCASP_PIN_AHCLKX
; ]* M! e4 \) g6 c1 k| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 t. Q+ N/ I; X1 Q3 K' z: z; BMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. H+ N3 z, |. y$ H, Y$ C- W, w| MCASP_TX_CLKFAIL
4 o! W" ^" a( d- N+ c8 [| MCASP_TX_SYNCERROR0 {, y7 ]1 y, f$ u) R2 c
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) x( A* y% w1 e$ D8 T4 g| MCASP_RX_CLKFAIL
! z, H( p" n; i2 q5 u1 ~| MCASP_RX_SYNCERROR % _3 P/ H! V& [; ]( O7 D% i% q) D
| MCASP_RX_OVERRUN);6 O9 K: n2 c/ [
}
static void I2SDataTxRxActivate(void)6 m! p+ w0 t3 t' Y4 H" \( v
{
% q6 }( i5 C% P, `0 B8 V/ [/* Start the clocks */
( T7 [) w+ I; }! hMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
; K: v! [! I* k9 @2 nMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" Y  f; _: Z' W5 `# TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,+ K5 ]1 n$ z7 X9 w
EDMA3_TRIG_MODE_EVENT);% q2 W( y/ o. t! t% L
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, - N8 {) V* K) b- A3 e) x- y
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- u6 n8 k; m, S" o) L0 x! kMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);( S2 s/ L9 Z% a5 s+ H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */: o! Y+ m8 S) k9 U8 E7 o. D/ i
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 d, z  f! `6 d- ]1 }McASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ W2 L) j# z1 ^2 u5 R- j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);$ f. g2 d. d3 n+ n1 ?
}
8 g7 a2 B& Z6 ^: X9 x" b4 \  T
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 P& y1 [3 X" s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-8 04:01 , Processed in 0.046482 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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