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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13567|回复: 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,
. I3 P; T7 [% j/ n$ t# C' Minput mcasp_ahclkx,
+ t* p0 ^# y: D) q$ qinput mcasp_aclkx,+ G* V" |) {' f2 E3 P
input axr0,
( h; g+ o8 h4 S' d! j/ \3 a" ~
3 r& y* o& m. Y5 qoutput mcasp_afsr,
- H; ]0 ]' }* P( youtput mcasp_ahclkr,
% N9 B+ n) @" w: K9 }8 x4 @* M" Loutput mcasp_aclkr,
" `; f, N$ H( H) Z$ U% E) ^( [/ qoutput axr1,
" z3 f/ X* |& p* x
assign mcasp_afsr = mcasp_afsx;
, o. b# N' U( n+ |; R8 |4 n0 ]9 Hassign mcasp_aclkr = mcasp_aclkx;
4 ]3 b) b$ s* {0 w( g$ w! eassign mcasp_ahclkr = mcasp_ahclkx;  e: u$ ]! c" ^* Z$ d7 ^$ N
assign axr1 = axr0;

9 f* n0 Z/ g# M8 K, F. J
  B% O. z. P" F  E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 h5 s2 J6 d. {* O/ F' p& G
static void McASPI2SConfigure(void)
1 L+ ?& B! {2 f! m{
& P/ T% U- j: t& M' X, H$ GMcASPRxReset(SOC_MCASP_0_CTRL_REGS);% @, I8 L/ [' F4 h# D# w  d( ?
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
& m8 S. G9 A7 p% q  g1 F7 hMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% m' o5 s- h  t; P8 b" b" f* z: bMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 \) r# B1 @: S9 j! G3 MMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; z- n$ w; e( S/ p
MCASP_RX_MODE_DMA);
1 p3 ]- W+ S6 A8 u- S1 JMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," d# }0 r2 c6 p
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( {. Z9 w  z9 U4 Z7 w7 B
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
5 n: |0 [  {) y7 c6 jMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 u6 \+ D) R) u& f9 V' p
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& m' L1 m6 `: q6 QMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
1 ^- _- Q( D% x) S4 ^1 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 B* h4 M+ D" D) n1 U
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& ^9 O, f& l- q, }2 D; x" \McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 ^# y: c( S* Q5 ?0x00, 0xFF);
/* configure the clock for transmitter */$ l" O$ g# `2 x7 x) O8 `
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" Z2 _& S4 N% |  m! Y" SMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
( {! X$ ?. ^& M8 S6 ]; c! {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
3 ?% ~0 p# o: K. U$ b. b! ~: D0x00, 0xFF);2 R9 E9 _% ~: x! s) A0 N

( P0 x5 ]! [  V& N/* Enable synchronization of RX and TX sections */
' f; y4 w2 b/ B6 _" {0 q- q" F0 ]  IMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */' b- c; p" W# O1 ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 p; c5 p$ F6 m# W* K6 sMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% u9 `# e) ^& d; }8 {( U1 z
** Set the serializers, Currently only one serializer is set as* V) B, P, N7 g% ^6 Q2 x/ H2 ^1 W
** transmitter and one serializer as receiver.
" W; Y' h! R6 ^' ]; N% P; p*/
1 a3 k) k. Q) F) f0 j4 BMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
; Q; w8 L1 s3 t: ]7 V$ Y% CMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
" D7 C. K) @/ N** Configure the McASP pins 2 Z0 j/ T4 K  z8 @* L
** Input - Frame Sync, Clock and Serializer Rx1 X4 p' J; j4 y' c1 G
** Output - Serializer Tx is connected to the input of the codec
5 v. V$ R1 y- e& v- K9 W. U*/
2 `& b  s$ O, P7 NMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
. r6 C6 `6 U/ W7 N4 pMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
2 G3 O2 T6 q: q* DMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
/ ]2 t. ]9 ]8 G/ V3 [7 A) d- A: y* D| MCASP_PIN_ACLKX
" m' |% M5 p. X9 q2 q| MCASP_PIN_AHCLKX
& S3 z$ d1 E; W/ v; U" Q1 ~| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
0 N* ~% E) E" F8 u( A  X2 `. f$ u) {& uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # ?0 v8 U* o' q. P) ]
| MCASP_TX_CLKFAIL 8 R* S  \- {/ q" x5 a* X
| MCASP_TX_SYNCERROR
# n6 h, l" I: r8 d+ i| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- z2 X! g) U" U| MCASP_RX_CLKFAIL
  m9 y6 Z' L# `9 l; {| MCASP_RX_SYNCERROR $ r! b# C. s" v) M7 h4 k& N
| MCASP_RX_OVERRUN);
, B2 Q3 l7 m9 N4 s# T+ r* V}
static void I2SDataTxRxActivate(void)4 [3 ~+ s# W" t+ q
{+ k* A# h. c5 \; }8 V; r# P8 H
/* Start the clocks */
6 M* O8 B4 ?5 b  i$ b: O' zMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* C2 o, W, _% U) w" A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 K0 i, r+ c4 {2 P! I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,- M% C5 T4 M0 p! I
EDMA3_TRIG_MODE_EVENT);! u; z! X# _9 o3 @+ F
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, * y1 |  }0 H+ _5 |: W( P, t* ~
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
9 ?0 Q/ G) {% p! hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% t& A5 V1 s/ ^- w! vMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */, U5 A; X/ F8 J* x" c0 o
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
$ N7 W4 X( c% P$ U) f5 _9 Q- vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
, s% s" E$ f  \8 iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 j" k" k0 b5 K5 W, B" a
}

4 A2 U. D7 t& H4 U! O# k4 i) I
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
  f0 T# V) d* `6 W  j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-4 14:44 , Processed in 0.045806 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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