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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8544|回复: 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,7 K3 K( v2 H: N2 i3 Z5 q" x
input mcasp_ahclkx,
5 u& e% v/ h4 }input mcasp_aclkx,
$ f% B5 V7 k& R; C: tinput axr0,6 ], w, n7 T& ^' a! _0 i
& ?6 [" b4 q5 ^. l% I4 o: E9 z) K' |
output mcasp_afsr,. s; g: x/ H, s' V& G& W9 d
output mcasp_ahclkr,
" ]! g0 G9 ~. s( T& P& A6 g  toutput mcasp_aclkr,2 k) |- d/ q4 e7 g1 k
output axr1,) w$ l6 {" I5 k% ^6 j
assign mcasp_afsr = mcasp_afsx;
) {; H; ]* S6 h9 Oassign mcasp_aclkr = mcasp_aclkx;2 Y  h3 d7 H5 A# I
assign mcasp_ahclkr = mcasp_ahclkx;
: S: E# H/ V: z3 f, |0 P) R5 Z3 fassign axr1 = axr0;
/ m$ {/ }4 j1 x- W/ f+ {
) r& J5 A- b( \8 `5 `" \1 h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

( _5 ?8 ?9 w. c4 H2 F
static void McASPI2SConfigure(void); I) P8 l( I5 {
{
/ n8 i% y8 D1 Z' V4 n( ^, VMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 Q) A/ m% L, R7 w! i+ GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
  G- U) q! f0 j( }1 O/ B3 _: zMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);* P7 x  |. r! H/ `& X7 N
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */  u$ d; q2 v0 x+ ~
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% n+ D$ ^! I; A) Z  |% q3 W' AMCASP_RX_MODE_DMA);
1 f7 b6 u# E" F% S' L6 vMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 y0 x) U  f  s
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 a, q3 v, p  b& R( e3 W
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
; _$ P4 Z9 Z3 HMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);! L5 Z6 m# s. }5 a  b6 {- Z: l
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
! L2 P4 i, q' C- i/ Z) sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
0 `0 r, ]- x7 l- r3 q- W. C! LMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 \& ~2 ^* L2 y/ C
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
* h! F% S9 g" e, ^McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ t: G& t2 B" ?: T! W2 W
0x00, 0xFF);
/* configure the clock for transmitter */
4 o) L/ K) ~8 @# u( PMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" C- b- v- F* tMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 5 R8 f6 |7 o: V- L( A* E. V3 }7 a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,& g( W% u' v/ q/ i; I* a1 E  _
0x00, 0xFF);
" _, w% `$ P1 o$ `4 D6 X$ g% U( ?) Q% k+ Z7 X; x7 ]2 o
/* Enable synchronization of RX and TX sections */   U; X: H, m# ?; b5 b
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% l5 I8 b9 r( X& d! k
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
) |( \, n9 [8 JMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& z4 A( x" ]; y** Set the serializers, Currently only one serializer is set as
4 S8 i9 i: n3 H' I' h  q2 p/ O** transmitter and one serializer as receiver.
0 H) q& G3 R" s*/1 [  D" B# S& q& m! ?5 a* c6 I+ S
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
$ T9 T7 a# W# Q/ @$ WMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 R5 |7 }6 `& s5 i' E! y! s
** Configure the McASP pins
- X! j; V% j9 M. Q  \** Input - Frame Sync, Clock and Serializer Rx
; V7 E! v2 u% m4 Q4 R7 x  Y** Output - Serializer Tx is connected to the input of the codec
8 o- P6 H, \' J# v# o*/
& Z4 k. j' D% K+ L" B( q. gMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 S5 y, j8 L  E5 |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 p9 N! M5 b  G- p5 y5 n4 @
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" z  P2 l1 O0 x5 O" O7 r0 Z: ]
| MCASP_PIN_ACLKX! y5 l+ X0 K1 Q" }. t
| MCASP_PIN_AHCLKX/ k1 r. K3 S7 ?  p9 C0 j
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' k" X; `5 K: M2 J: ~9 `/ ^
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 5 z0 P( R, a! {8 c
| MCASP_TX_CLKFAIL
! b* T8 H" A  L+ w+ A* c- L| MCASP_TX_SYNCERROR0 m- p; Y: ]; x" B( n
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + N& e8 i, t3 t" H( u, B  t6 Y
| MCASP_RX_CLKFAIL" [+ c. c8 {- y* U& n: C
| MCASP_RX_SYNCERROR 0 s: s0 P" x0 ?: f
| MCASP_RX_OVERRUN);
6 R) ^% @& Q+ z. Q) D7 o}
static void I2SDataTxRxActivate(void)
6 N$ p5 {9 u5 B{! N6 V; X/ R1 L4 x+ K3 B+ F* {
/* Start the clocks */# {6 g5 p3 k0 H5 @
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);! b( K9 n- j/ j- m9 x3 a
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */. F! A4 j1 f* m% B) z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
& @9 |% ^/ G  y! X/ cEDMA3_TRIG_MODE_EVENT);
2 ]1 t/ Z5 Z% H0 X+ O7 HEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ u) v9 v4 M* F) K3 P$ Q) uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 R. s; N% y% T  t2 w  Q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 K' X% D! K) X; e! s1 WMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */9 m% v6 y# B% P3 W* I! Q6 \/ P4 A
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */2 ^- h3 Q5 S* T8 g
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);/ y. L& f* d# |7 H* D) t; G
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 O7 O, L0 F, d# D+ m6 ~# r}
9 z8 ^; y# g% q  F0 @) y( {& H# V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. A9 i, f( S- a% r- ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 19:25 , Processed in 0.037949 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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