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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 13105|回复: 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,
$ |, b. N: r1 F: G; Finput mcasp_ahclkx,3 @0 z' \8 A, s% T
input mcasp_aclkx,9 @' X  C: ~, \. ^4 j' f
input axr0,
4 [9 L8 G' M$ O* T' g* C0 |$ J; v7 u2 x+ Y# }- E
output mcasp_afsr,
+ f; [4 ~6 B  M4 w& F, H3 eoutput mcasp_ahclkr,2 Q4 C  E1 k! Z$ w0 [
output mcasp_aclkr,9 ^2 J$ {3 |: `4 }# E2 L: n
output axr1,
  }! g' e( U% g' u9 K! n
assign mcasp_afsr = mcasp_afsx;
# Z# I* v9 ?% r* ?* gassign mcasp_aclkr = mcasp_aclkx;
/ w1 s; C. v4 A# Oassign mcasp_ahclkr = mcasp_ahclkx;# g5 S+ y( @- ^* Z7 y) u' o/ c
assign axr1 = axr0;
" K7 `! s/ t' V7 Q

! T' X/ h, e. Z0 Q' y1 s% f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* S: D4 }3 n/ l6 m# @& }$ m
static void McASPI2SConfigure(void)
1 F8 t0 j6 G. i{8 J% N* s2 {8 s# k$ s! ?
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 L" B, z& e; |  L! ]( j$ M, f" MMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* ^; z4 B# R# M. rMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);7 T" U! G. @: i
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. i0 p, l9 G: @
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; Y1 i9 h! L% M
MCASP_RX_MODE_DMA);) i0 n: {2 b5 C6 ]. M) J
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( e/ x5 Q5 S6 U- R: B9 O4 C
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* S; T) J. y( M, \! zMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 Y) N6 x4 @( I0 S" l. n& U" f
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  ~! b9 J. q! L& C! J3 T! yMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
3 n0 o) C  y2 e6 i( L! KMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  w% [5 V+ m& z; h/ h- G" I
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);& o1 ?0 p) z. N9 j7 x5 t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
& {& S5 J* p: a2 K- NMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
8 ^, Q6 q1 r7 k0x00, 0xFF);
/* configure the clock for transmitter */
/ D( S8 v( a9 _! wMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; n9 `( Y: q+ ~. n( N7 \McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); 3 W7 K  B7 L& }+ y
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
, ^' j, ]* Q3 }: O/ o0x00, 0xFF);$ a4 N$ M5 \* k3 z2 I" [+ p

& p- B, d9 q- f; o) ]) B% K! F. \/* Enable synchronization of RX and TX sections */
/ S2 H8 H% U8 ?! O4 t: X' z* PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */  [8 x* d7 @1 f- G2 Q' Y( H
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);$ V* {! Z8 D! L' c! ?
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 e: r' B& X9 v& K9 b$ t* {
** Set the serializers, Currently only one serializer is set as7 {7 G/ ?" w. v: D2 X% z- w" y0 a  S
** transmitter and one serializer as receiver.5 d6 X8 p/ p% M0 L  N0 {& j
*/
# K0 \/ V; T, \! ?0 d) rMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);" a" E2 L0 T% @% T# _' f3 Y) E
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, m( e& I5 k* G% |2 C' {* E** Configure the McASP pins $ u. l! W3 S9 ], z; r& f! X3 t" H9 T
** Input - Frame Sync, Clock and Serializer Rx
! `# |1 @4 l9 e$ J5 T. k0 V4 [** Output - Serializer Tx is connected to the input of the codec * S4 C" u1 ]4 C& f
*/
- C- C) s# M0 Z8 e5 W$ m  f( t2 MMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);- G" M6 S* x' p' i+ e3 o; K
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
7 U3 U, o) ?5 P$ Z! B6 zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
. G6 o( k: L+ @: f! J0 O9 o& Y  h| MCASP_PIN_ACLKX: _; ~- k9 b% F% g, m/ y: q
| MCASP_PIN_AHCLKX
* s( \5 h* M& I7 r2 L3 z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */5 l6 m+ M4 U6 R3 L' O- U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- v( W, h) ]& |3 q6 r| MCASP_TX_CLKFAIL
- _& T! F1 k% n| MCASP_TX_SYNCERROR0 S6 v7 e$ l1 `+ R1 g% V5 T
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' E# P' f1 J. R9 u1 P4 R  Q) N4 @8 v
| MCASP_RX_CLKFAIL
) d% J6 @  P# B- h: ~8 R| MCASP_RX_SYNCERROR ' t# o; s$ |/ Q7 z# y0 W% V
| MCASP_RX_OVERRUN);
  ]+ f( ~8 u3 F& ^% X) G}
static void I2SDataTxRxActivate(void)
$ v- N& F, N2 k6 z+ ~, O{
) X4 G% R9 l- _  ?  }" Q/* Start the clocks */
3 ]- M! N$ P* N; B0 xMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ z" O# a+ {! f- Q: c1 X/ EMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
) p& V/ S8 U3 n: BEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 P# |" Q8 l8 [+ H
EDMA3_TRIG_MODE_EVENT);
6 T% Y  s9 U  U6 q; BEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 5 v1 T8 H& Z& e, F, W6 m" O
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */( i, P8 [/ L; @. R
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);' I& L- U( T4 N) F" ]4 P- m# ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 S. y% @6 C5 ]while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */+ Q% {; N/ ?( Z  H7 k+ S
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
9 M) v$ x% h; {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);, W' x, Z6 U+ u, S) E
}
1 |  Q5 H. ]) o
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
& ]' H- ~8 F  K; J, ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-24 21:59 , Processed in 0.054770 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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