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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
( D. V4 F, g$ M$ }* @% \- ~input mcasp_ahclkx,- D) H6 x1 h* i( [/ F
input mcasp_aclkx,
- i0 C3 [9 D. ]/ Q! ]# ]input axr0,
" r3 P, u- l$ M2 z  r+ @; j5 k. O' L+ b) Z
output mcasp_afsr,
& P- `2 n& i* @/ m3 ^output mcasp_ahclkr,* W$ X5 h( [  X; W) l, ^. ]
output mcasp_aclkr,
% c6 T- a' @5 Moutput axr1,  k- T% z% x* g3 S( _' T/ }! P
assign mcasp_afsr = mcasp_afsx;
& r% R0 O* e. t6 k1 |; ]$ sassign mcasp_aclkr = mcasp_aclkx;- I$ t5 x: }& |8 v% N$ N7 E$ X8 Q: A
assign mcasp_ahclkr = mcasp_ahclkx;
3 r' p, O# a/ ?assign axr1 = axr0;

. K, R. x5 w+ ]# d# T, Q* A$ r+ ?
( W' W; Y* q$ `0 ?
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  C4 x  G9 v& d3 T# R6 D
static void McASPI2SConfigure(void)
! O- w! w  U- y* `, }' f{
9 o7 ^# t3 W1 h# M, XMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
, ?8 q8 Y# p2 z4 AMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */. k8 t# n% b+ [3 K# D
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);: M2 w: k+ B- @9 e, A. b
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */' A/ [& P  z4 n/ B) z  I( s
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! |6 U! N' I2 ]MCASP_RX_MODE_DMA);) X# X% ~& A# o
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, @( W3 o& I: r3 S; k; AMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ Y) w& U' V5 ]8 {! o  q. {; A" yMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
" d) B1 G& O+ t4 d1 bMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);1 q* o# R, R* g' g1 O3 ]2 l" n+ q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, $ m: O% }6 h# \( F8 \! X
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% z; W* t% `0 R$ Y4 m* n/ c0 |McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
: P) t3 ~1 U7 O% R5 XMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; ^" c& G) l+ EMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,  @# \4 p( Z2 o
0x00, 0xFF);
/* configure the clock for transmitter */0 b* K0 z1 ^6 C  c9 [# u( f
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
% X6 S3 x7 F: g7 WMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
" L7 q. v5 ^2 M. ~4 R% T1 b1 HMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," }  T* B' T$ z' a
0x00, 0xFF);
8 W: |: _9 k/ c$ h& {
7 R0 r! i% m& f/ G4 ^/* Enable synchronization of RX and TX sections */ / ~% t' ?: v; s$ {
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
+ M/ M7 ?; f, B  d9 i; S+ v0 e8 jMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 r- _0 s2 c1 l+ t! mMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
( h( T4 E- G/ z1 v* z* m: S** Set the serializers, Currently only one serializer is set as- y9 M8 {3 q$ A* {! P& \) j2 o
** transmitter and one serializer as receiver.7 v/ D: ?% G/ @. P& m) Q# j
*/3 I  U( @0 l( H; t
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( R; ?5 u% u, Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*! t5 i3 p# N+ }) H! V1 D7 H
** Configure the McASP pins
( m# K7 [" Q0 \4 f; m) g) f** Input - Frame Sync, Clock and Serializer Rx
/ h/ y' \2 v; W2 K** Output - Serializer Tx is connected to the input of the codec 4 ~& b; e9 l3 E. U7 O
*/) p+ f9 ]7 p; I* m3 U* @
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 a8 Z) f: e$ x8 {1 r8 e0 e& T
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));8 b9 Q6 `- A" x$ ?: |! v
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: T4 _" L# A$ I4 }| MCASP_PIN_ACLKX
: d+ G2 `9 w. W0 ], H| MCASP_PIN_AHCLKX
; B) N& D% \- V& Z: h| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
# _5 @1 a; G/ Z0 d  _; T$ ^8 I. gMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! e3 e* r" n2 Z+ U
| MCASP_TX_CLKFAIL # h, @4 J* W& e
| MCASP_TX_SYNCERROR
# i( }( W9 A. t6 w/ s1 J| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR : N# b( ?  p9 ]% ~9 w( l
| MCASP_RX_CLKFAIL, ?' u! M7 G* m( P1 O+ P
| MCASP_RX_SYNCERROR 1 R' r5 E- j& w8 k( h! {, f" H
| MCASP_RX_OVERRUN);
: Y) B. M3 \( h2 g. d( g) B% I: i}
static void I2SDataTxRxActivate(void)" G" S3 b2 Q3 i1 S
{) T' u) y# Q) U( k
/* Start the clocks */# |3 n4 u' I& L8 U9 W4 ~, P$ {5 A
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 r) X! v( T" f- x. Y0 Y$ p
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 l; `" f5 v3 x' C8 A/ ~
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 T) b7 q5 i! S3 i9 x" H8 sEDMA3_TRIG_MODE_EVENT);1 `* L' y) C: p( h0 T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
5 N+ ^! A9 ?  s$ `% MEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ J# u& X( k* i* n
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
% t6 a/ N' f; L; M; R9 x# JMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero *// L1 w4 W, m1 i8 U( g) S2 A
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */, Y: U0 l2 E, [" z( s$ }- S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. V* I: g6 {' I* N  }1 l7 b$ m7 iMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ W* ^( l" M# u9 @5 `- _0 O
}

, n5 B3 ?2 {) y8 z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

6 G0 b9 F( S4 q" o9 {' @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-28 16:19 , Processed in 0.039429 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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