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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,6 T) i4 M8 j! V
input mcasp_ahclkx,
/ `7 Q3 K6 N7 g+ ]/ M0 K. T3 cinput mcasp_aclkx,& [1 i) E$ ~- Y& u1 ?# D0 B. u
input axr0,
) r. r4 M2 v$ H$ T$ y& G4 [' e# ^( d9 j
" {3 p! s& ^+ E. l" V* ~7 qoutput mcasp_afsr,
  _) B  p% P( c) ^0 Zoutput mcasp_ahclkr,
( C3 r  T% {7 n- \4 c, G: Q& ^: h5 o" [. goutput mcasp_aclkr,; @! K  W! ?" C* i# `
output axr1,
/ V, \6 ~+ k, i- F' j  v9 i
assign mcasp_afsr = mcasp_afsx;
4 C- h: M: N2 H* \" W7 c4 gassign mcasp_aclkr = mcasp_aclkx;1 |1 s  E5 l' G" `$ e8 K& L+ c4 W
assign mcasp_ahclkr = mcasp_ahclkx;) U5 ?" s  F. y2 _5 `9 l- J
assign axr1 = axr0;

7 d1 j4 `# q$ y! F6 n
( E4 h# d; T' t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
, N9 k" l& I0 n- y- o0 D" O. {
static void McASPI2SConfigure(void)! U. t0 R# V8 g$ v% m) k5 Q
{/ j* }- s; i5 A  I
McASPRxReset(SOC_MCASP_0_CTRL_REGS);6 m, v4 x# o# S$ m( N; L
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
8 J' R  H1 G2 J- N' gMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 a+ A! l. J$ M: f  }2 ~
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */% @/ C' a% R# O5 f& n
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,5 f7 h# T" x" O+ `
MCASP_RX_MODE_DMA);
1 y/ p+ v0 r& J8 JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* l  U( B0 L: t
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& \! ^; H6 D9 |/ Y* o' \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / y* n0 Q3 D* P' M
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ K. ^# B( b, {8 k* G8 s! P
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, : E& G8 ]1 g- a/ P
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
8 D# ~4 r1 f5 t! ?$ R, g+ M; lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
0 {! f1 y& S0 s) A1 a# I8 K3 N  sMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( ]/ c# C1 s* e' }
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. }$ z! F% q# r( c0x00, 0xFF);
/* configure the clock for transmitter */! J" A8 H  a3 F5 T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
- F- N! {( k0 V4 g0 g) MMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 D/ }: v( M' G8 K# e; l9 rMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,1 k# Q8 Q/ r3 Y& U  ~  z1 I
0x00, 0xFF);; b) o2 A8 j) K0 O' j) h

( m2 v0 V4 S0 p( y+ K/* Enable synchronization of RX and TX sections */
/ I1 r% r1 D5 vMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" c1 ?* |) z! l8 [- }* XMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* C% W+ |  k5 c3 z! W4 j
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*! u. T8 ^5 r  T
** Set the serializers, Currently only one serializer is set as
, {- y2 S  D7 R8 k$ n# X9 i# u2 Q! Y** transmitter and one serializer as receiver.
9 D8 U! a/ v! C9 f, X2 ^*/; g" G& X/ Z7 F- r: X# ?  V/ |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' p/ W& @/ c( p
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*3 d8 k1 @0 Y- d% j
** Configure the McASP pins 0 B. J8 [  Z# y$ D, u' o
** Input - Frame Sync, Clock and Serializer Rx
: O9 d& {; `8 n1 N; i7 a+ \** Output - Serializer Tx is connected to the input of the codec - m$ _5 R* V- X
*/
: {0 i7 E' s0 z7 \McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( W& t7 D1 l7 f8 X# Z) M6 qMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
1 Q+ ]% Q* j, |McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
0 N0 C! f4 K- i1 R% J# x2 y: r| MCASP_PIN_ACLKX9 O2 k) t5 z  O5 v  Y7 e
| MCASP_PIN_AHCLKX
' i" r+ l/ T, q3 }| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
2 K  t. n- R/ O9 y0 q7 D+ IMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( S! }; ^) k+ W$ w
| MCASP_TX_CLKFAIL
- O1 }- {, d; W- o) l" J6 \' Z4 C| MCASP_TX_SYNCERROR* _8 C- P/ N9 e4 m
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / ?+ E3 c; `5 E: x
| MCASP_RX_CLKFAIL; o2 m3 y/ Q; T8 H3 S
| MCASP_RX_SYNCERROR $ B" H- _3 Q  R. B# e  n0 Q
| MCASP_RX_OVERRUN);/ C8 W  A$ \/ b2 a5 v, i
}
static void I2SDataTxRxActivate(void)
* Q4 w) e6 R$ w% F{9 j' E2 u  a( `, M+ y% s+ z3 x
/* Start the clocks */
6 \# C' Q9 }4 p% k9 j8 ]# QMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 u* ~3 U0 [+ ]: z
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
6 R* ?+ Y% w, Y; xEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
8 ?, P8 t3 G' B/ `# Y1 uEDMA3_TRIG_MODE_EVENT);
+ z* q4 ?" |, ]# d1 C- C) ^1 _7 D9 oEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ K8 o* `" \/ S3 j1 c/ bEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ E4 q* ?+ i5 [2 l+ d! B- T" |3 W
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
- |; f  r: w# C1 x" KMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
4 A4 f: Y. M% A( ?while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
8 w3 f8 q& u/ R7 z! @' W1 V3 iMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! n' L8 P1 f" l# c2 C4 _  M) JMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( Z0 W$ Z$ T. B' v0 v! I}
# D4 V; q0 E9 g& h; T: }* |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  F: A+ I! t- P- U- e% Z% K+ q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 12:39 , Processed in 0.039834 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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