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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9539|回复: 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,
. e5 h( P5 Z* M% einput mcasp_ahclkx,
) b4 u' Y/ P7 binput mcasp_aclkx,
8 W, X# P9 w2 j) F- Sinput axr0,
% Y4 y1 I/ j  Q% v# n
; O' [7 A5 x  e* `output mcasp_afsr,
; Q( z: u" h2 I2 V% e, {output mcasp_ahclkr,
) }. s! T! T0 R, k! j* O* j. {output mcasp_aclkr,
) Z4 g6 O3 k& i# U- Soutput axr1,
% I+ q8 Z* P# z5 d3 d1 `, q9 t( q
assign mcasp_afsr = mcasp_afsx;0 o9 V$ x* j& Z9 U
assign mcasp_aclkr = mcasp_aclkx;2 [% C  C+ B6 u# x# v4 A
assign mcasp_ahclkr = mcasp_ahclkx;
. X& Z# r2 X- L6 W0 passign axr1 = axr0;

2 M# Z, y$ T/ x- I% M5 J. q3 c  w8 v& I
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

1 I  e+ R. _. i: |$ f( I
static void McASPI2SConfigure(void)
; K6 V7 Z" f9 O& t{
" M8 x! P; X4 g( T) q: i# XMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
/ O. r  J4 V( N! G% MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
" l( d& H: ?* VMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);4 O6 L( H2 \" C! s. _
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ v* e6 V) O, \2 F5 U* U4 Y) D, xMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ k5 \( _# E8 \
MCASP_RX_MODE_DMA);9 Z3 b6 R* P7 [5 X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,# N8 V1 _& K6 P
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
( J0 X1 P2 Q% Q7 t8 P" z- V; FMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, - u* I% H/ i4 t$ d5 B6 X, }
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; Y9 `$ J+ x4 w: r
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
% p( Z: M% b; ^/ ZMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) A" z; [' E# @6 C' fMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, q& M: _# [5 D6 p
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ b7 `7 `2 f) J8 |6 f, h. GMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. c. j. U( y% J+ T8 i' t. F0x00, 0xFF);
/* configure the clock for transmitter */
( h1 z4 {& x; H* B7 p' w/ {McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' n$ e. X$ [( y8 ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
1 @% A8 m1 b. N3 O" c$ QMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: B: u0 W. [  Q* a3 I5 x0x00, 0xFF);# i3 \# b, y! }% v$ D3 M
" K) }" x# U* C. X" ?: |1 r
/* Enable synchronization of RX and TX sections */
; }+ \/ \5 b5 k6 v( Y$ \' DMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% h# r- A5 J4 ~! L* s! n) N8 @
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);: f+ C) _) g0 I" u& p+ ]4 Y
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*' h/ b! |( ^  ~, ]
** Set the serializers, Currently only one serializer is set as; G2 I- Q: ?- I: ?9 e; t( z& X
** transmitter and one serializer as receiver.
6 ~9 I- P, H/ {" g( F1 b' e*/; o5 }' t1 f& E+ m* k; b3 F
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
, t; p( z* [' P+ }2 \1 ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 R3 U( q- I8 M& F' Z- P** Configure the McASP pins 0 a& O& ]5 U- E4 |4 L- [# W
** Input - Frame Sync, Clock and Serializer Rx1 f1 F# g3 l+ _2 a. k$ U0 Y
** Output - Serializer Tx is connected to the input of the codec
( |; k& P2 V! |" h% A9 F*/
1 b3 V- @0 L2 |8 H% xMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
# v& r( Z9 w6 f* }McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
. u3 l2 F# @6 vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
, x, {* [( Y; D6 A4 j8 @| MCASP_PIN_ACLKX
$ D3 H/ n( M, d/ e8 B9 d| MCASP_PIN_AHCLKX! R9 N  b: [  d. [1 n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ i" j3 }/ w$ O' CMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# b' l/ Z/ R+ A6 d7 R| MCASP_TX_CLKFAIL
; R( o- }, Z0 Z| MCASP_TX_SYNCERROR
# p2 x, q2 C! F6 y+ e- t| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
6 h% a* ?/ t: Y& G| MCASP_RX_CLKFAIL/ s$ w% j$ {/ z6 u3 ?% _2 C5 u
| MCASP_RX_SYNCERROR ( i7 I: Z7 w' z/ j  u
| MCASP_RX_OVERRUN);
$ O) i$ y5 b! ?6 J: f0 Y) n! S5 z}
static void I2SDataTxRxActivate(void)+ v2 n; L% M7 o* I% u; h
{$ F6 f% [6 r9 Z
/* Start the clocks */
9 W* U. g- g; x$ \0 L* o$ c3 PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ m% I! P6 k$ ]: k: [& AMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' D3 O$ ~1 l2 X( R' C, ~) ?EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 ?$ |& c/ z: J6 ~6 e# vEDMA3_TRIG_MODE_EVENT);
" Y3 V' ^0 t: w/ J8 ~- |EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 1 K1 [1 p7 H, c7 S
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 ]: C7 f, C4 |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 B# h8 q( `( \, r
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
* L/ H! ?- h# v0 s4 e3 x7 }3 _while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 o( ?; `& Y9 {. A- vMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
6 S+ i; ]# H. c8 N3 G/ ]' G6 W/ yMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
4 H" B4 h9 R: ~% ^2 o}
0 t# d2 v; _6 G, U. [) a
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. |6 w* _7 k& R  ?+ y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-13 07:24 , Processed in 0.054077 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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