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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,' S1 m! V( U: U! d1 A6 q( X
input mcasp_ahclkx,
$ p0 |6 @) h) c; p* T* y0 Iinput mcasp_aclkx,
' X5 Y1 S- w6 \4 e0 s9 e9 |, p! uinput axr0,& F4 O3 ]) f3 ~. V' r* N

3 n4 G7 B; z3 S' Voutput mcasp_afsr,5 g5 s: G! H) p
output mcasp_ahclkr,9 L% Q* M; R/ C2 H! {2 o
output mcasp_aclkr,
+ H  v4 z# B5 Koutput axr1,
+ ^+ ^; y6 X2 C+ ~6 G
assign mcasp_afsr = mcasp_afsx;
1 ?7 N8 }* ~/ v$ _/ W% Rassign mcasp_aclkr = mcasp_aclkx;) g& C0 d% r5 M& |6 E4 ]& L
assign mcasp_ahclkr = mcasp_ahclkx;
0 C" \8 t! x9 d+ ?assign axr1 = axr0;

% \& \; F1 }6 R! J5 @8 M- E# L" e; d( _
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
. [9 I1 k/ }( U& t' h* j! v1 Q- O0 d
static void McASPI2SConfigure(void)7 @# P# U8 L3 O  Y8 |3 v* F$ a
{. H: r# A( \7 Q/ \
McASPRxReset(SOC_MCASP_0_CTRL_REGS);( o! N3 t" N% C9 A* G
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: ^. \% G- v) L) V/ q8 b: bMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
! h- C1 D. s9 oMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( u2 z4 T. w  ~3 d( y% Y/ m: M& M; L, u) VMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ g3 U! D# I) j. x
MCASP_RX_MODE_DMA);
% I8 J. K+ F- `' KMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  v5 K, |8 h/ L+ J% PMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: w- h' K- x2 ^- W( XMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
/ S7 R$ T# b. _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! d1 R. W! Z5 UMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  E0 v2 T( d; F# u3 AMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */9 R8 M3 f# S- J+ J5 p# J; t
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);$ f% o8 d( p* {
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
, p8 n* `0 o/ P; DMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,+ `# U$ w, z) W5 D9 {0 q
0x00, 0xFF);
/* configure the clock for transmitter */! P! r" ?) W7 T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# X8 u, p! Y8 P% w& _0 }McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
+ y' z4 r! m; C& E" T) {! S- q" {McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- x0 J9 I  p; i( F& o; Q
0x00, 0xFF);
* L4 D3 ?* R- }3 E9 T
/ p6 y' `0 s0 d! `/ h/* Enable synchronization of RX and TX sections */
& X, I9 \7 F% B7 CMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  J+ V1 t* M) d# |# t) l9 c; FMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);% Q( f# T/ Y5 Q. J: c
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*" \$ ]* W; p1 p" l+ @) g0 ]
** Set the serializers, Currently only one serializer is set as
; l1 |# _0 R7 Q# j) ^** transmitter and one serializer as receiver.
! F' w, E0 i5 ~' c7 v# e) Z*/9 z: U" W6 ^8 V* K0 W0 x' v2 q* a
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 z7 n: C( \: R5 JMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
! h( k  Q6 [4 t9 F! X/ }** Configure the McASP pins - O) x4 h, ~# Q7 f2 N# `- {
** Input - Frame Sync, Clock and Serializer Rx
% S! B/ ?3 _1 ~# k( z** Output - Serializer Tx is connected to the input of the codec 2 @* L* ~+ C" S; i% K+ \
*/5 t+ C4 k" w* J9 H) c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
- y# U- h$ a1 ]! w8 }McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));( [  E' L- I  W7 S& m
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 z1 }. r( R( i# Z+ X( g| MCASP_PIN_ACLKX2 i$ d9 W/ V; [9 I( r& s* E
| MCASP_PIN_AHCLKX
1 b/ s5 A7 w9 F( z0 {6 L2 @' L| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */! P" p7 ]/ V1 `
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
$ [* j8 S" u: G1 b3 h- U| MCASP_TX_CLKFAIL
! }' q( d1 ~4 Z6 M  ^9 T# n| MCASP_TX_SYNCERROR
! @3 ]* _3 ~2 }& J5 R! D8 E| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % A" r1 b$ p6 K1 C4 t
| MCASP_RX_CLKFAIL
% G& E* O7 |6 h" _& d* j/ M, J| MCASP_RX_SYNCERROR
' x+ B. }$ s5 f, Q| MCASP_RX_OVERRUN);! g. K/ d8 o& n+ n6 w7 B" K. s$ W
}
static void I2SDataTxRxActivate(void)! p: b7 O5 w9 J# i
{
) y* ]8 `( N) c' Q8 O/* Start the clocks */; |5 h8 V; L3 e1 o( |2 [0 q
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 C8 b9 q' p& w2 ^0 I1 o# dMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */! r/ z6 H  a2 q5 j
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( \1 Q' w8 p* x- S5 P5 s  u" i$ L
EDMA3_TRIG_MODE_EVENT);
* i5 O8 |& ?# c+ s0 ]; E5 t+ VEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ W/ z2 g5 w5 kEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% p$ V5 V2 H# F4 F6 f/ |0 [/ jMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' R1 V- h0 N- ^1 ~! v5 R& pMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
# ~% P9 w! Z1 d, H" ^while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
4 j( U/ @: o" XMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& Q0 o" t9 C' \5 \# E: OMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);9 d' X  I% s$ h( R* O  n& ]& r
}

- ]& q+ s9 ?4 i1 b7 Z  w0 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
6 P# S9 ]6 S7 @6 v( B4 A( X) t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-23 16:54 , Processed in 0.039153 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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