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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12445|回复: 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,& |  i* K8 I; m0 {# k
input mcasp_ahclkx,
* d- J0 ?! m  w/ Kinput mcasp_aclkx,8 A" [! w# W/ R3 R! S7 U" d
input axr0,
  ^; b* y  Q( o
, r" B# d% N# f  W) D0 X* Poutput mcasp_afsr,0 A- M5 |0 R# M
output mcasp_ahclkr,
: S* D% ~; ~0 q( Y8 H* ~/ v; soutput mcasp_aclkr,
8 I* x' k) x8 ^% m$ F. [  Zoutput axr1,
! ]- p. a3 ?8 k: Z6 J- U. M6 T
assign mcasp_afsr = mcasp_afsx;) t6 n& i2 s- U  e
assign mcasp_aclkr = mcasp_aclkx;$ H( I: @* Y, B
assign mcasp_ahclkr = mcasp_ahclkx;6 @* m$ p5 |" O4 L( b5 y
assign axr1 = axr0;

* ?; k" x. b) P$ K
$ D& I, e( O) ?. z2 W7 G
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
1 [5 E& ]# B+ I
static void McASPI2SConfigure(void)
* v" |, a: I. s8 B4 m$ k{
: G% ^$ i! ]1 }- R# o' mMcASPRxReset(SOC_MCASP_0_CTRL_REGS);7 g6 @$ P& }) z8 A
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. {+ d, r9 y; O: o& R1 v- r: t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( W8 f, x! Z$ M) M
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 D7 C) R; Z) \/ i! E+ P: F
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
$ A! g8 Q# H6 K  D- o8 [' n3 C8 K+ wMCASP_RX_MODE_DMA);
4 X+ t! c% }% ~# p0 ^, s6 g. BMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 T2 Z+ k9 e& N# ?. fMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
1 M5 t1 Z4 D. M( H! Y; |McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 6 p/ s% G& [; C  s0 T  p8 G" p
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
* o) F, z( f. qMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 e/ ?7 Z# g* K6 x. W/ }, M
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */# J+ d# r  @/ V
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: @! R7 L( i5 p9 \" l
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, |9 N, v0 ~# a% j6 m7 W( fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: q# W: d: K2 i- P* H* [- o
0x00, 0xFF);
/* configure the clock for transmitter */
8 K4 u( k; w' z; N- qMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! ?* x/ B% h- O" p$ o/ C
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
. e, j3 N$ E9 G2 {* _. _: cMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' V, Y9 D: l  L3 I1 m8 b  y: `
0x00, 0xFF);; M7 K. @/ b% p: D0 b
/ F2 t' \. C7 I$ q' L: Y' k
/* Enable synchronization of RX and TX sections */
. W( J  ]# L& E/ YMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. Y; f3 t8 P  K+ R6 h2 gMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
* M- e* ^4 {& b. c- |. `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*( X; C6 M; m7 N. E' {1 B+ L
** Set the serializers, Currently only one serializer is set as  q$ V. m; y2 O
** transmitter and one serializer as receiver./ T/ O- U9 Q6 q4 X( L: H  h& B! Z
*/' ]' Y+ S  }  J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 H" j' |+ a% i7 f
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: ~" b) u# S7 T  e6 k# f0 K** Configure the McASP pins
3 Y' u* y2 t! X5 X. P** Input - Frame Sync, Clock and Serializer Rx
0 }8 W9 _, d' V& ?** Output - Serializer Tx is connected to the input of the codec
1 M4 [. A. Q! I' R8 k) f: s*/
, A; A. d' O; @; N/ eMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, j% Y8 n# @9 u) h' q1 J) g
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: }/ e2 v. z- k6 g% _4 p/ \, oMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- N1 F6 [! n6 O2 o. Q/ Y  U| MCASP_PIN_ACLKX
/ m% C% u& `9 p6 r0 p/ U& X  Q" _| MCASP_PIN_AHCLKX  ^# o  ~- ~5 S+ L. p8 d5 @$ H
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 c; I9 V7 r5 D- y5 B  b+ N* z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
/ P5 |4 R, {# X' u| MCASP_TX_CLKFAIL & L& ^2 q4 b% K& ?3 {7 w7 Y  w8 K
| MCASP_TX_SYNCERROR
: M$ S! X6 t0 b/ J* A4 g5 ^| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 q( J, s" T6 V/ G
| MCASP_RX_CLKFAIL
* N1 w. D- R$ v| MCASP_RX_SYNCERROR & P% X3 Q- ]/ F- P
| MCASP_RX_OVERRUN);, b% E1 K. A6 L  e% Q( E' j
}
static void I2SDataTxRxActivate(void)- S4 E+ d) J4 c$ t) }
{4 R" R7 \1 X- Z- o  ~
/* Start the clocks */
5 L8 S. y2 G4 IMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);2 L$ N$ J4 ^* O  C/ h6 m
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */6 z; V: ^: M' @
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
0 k& a, X9 c2 g8 l) IEDMA3_TRIG_MODE_EVENT);
4 G6 \6 T8 t: ?& j' wEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
/ I6 V: O: E" K3 L* L3 r  |7 b4 JEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */! X# b0 h  z0 W$ B* ]+ Z6 H" F
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% t* P6 I/ l: K* k/ ?% N3 H% @! K
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 u4 `. o/ J7 C! X3 k& U- ?
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */  o  g0 h5 Y) O$ n: ]: i
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) p  I+ s6 V8 `+ i! y3 e- M+ j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 T( v% ?. p# N
}
* k5 ]$ P0 j  w, c6 g
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
/ x$ H* [. C4 h- l! d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-9 09:47 , Processed in 0.041083 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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