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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11503|回复: 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,
# s1 V* L2 p* {9 B2 A, b" {3 zinput mcasp_ahclkx,1 z# k+ d2 o5 |, L  v& B. I
input mcasp_aclkx,: r) j8 Z- F- y( @' {9 o
input axr0,5 \$ }9 P8 J  ~% L0 G4 L" @
9 H1 }4 Y5 v" G
output mcasp_afsr,: [/ J- z0 W) i4 X1 J5 E% }
output mcasp_ahclkr,
5 v! |, l5 n* _2 noutput mcasp_aclkr,2 M$ @8 }6 ]) i# `5 L" Y0 m* @. ]
output axr1,* ]7 R8 Z8 i8 Y: ~) R$ T
assign mcasp_afsr = mcasp_afsx;' b5 O4 s& j* A  ?
assign mcasp_aclkr = mcasp_aclkx;
( E5 J- X' F: i) k0 uassign mcasp_ahclkr = mcasp_ahclkx;- r( E& b* F. z: j5 @2 \3 }  j+ I1 y; ~
assign axr1 = axr0;
& \3 p5 C( F, X$ f7 m
8 @+ T: p4 X4 g  D1 M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
4 H# t) M3 v% @- c# {! m: A' g% W+ b1 s' x
static void McASPI2SConfigure(void)
" ^3 v8 P  A' s9 V6 y( H{7 `9 W6 U; n8 h+ R9 C
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 W% S( D) E" H' CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
+ o/ O) I7 C; H6 V$ BMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' y9 J+ e2 @1 j3 TMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
7 t% Z( v, q4 u* k  tMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
, \6 m& ?2 V# f& c+ _/ \MCASP_RX_MODE_DMA);# k, a6 q+ n- d# Z* T
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,+ h* _3 ?1 g# y( T# `- i% ]! T. U
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" Z% V0 v* z5 ?  e" KMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 x& ]* F& w2 l2 d0 }9 g
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);% f0 `/ q/ z) z. _! p0 D
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! s/ ~8 B  g( x5 U
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( q8 b% f4 U8 ^3 R0 S& |2 ^McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);2 C8 r. _. x% b
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
; y7 ?$ g6 k1 ]" ^3 D$ yMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,- o! Z. Q+ M0 X  E
0x00, 0xFF);
/* configure the clock for transmitter */! ~- `& U( L9 H+ S7 N
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; S3 d4 I: ]2 y/ a# BMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! J  u) Q" \1 h. m8 G
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
9 [# E8 e" \) Y0x00, 0xFF);
, |* K! P; x. U! T6 q
, p# i$ F& f+ X; {0 M1 b, U. u/* Enable synchronization of RX and TX sections */
* I" E7 g2 o8 @* _1 p6 D8 QMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */8 V7 A) J* ~8 t' F% C6 L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' \# Z: ~! g9 c4 O( @) e* |" WMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 g! [/ r9 @8 \( f* X2 B% g
** Set the serializers, Currently only one serializer is set as
3 u4 L2 `1 T& Q( q* H, z** transmitter and one serializer as receiver.  z) i2 y& V& Z/ u
*/3 D* J; q  q9 N" a7 w
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( g/ p+ `' D2 s" Y. U
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
: {4 O: Z0 u0 F3 C** Configure the McASP pins ! R6 Q) L* g) L5 D
** Input - Frame Sync, Clock and Serializer Rx% J' v* o1 W. Q: o) m: j5 V7 t7 X
** Output - Serializer Tx is connected to the input of the codec , u: a- Q. S2 H# `: m6 e
*/
5 \# r- {, q" ^. j! j- y7 cMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) K' b" r! {! x+ V$ x) Z
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));+ h% m  [0 J4 I
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 |: \8 S( [( C9 z6 Q& }% x% Y  _) n| MCASP_PIN_ACLKX: A( K2 I9 ]7 ~  F6 a
| MCASP_PIN_AHCLKX- D/ t  j, q) o2 `: @
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 l% i: s" k) ]1 u+ h7 dMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ( n2 S( b2 r8 z/ z8 Z- X& S
| MCASP_TX_CLKFAIL
& t% R' y6 K/ ^: M* W& K| MCASP_TX_SYNCERROR
/ \1 t, Y% {7 S- ~| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
' ?8 ~6 o2 o9 H| MCASP_RX_CLKFAIL
% R" i" l0 W% ~/ z2 C| MCASP_RX_SYNCERROR & I  g) _; m5 R. Y2 _' a6 J+ |
| MCASP_RX_OVERRUN);" C7 o2 q  `0 I$ J. y
}
static void I2SDataTxRxActivate(void)
. P  @9 h$ d9 G# B& |{% B+ P! @! I9 G$ k( t
/* Start the clocks *// }/ c- u* f4 B' X2 }# r  a
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);. m- _+ t  d6 j6 s7 c
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */; W, u. Y: S6 ~+ |! M5 ?
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,4 s. t  }. g0 g* G
EDMA3_TRIG_MODE_EVENT);
5 j5 b, M6 J* A4 z0 V' X; o$ iEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! c* |% x8 I! M, l' I( rEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ W7 r/ u- C" n- D- [
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  Z& E6 z+ B1 J
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */! R1 B4 U7 |0 z4 D% P4 c: y7 L
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
/ ]! a5 X1 i  Y9 U8 E8 o/ hMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
/ n6 {/ `7 V: ~3 SMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
% t  H, m( V7 |( k6 T) J9 q* V! r}
2 k: r2 W& a, h( u* m% n* X
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' p9 q# I/ t# V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-7 12:40 , Processed in 0.038701 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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