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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1214

积分

金牌会员

Rank: 6Rank: 6

积分
1214
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
9 q/ s/ q7 p: h5 M  v% Finput mcasp_ahclkx,
; S' `. x$ J9 \0 m: v; Minput mcasp_aclkx,. @+ O6 J0 l: q3 N4 U, @
input axr0,
1 d3 k2 a) j7 @# o; u3 T0 M( u! q; n$ R2 Z. ~% f$ `4 S. C8 Q
output mcasp_afsr,* H- p( V8 I/ o9 C. Q1 d' g5 R; n
output mcasp_ahclkr,
5 l, \0 R9 K- [$ \output mcasp_aclkr,
( l- v3 ]' v( Y; z. @3 {output axr1,' \8 b  a% x$ X" A- n
assign mcasp_afsr = mcasp_afsx;
( i5 R/ p) ^$ m! [2 s$ Q: Jassign mcasp_aclkr = mcasp_aclkx;
' n* G# Z7 B  _' O! j: t* massign mcasp_ahclkr = mcasp_ahclkx;
8 }8 t" n6 j+ a( \assign axr1 = axr0;
) m& M* W, W" |4 q5 y4 c+ g

7 R# z5 N( _/ p
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

; _* G$ z( }+ @8 L
static void McASPI2SConfigure(void)" Y: [2 P' D$ M1 _: @
{. V9 H% U! L" H9 K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
% d# T! E5 F4 @6 n9 iMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: e6 L) w6 e8 h9 ~  wMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
& a  @! a( A; v3 d# w6 B* a- g+ XMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ h' o) b% [7 m  {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,0 d2 Y$ y. Q# L. v$ h
MCASP_RX_MODE_DMA);
& C# C! q$ l! w6 PMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, O* l9 a7 c. L+ p: R
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( w0 J* t; @% S4 ^% b" E4 k9 \
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) z. P. s6 {; f$ {
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ N/ U7 i9 x& Y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, & F4 s4 L& _* `# U$ z  S
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */! `" r* e. ^2 ?
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);. T3 [( Y# t, n
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; o2 y! g8 E; j" VMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
/ `. J: e* P& b: k6 N( F0x00, 0xFF);
/* configure the clock for transmitter */* m% D- \: y% p) o
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);, L  M; C, I9 S( E! K/ H
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' i; m# K) _& u, B9 @9 |- s
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
) r2 f& ^4 i+ W0x00, 0xFF);  }/ \( L3 A* m- B! ~+ Y
* P' I' j( V) z# s8 b) B
/* Enable synchronization of RX and TX sections */ 5 h5 L; \  y; O) n) v( t
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */2 _" O1 l' I( A$ L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
. M! t& k5 a6 n4 L1 c0 v& UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
  o9 A" t; r7 l** Set the serializers, Currently only one serializer is set as8 L2 l# X* x2 A0 B
** transmitter and one serializer as receiver.& O. i+ k% f4 D% B( A0 M
*/
3 ^. }- {8 J: F  j% f  k$ {8 T, A; K" ~McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 V4 Z% A0 p- E' n( y& |# O+ ~
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 b; P! u% \  C; C
** Configure the McASP pins ( r% q) t( m$ {! S
** Input - Frame Sync, Clock and Serializer Rx- G, T2 |% Q5 G1 F. C
** Output - Serializer Tx is connected to the input of the codec
7 Y# g8 `/ z. w  o+ o& R*/* J( D" }" \! p( W' P$ g$ u9 H
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
4 |4 Q, E7 S+ n: `/ K, n! y9 \McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
# F; j5 C# a2 o0 K' pMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) {; L$ C5 u- p8 r
| MCASP_PIN_ACLKX
8 J1 E+ U' x, O- B( s& [. V3 O( L; Y- U| MCASP_PIN_AHCLKX/ W( Z5 I: |7 H5 `1 \$ N
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */, w5 e' O* x( t* n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
8 T. E5 n! T+ A0 d& }, K, c5 @% o| MCASP_TX_CLKFAIL
& _- l( Q+ U/ Z; D9 O| MCASP_TX_SYNCERROR
( j- U% r' I, d* e7 v| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' d. L! w0 i4 X8 || MCASP_RX_CLKFAIL
0 r! k. G! W9 v6 y8 f| MCASP_RX_SYNCERROR
$ P; O  F. o2 b8 o/ v| MCASP_RX_OVERRUN);
: g( `- \8 U) M  a# F6 ^+ O# U& w}
static void I2SDataTxRxActivate(void)/ ^2 g9 X! ?# L6 ^# v# A: g
{
7 w+ \9 B- R3 P, M5 \  d& ?. W; ^- W/* Start the clocks */
0 K: a0 z' Q& Y% S/ A# }) C# o& DMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
* L4 U5 K6 D2 L( c3 i- N% n8 RMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 _& K0 x9 d8 E5 o3 c, W+ ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
$ b% d6 c5 P' C$ X; P! A9 f6 sEDMA3_TRIG_MODE_EVENT);" k8 z$ y6 ^2 i/ b+ S4 y+ s& a
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
( F) g# f% O: j* a. vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
! l* p$ ^) z2 t( j8 nMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
' U: s  Y) W* A4 J3 dMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
/ s4 Y$ H  A+ _8 l; hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* b1 p5 F( Z5 D1 a
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);2 N0 H7 A4 u) m5 q. C: m
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
) P; h& `+ _, t# u+ G- |* C. @: u}

; k# {& _5 L, V
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- b  Y' O( u( t. s& ^" h' k: k
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-21 21:16 , Processed in 0.040697 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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