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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,1 l4 |% Z2 I& A+ S
input mcasp_ahclkx,( h- i. T5 h, d3 |' |
input mcasp_aclkx,
5 [+ j- g/ N8 Q  I$ K) ^input axr0,5 F% n0 ?6 p! M" q$ D$ E. T) C
7 \4 ^# R, \/ G, R8 S
output mcasp_afsr,5 @4 @6 v! t3 K. K5 w
output mcasp_ahclkr,
7 N8 G/ L1 \0 b! T( g8 k' Koutput mcasp_aclkr,
. T( k& F, b1 l( x/ T& d4 Boutput axr1,
: Z  k% z4 g- @
assign mcasp_afsr = mcasp_afsx;& x6 k- U6 s$ T
assign mcasp_aclkr = mcasp_aclkx;
6 C, u9 v' T( }5 I4 G4 J( Z2 q, j6 Wassign mcasp_ahclkr = mcasp_ahclkx;* o% r1 ~: k* _  P# w4 a% D
assign axr1 = axr0;

; W5 I- C1 H* R5 r* d$ p1 |: s- D6 [4 z1 f8 G+ T5 j1 W" K9 S9 j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ u1 ]8 O" j4 L8 w# d& Z  n
static void McASPI2SConfigure(void)
% p! J$ ?% k# [# |{
/ W( v2 c9 E. L4 V" X6 u3 yMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
: w: X% Q  o8 i# O8 pMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ a0 G: W2 f0 Q; c5 sMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' r$ G3 ^! ^( m/ t/ EMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 W/ R$ _* b: m1 f8 a6 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 P& g' l- {+ O2 M: T( A. iMCASP_RX_MODE_DMA);: w  g' e9 P, z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: b" y- g6 {% v# J
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 ^6 E8 z/ g5 h; H$ w5 o
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" B: Z+ U* S9 m; w4 v, X( H5 _& Q% RMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" @. e' ]: W* q8 I! ~/ V5 r
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 3 {) i; c) W& \6 T3 v  U% t  x( R6 q
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% h! W( n( Y5 ^: \: q$ w) u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ L/ B( E5 s% h. oMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* \" K# C- j) u$ HMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
7 V/ l, W: e1 K/ R7 w' S! e/ u0x00, 0xFF);
/* configure the clock for transmitter */
: L) A) E4 t$ _& f5 G' U2 gMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
7 C6 h+ u; [. _, T' ~8 kMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 O7 R# N' Q# O+ a; T1 X' c3 g/ wMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 b* ^! p- j8 ^  N% ?0x00, 0xFF);+ k2 I' B/ t8 T- E0 Q% K$ Y7 Q
) n, f; P# n7 Q
/* Enable synchronization of RX and TX sections */
2 {( R6 R* a6 `7 u+ h8 H+ u7 [McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  `, U# x4 @+ E: O
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. b- l0 S% @% I( r' P* zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*. K2 l8 K0 t4 k, K+ j, l
** Set the serializers, Currently only one serializer is set as# {9 x- f: k- h
** transmitter and one serializer as receiver.4 e8 ]' I! v. ?: t! i+ e8 x
*/) N0 _5 s, a+ n0 M7 e6 ?5 ~
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( I4 Z  u) s6 B' e7 F
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
( n% W" D! R5 u* x# B3 z0 o** Configure the McASP pins $ p! |; o+ S8 B1 w' b, V
** Input - Frame Sync, Clock and Serializer Rx5 w' W5 m# W& J* R2 H8 c5 d+ ]& X
** Output - Serializer Tx is connected to the input of the codec
+ ?. G% O# g5 H* A$ s*/
5 H9 o6 u; W! C7 J& I2 ~7 |McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);, |6 |5 Q4 z2 [# R& Q0 F8 J, v
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) ?6 g! l8 O5 B1 S4 W
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 V; o+ q, o: o: A
| MCASP_PIN_ACLKX1 W- D/ N9 C+ V2 P$ j7 v) n
| MCASP_PIN_AHCLKX
9 i7 f- C9 W! r8 M| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */7 G& U3 `# }& z8 [% i
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. S* y9 R& [1 m! H* g$ u$ x| MCASP_TX_CLKFAIL / Q6 |" i2 b8 d/ K
| MCASP_TX_SYNCERROR) {# l0 o& h: S& |
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - `( e* R* w  M* c9 ~! G
| MCASP_RX_CLKFAIL/ N. f1 B; O' r: U
| MCASP_RX_SYNCERROR , r, _( `. E- g# ?( ?- J
| MCASP_RX_OVERRUN);( R9 `- n: p9 F. }8 }6 U! U) M
}
static void I2SDataTxRxActivate(void)) _7 j. P; q' P4 f1 m2 K5 p
{3 h9 d1 D7 T: Y
/* Start the clocks */4 e; x* Z. N  w
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
- J1 X, D5 U8 J- E; N( B/ pMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 s9 @/ y: i: w
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 I  l) F( ^+ C! CEDMA3_TRIG_MODE_EVENT);
8 D2 j" O* J' H' CEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + |& U# I, D8 W+ P3 J( n
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 m! m, o; ~6 Z; MMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);) }) |* A# M" s5 \1 H
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 `8 [* K: L6 t; W: c6 ~) j
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */8 d% Z$ {% a$ y
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. S' Q6 f- Q! H! H. h$ H7 |/ HMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
# e" M. `/ r8 _6 i}
8 B# f6 g" X7 R- n0 J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ |6 D: X0 f5 E  o4 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 13:36 , Processed in 0.041406 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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