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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11726|回复: 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,
' J$ P( R' c& A  e% Y! F! ainput mcasp_ahclkx,5 r2 K: D1 q9 l# B+ F; d* O/ s! v$ X7 j
input mcasp_aclkx,
+ E; E, P; e3 A3 Y8 v4 ?input axr0,) c* }, n/ O. z$ m3 L! r& l
# l+ k: o$ x* _! x( Q9 ]; f% F
output mcasp_afsr,  p( l, r$ I( D1 _9 m7 n( D# t
output mcasp_ahclkr,  u$ G5 i: P4 M% r" K0 s8 i
output mcasp_aclkr,. c7 u$ {! p& P& \, ^$ o
output axr1,
' S$ t+ g3 v! k6 R1 o
assign mcasp_afsr = mcasp_afsx;  r% z! `  }& {& L+ ~
assign mcasp_aclkr = mcasp_aclkx;
, J! u) J' Y% @assign mcasp_ahclkr = mcasp_ahclkx;$ C' z( K7 v. X' h' L
assign axr1 = axr0;
& }6 S6 X" c, K  q, s

0 I- r4 ^4 X7 J/ @6 c% j
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
5 p# e- f5 l0 S/ h
static void McASPI2SConfigure(void)" w# P3 d) I; z* ]* b) Z0 r
{
/ T2 F& ~# s7 y$ mMcASPRxReset(SOC_MCASP_0_CTRL_REGS);& E. }3 S+ S! P: z: X) W
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
2 C, U- B( R- d  l' O: M( U# wMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);5 f% e. q  Z& m2 w8 n9 i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ u5 H3 |+ ~6 t! B$ S2 N3 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
# s/ j0 K, m3 X- {/ B* p0 E- c% y4 RMCASP_RX_MODE_DMA);
% S4 K6 r" `. a0 EMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 ]7 J+ d8 [( m: ]2 j; i1 b: LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */! {8 A" i2 p4 O9 H
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, & Z  p/ P# H+ d# g2 M# |
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
% F+ x  N4 C, ~& P. Q# bMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 b  g6 Z8 A! F* k8 a3 tMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
4 e7 v5 i- A( q. tMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);! ?- Z8 j) \/ g
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
( G1 V9 k6 j7 q, LMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" z$ B6 ~0 S. y' M5 S- O; }0x00, 0xFF);
/* configure the clock for transmitter */
3 y; r& m, c' `# K7 r% q$ AMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 s! h1 K) w; u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
: P. u# I8 a, v+ [, f' j1 tMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ L6 q; k4 B% S& s' ]0x00, 0xFF);
. H( C# i2 R. A  t
- `2 e7 z& @) H4 p4 d5 u+ @9 C, r/* Enable synchronization of RX and TX sections */
9 ~% p4 o$ ^. nMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 ~# W" a: h7 d- \2 |$ d" P) v) \
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
, a( L9 i' ^  l! q& V  O- x! zMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 ?1 c; D# [2 [8 [4 D
** Set the serializers, Currently only one serializer is set as
5 m. Q/ l3 L6 m" m3 N; E- e4 _** transmitter and one serializer as receiver.. A. Q' Z0 Z# |. w5 `
*/7 T/ W5 \' ^, u9 E6 d
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);% P$ S- L! l; q5 f3 {0 K( d
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& p. h- {3 @4 F( K4 d$ v** Configure the McASP pins # s& b$ B! B" N1 |7 q
** Input - Frame Sync, Clock and Serializer Rx8 U8 ^( a& n" J
** Output - Serializer Tx is connected to the input of the codec $ X- N" p$ _5 ?' @& m
*/
5 u" Q- w( Z5 k/ T+ o0 S9 BMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
! M, @8 x  H" p0 XMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 Z$ E7 ^3 K* Q5 T! vMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
& ~. l- x" q0 a" s| MCASP_PIN_ACLKX0 M7 c) i2 {( m& a; l/ A
| MCASP_PIN_AHCLKX+ j/ `/ W3 C; G  p6 n
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
" ^9 L, y8 e" L  M  Y! g5 GMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 3 V1 j# U" Q. k2 d
| MCASP_TX_CLKFAIL
5 ]0 h" w) V1 y: E| MCASP_TX_SYNCERROR
* r0 g3 z4 J9 N# f% K, F/ ^. F* Q| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( C; G3 A. [! e: s) J/ r| MCASP_RX_CLKFAIL
& O4 u* v2 R5 J7 Z| MCASP_RX_SYNCERROR
& y3 p$ ^# Y6 o! k, H6 d5 W- a| MCASP_RX_OVERRUN);; W- J$ _/ H# \, K
}
static void I2SDataTxRxActivate(void)2 r9 N; d5 ^* [% z1 u4 s/ z. Q1 m: _
{7 J" A3 g: B  f% R  N
/* Start the clocks */
# I  F$ e- [% K' P& c; ?* A& RMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);* D$ N3 s! a  k( g8 C2 h+ U
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 k5 I+ @  |+ P( q4 I
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,7 q. U' X/ k% L
EDMA3_TRIG_MODE_EVENT);
" I: d: E/ s, @) y4 ^- KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ' J  Z7 q! I6 ^" `
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */) s+ @( @  k6 z4 r' [0 q! n& K" U! y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);6 K& K  r5 D: W& ~! |, {
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ m4 u! X+ S7 I3 I4 ?
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
8 B  a% g9 I( J' b) _- CMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 n9 K8 V* T" @
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);. A9 R) S0 J. }2 F5 Q* _* C$ O
}

0 g5 o5 j; z: q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 T" Z9 ~1 g' G( I$ y$ H$ x/ a& z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 17:56 , Processed in 0.040147 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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