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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10970|回复: 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,: O1 z& Q* D/ q0 P& C# `
input mcasp_ahclkx,. I! T/ G& N2 V* \7 ~5 K& [( `
input mcasp_aclkx,
8 c, T4 q+ G# T& ~input axr0,
  m1 J; W) b# H- @2 ]
5 Y6 ~# \5 P) l6 goutput mcasp_afsr,
0 }, ~0 A- c! }: W0 v7 l4 I) I, Houtput mcasp_ahclkr,
8 A; X8 j& ~+ l- s- ]output mcasp_aclkr,% w3 w9 B% P; Q/ @- G' h* \: P! b* y# \
output axr1,! p/ h  Z: E( ?. F
assign mcasp_afsr = mcasp_afsx;
8 e3 Y8 v( g# m( g9 w8 i3 b% |, o. yassign mcasp_aclkr = mcasp_aclkx;- T1 U0 F) [) b, o) A
assign mcasp_ahclkr = mcasp_ahclkx;
9 y* |3 g* V; S  k) T0 C: tassign axr1 = axr0;
+ x% I4 L$ B, x
' w: j" W4 _* R; B/ F6 r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
/ i2 ~" m8 w. [/ L. E9 P. R+ Q
static void McASPI2SConfigure(void)
% l) y1 h2 k3 p0 |( o/ j: ?" K{
$ x. b" P  j0 D+ ^% N' ^3 ^McASPRxReset(SOC_MCASP_0_CTRL_REGS);
8 z/ S5 d4 i  d% y1 h1 V. E9 DMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 H" c0 Y% f) W0 U, TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);3 Y& R; O1 p# ?3 R! ]3 a6 @
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# C/ w; _* G3 c6 w
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
. O& W& s6 K, k, M5 GMCASP_RX_MODE_DMA);( G. U* Y. O. E4 z
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
+ `% T- b" z8 P1 ZMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
5 N7 Z$ |/ R) e! I3 FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 o# B& c8 v4 W' K/ |/ [- h5 qMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);8 ~' w9 Y, b$ J, }; {, n) t
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, * x5 S2 f) ?5 `5 E
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
/ y1 |  y9 N: _9 AMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 v/ |$ J" P& U  _McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
% A& u! r  e3 ], ]% b  KMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& s- O5 b; v; t0x00, 0xFF);
/* configure the clock for transmitter */
5 l+ Z' S* x1 {, e+ qMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
( _& Z+ M. r0 O' bMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 8 b7 A) `# d% E. l2 o/ }; i
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,/ g  ?" r; u' R$ a: k2 \- C
0x00, 0xFF);$ W, j) V6 C2 _" F& ^

% Y  m; M3 m" I% b. F9 b5 r, W/* Enable synchronization of RX and TX sections */ # Z; g/ O7 d" g$ I+ L* G6 n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 a  f" E6 |; G. N. o2 N; M
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
- _  o5 P! O+ S, P; m7 E& ~McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
4 P$ Y3 V7 k, e' P9 e) I** Set the serializers, Currently only one serializer is set as% m9 r; m, V  Y4 y4 y4 X* ]+ W7 L
** transmitter and one serializer as receiver.$ x0 `9 q. x7 \. x
*/! Z4 _; Y1 x, Y0 e- I
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  ^6 A8 [1 F+ r6 \: V& QMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ g. k/ j; U0 Y$ d; i; X  a0 W) b
** Configure the McASP pins
0 d3 s( X- K4 b" W% Y* {** Input - Frame Sync, Clock and Serializer Rx7 C  O$ L3 e1 r# x
** Output - Serializer Tx is connected to the input of the codec
8 [# v  n9 m/ ?4 M9 _/ M7 ^* N4 g*/- X" l# _9 @) L, i
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
( ]; Y3 N4 x6 t; MMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
! ~. P4 u8 s( B3 e3 ?  vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& c8 {; z2 {; E8 D7 Y5 Z! @" @| MCASP_PIN_ACLKX
* C/ I/ |. T$ ^; Q% C; G| MCASP_PIN_AHCLKX) f- Y& i. Q4 t
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */# M* M& `  a3 P
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
3 Y& ]- f$ ?! Y8 |% W9 V; D| MCASP_TX_CLKFAIL
5 A: B! H% k$ }. R4 z. I+ E| MCASP_TX_SYNCERROR
2 P$ ~, H& k, k, m! x| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( W: i: }  h- f. S$ || MCASP_RX_CLKFAIL
& k0 q! ~" u: m7 R6 i! h  _5 P) G. R| MCASP_RX_SYNCERROR ' ~, T0 E0 X: H( |
| MCASP_RX_OVERRUN);6 K! l- x* h) j- t9 W' k. n" Z" i. ?
}
static void I2SDataTxRxActivate(void)
5 w, T/ Z0 S, l- @! b! u1 ^' i9 u7 d{# Q" Z* S7 M; P8 m# A
/* Start the clocks */
. P: |9 k9 F6 d) G" BMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 L6 M( O6 Q/ E  Z# @" ^8 z* }. W+ B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer *// j9 P+ I- R) g( i" V: G- L
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,. ?6 N) I+ K) ]9 I- {
EDMA3_TRIG_MODE_EVENT);" H2 g3 A' o+ Z2 y8 @8 F7 u2 l2 [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' m- I/ b# f; x+ v/ {EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( n3 c  P7 w4 Z% ?( P0 ?
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 H* N/ [) @) {/ sMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 o) b9 Z/ I0 O) a  Q& N1 L2 R5 @$ b( V
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
5 v* f  O: @. j* [+ S: EMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
1 T' [9 \+ o, s2 D# s  _McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& a# T/ t6 O, b3 |}

4 u- F/ {3 {' Z3 c" _$ J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! J" Y+ M8 u" h# v! J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-20 22:12 , Processed in 0.040037 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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