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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
7 @9 y* h5 f9 S& Dinput mcasp_ahclkx,. z& R  v4 ~1 X6 G! M2 d
input mcasp_aclkx,
7 z8 c$ U) c  |2 Pinput axr0,% v" C- I( H$ m" g: t" ^% a

- a% |! p0 f! c* S+ voutput mcasp_afsr,+ b8 q: t* [$ ]5 f% U+ G) X
output mcasp_ahclkr,
$ L! ^4 m8 Z$ l% youtput mcasp_aclkr,
# _4 Y6 r; b& p" n( \4 G% `: X# Y8 koutput axr1,
, ~. n/ d- h5 b
assign mcasp_afsr = mcasp_afsx;
4 n# U7 G+ |& o; A, d2 Yassign mcasp_aclkr = mcasp_aclkx;+ X; Y3 W- ^# K4 ?: d3 n
assign mcasp_ahclkr = mcasp_ahclkx;
4 @6 s- ~0 P% p( cassign axr1 = axr0;

( ^0 X- s+ [* |2 o+ m- U% ]% v/ i2 p# K4 q& n! x5 z/ `0 [8 t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

3 ~) J' R9 ^. S, p+ r, p5 d; l0 \
static void McASPI2SConfigure(void)
. `* ^% C1 _/ h+ q- h2 N; N' o{
4 G( x& F$ ?6 L% l4 y5 z0 _) _McASPRxReset(SOC_MCASP_0_CTRL_REGS);
. \  ?- C/ O) Q& zMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ v+ R" K7 q/ S' C; AMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 c! A* P+ e4 A6 o$ |9 FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% o/ O/ i1 U& o& |McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 z8 D/ k- p0 O; LMCASP_RX_MODE_DMA);- J- I5 D9 r* A8 j* _2 W
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,3 Z: u8 X, h7 e8 d8 z
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
+ w1 N. E2 D2 a3 XMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& r' X- K1 ^6 J0 g8 B6 [' jMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
; b6 x) A( k7 W. K4 }; n; {McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- h" M, v' Q$ a) }; n0 Z  NMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( _. f+ Q# R4 P) `4 ]McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);4 o4 d2 d9 h  T, {8 @# h
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' L" Q# G. b: [; L7 {+ fMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 G3 O& Y/ Y. s6 H
0x00, 0xFF);
/* configure the clock for transmitter */$ E; l" P1 H' ~+ Y
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);' ~: R, V8 c# l& G3 n3 }5 l
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 0 S: b4 x  }1 Y6 D  T' {# o6 O) v
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- {3 N! w7 H+ K2 B
0x00, 0xFF);4 ?! u  a8 x9 C* N  X

; |- i$ l0 K7 k* ?7 J1 ]/* Enable synchronization of RX and TX sections */ $ q# y2 b  [3 w  k* Z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 O1 T  ?/ ?* D# [' [; ~
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);: R: ^# K: ~! A
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& F% \8 `- X. r$ N** Set the serializers, Currently only one serializer is set as
5 {1 u# w- U- ^9 t6 f1 M" w** transmitter and one serializer as receiver.6 ^9 R' a% ^* k& }8 I
*/
1 n; O1 h4 f! s. \! M2 W9 qMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);) K' e/ S0 N( ^; e+ n" G8 `) V- q& v
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
* ^4 V4 w# U! Z  j$ N% V+ D' s** Configure the McASP pins
% j' H7 {4 w) \7 l! }** Input - Frame Sync, Clock and Serializer Rx
& ?1 l  C# Q  p# s! g. W** Output - Serializer Tx is connected to the input of the codec
8 h  Z; r$ J* B* f) k*/
" Q1 l2 }# M3 _- y! `* o1 vMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% H8 [. Z2 e' \; o: \
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" U, Y  }3 X) ]7 L" K( ^4 c" tMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX( p( W3 S0 k1 ~/ ^5 P: E* _6 {
| MCASP_PIN_ACLKX. F" S; [8 s/ i0 d2 p5 T, _
| MCASP_PIN_AHCLKX
2 z$ j& `! a3 s% \6 w| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
+ H) v9 y+ X: r2 xMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / j+ O0 f0 e" B" g
| MCASP_TX_CLKFAIL
9 O$ M0 Q; B  Y  x" @; `+ f: x6 r; v- g| MCASP_TX_SYNCERROR
6 [/ j1 c$ F# @9 N8 A| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 {3 F1 a% H* P6 a3 q9 l
| MCASP_RX_CLKFAIL
' d2 g$ K1 }3 W| MCASP_RX_SYNCERROR
& |: V6 G1 _7 J/ [, ^3 _( Z| MCASP_RX_OVERRUN);1 {* Y$ q9 v3 X
}
static void I2SDataTxRxActivate(void). R/ |! _! C6 R' {, K
{  [( ~- F& f( s6 K2 h
/* Start the clocks */
# z. g& u5 j" `McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* Q3 N) Z, E7 @1 f3 G  D; N
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
/ E7 T7 N, f+ |4 C2 p# eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 W" D$ a  o5 m* w8 \* e6 pEDMA3_TRIG_MODE_EVENT);( B+ B  ?8 ~8 u6 M
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,   [% J% k- l; j; L) T
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */. _7 l! r' o1 ?6 g
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
3 u, p* H. o5 P: u4 g# aMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! p# M" m& K4 U9 {7 H- g$ p+ |while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
! V% Q! C" g0 [0 R& Y* Y; J1 LMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);0 A1 n, y: _, W6 T9 N2 t, Z- j- N
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);( F& D$ W( z6 K/ W6 K
}
  O3 [- E5 q  v% d/ [0 \. d# L- A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
( W  S% l# d( c" q: w0 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-7 20:46 , Processed in 0.036703 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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