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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8958|回复: 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,+ h4 A8 N$ Q- p- c9 B* ]
input mcasp_ahclkx," o; i' {' t0 i/ N; I& T
input mcasp_aclkx,
( t; @. Q- @+ f2 t; ~input axr0,
, ]! @# V6 _' q5 v7 y) ]
; G. }- D3 ?. a, a: F( F- n8 coutput mcasp_afsr,
3 s: O6 F) E+ X" V+ j& goutput mcasp_ahclkr,/ m, S' s" l; r) m" d
output mcasp_aclkr,' R- c" q$ R7 R" u. r
output axr1,7 O$ _3 g+ n) f# N4 @. O
assign mcasp_afsr = mcasp_afsx;
' W- h) n, R. T; S& M7 O1 kassign mcasp_aclkr = mcasp_aclkx;
7 u" u$ t$ B" I; d: ~9 Cassign mcasp_ahclkr = mcasp_ahclkx;
7 n9 s8 Z' X, U4 Tassign axr1 = axr0;

% n7 M5 f' K% O6 M* ]( ]4 Y6 _/ w2 o# Q! s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# A5 @5 I9 n3 x/ H- Y3 z
static void McASPI2SConfigure(void)
% j/ d7 v8 x$ {) Q3 L9 r{, g$ i$ l  r$ Z9 u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  Q" s$ m+ l. _/ t: k
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- Y! f* ^/ M3 o( r+ E0 y! Y) ~. {
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% c1 t* J- J8 j  `$ uMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: L* z3 B, Z  {' U% @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
* ]( _' H, A6 A* G$ b& Q. zMCASP_RX_MODE_DMA);1 I% e1 X6 ~) g% k& j2 S% d
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# I7 z+ }6 Y, j6 LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */5 h" T# C/ _5 j) _  b) j6 u
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : G$ U7 S- U. N* S0 U/ C) K
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! A1 ]0 F( G. P; o. y7 i6 B4 G/ u
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
' q; z* m! @% ~" _MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& k7 _% _. y9 |: y9 u7 dMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* ?# p+ k% l+ ~4 o/ T
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) K. Y# g( i4 {2 ]! @- H: k
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,9 j1 ~* s; e0 L+ R' \3 b
0x00, 0xFF);
/* configure the clock for transmitter */
2 H) s, I' t' F/ M% JMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 A8 @- V9 b4 a% |, j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); & S: V: ^$ }2 {
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. T8 B! J1 {9 d* t; y4 z  W0x00, 0xFF);
5 D2 [0 D  N. k- @4 T: c7 U6 `! p/ z' Q
/* Enable synchronization of RX and TX sections */
* E: b$ V  c7 L* r, UMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% r1 W1 c8 t8 \8 |6 m
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
! f# t4 R. K5 l; R" yMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** f  _5 P; x- I- D$ u7 X: A
** Set the serializers, Currently only one serializer is set as- J1 f! x3 u1 n: l5 b7 v2 {
** transmitter and one serializer as receiver.+ T1 \' B/ Y1 a0 j. H! v" o
*/9 W, q5 D& o0 _4 D! z6 z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 |" {" E* W# dMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*; E# Q9 K1 i' @% N: t# E
** Configure the McASP pins
- s' \3 ]  j! j% Q/ O7 E$ k** Input - Frame Sync, Clock and Serializer Rx4 G  T* ^& [, |9 t; \6 l9 i
** Output - Serializer Tx is connected to the input of the codec $ n1 V6 `  ^7 t* P
*/
  `2 I2 u, y  f* q  hMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" h& V; T9 c/ t7 v- K: j; y
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
: V% W# k  G4 a  |; Y  R7 Q0 DMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
( Y' x' I. M1 a8 ]6 ^| MCASP_PIN_ACLKX$ S2 H. U6 f; a1 v0 }
| MCASP_PIN_AHCLKX( b# e+ h# j' H( t% w/ V& H) L
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */) g8 W$ H4 J' |$ i+ s2 t* p
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR - a! x+ j, p/ l  J/ ~- w9 k  F
| MCASP_TX_CLKFAIL
% J$ ?# ?6 ~7 C| MCASP_TX_SYNCERROR3 `4 t: D) o: W0 L
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR / P6 F/ Y3 s! T* T3 Y% X
| MCASP_RX_CLKFAIL1 P' _1 `! W. _9 F1 d1 Q/ S6 p+ ~
| MCASP_RX_SYNCERROR
: G$ r3 U& u2 P0 @| MCASP_RX_OVERRUN);
9 a0 o# a# o' s- ?8 B# U2 W) F}
static void I2SDataTxRxActivate(void)
6 w& L- p  h5 H# Q{8 ^- r, T$ s5 v: x) ]6 w5 f
/* Start the clocks */
; _5 }: S+ s" A* c/ x: qMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);" d5 t3 U6 Q9 \- a8 w# u
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 L  @- I% @( [1 B; O3 y% |2 S: T4 Q) zEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ M; H9 t2 J2 [5 O( fEDMA3_TRIG_MODE_EVENT);
2 n& w  x+ k! q/ m! hEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, # U8 Q/ i. s& d  j3 s6 S% N' D" R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% E" ?% h& I1 DMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);" B- Y* w* ^* e, F2 H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# F. _- e$ M5 K, w% P! ]; @while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */" E: `/ }( i* k1 I2 s
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);) u7 x( Y$ [7 f' l
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# s! B0 m2 s" P, \}
; U: V/ W5 b  [, u. m. d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ n. `, A; T/ y' O. D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-11 16:36 , Processed in 0.038071 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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