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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10446|回复: 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,$ w9 g3 a2 S) V. X" j8 ^
input mcasp_ahclkx,
& `0 O/ z: q4 m" [7 B* N/ Zinput mcasp_aclkx,9 Y) B0 ]5 ]6 P8 r' m
input axr0,) E, R% {' s) O0 l* J  v0 @  l

/ G  }( u) Q0 i! x) P6 L- E& J2 Uoutput mcasp_afsr,! ]1 Y) G2 n$ j! t$ s& w( \
output mcasp_ahclkr,: }$ j5 t! N- R6 W/ `
output mcasp_aclkr,
( t" c+ s! ~$ u" }- e+ soutput axr1,) z: s1 a; j: v
assign mcasp_afsr = mcasp_afsx;
; u' i5 `4 a* yassign mcasp_aclkr = mcasp_aclkx;( c; o# A9 F  f
assign mcasp_ahclkr = mcasp_ahclkx;
% d" \! B8 k1 R. ~3 `assign axr1 = axr0;

! U# y' i" z% R: P0 R4 j$ h3 }3 }" K. d' b
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

7 t! A6 _# A0 }6 X
static void McASPI2SConfigure(void). m4 Y6 T6 y7 z/ t! x) E7 e
{! ]1 S0 m& j: Y- M9 C0 G) ~
McASPRxReset(SOC_MCASP_0_CTRL_REGS);) Y' j& [1 l: I
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
4 Z* m4 r" E  U7 d4 |McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);) z( r& y5 ^% V+ O% _' [7 o" a
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units *// @, S& c% I6 d: n5 Q! x2 _5 c
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
" m/ `* F7 y8 XMCASP_RX_MODE_DMA);, Y) x4 ^7 a2 [# Y; v4 n, T6 N6 f
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,( C6 b6 _# g4 U4 J
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */, c+ f( \/ e7 m9 q) ?# C5 Q
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
) i' G  {( W  ~3 j; ^MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);5 |8 C0 U+ }- p* m, N: r; I7 A
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ' |' g! Z, A5 \3 P  j; K( F+ p- _
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
) u* @" n: Y0 F" H) c8 ^8 qMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);7 M) T+ G6 m) J& l
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
$ l5 J- U  L  wMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
# r) @7 F! _! Q4 P+ B* Z' o+ E* D' o0x00, 0xFF);
/* configure the clock for transmitter */
# f" W' `7 u6 ?% j% c! D4 Q: |McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
  N; x) i- j" l8 lMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);   B0 h5 R$ Z4 _) u4 W# _! a2 q
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 W/ C2 H# m, t1 r; j3 ]; |0x00, 0xFF);$ v3 s7 ]8 ^" j' Y* l/ \% \' i

* C  U' Z& I0 K. k" T/* Enable synchronization of RX and TX sections */
. n$ V% m& l* x1 VMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* _7 [9 `8 \& |* ], ^* T+ g7 ?McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' u$ t& K4 h; V/ C& V, |
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
2 u3 i. V" X9 d' d0 [** Set the serializers, Currently only one serializer is set as
( o4 l; U8 @1 p, a2 U; X** transmitter and one serializer as receiver.4 z+ j) w  E: R: T0 X3 d
*/& c4 \3 ~* r5 Q& R4 Z6 o6 [
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
% c( |" i) F* T% s  n  @( E+ {/ b% LMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*2 u1 M, l6 v* }9 B* i  M' {
** Configure the McASP pins * X9 Y' \( i6 ~( r2 w* M4 @. e
** Input - Frame Sync, Clock and Serializer Rx2 Z% p+ k7 V# P0 h- l* P
** Output - Serializer Tx is connected to the input of the codec
2 O" s  q- v4 t% U) A*/& d5 N8 a9 f- I( r6 M# x
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 R, H/ }1 q6 {, M# C: S8 P
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) |7 m% l/ Q% n3 Y; O& x+ @* PMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 j/ M! J( l. v- Q| MCASP_PIN_ACLKX. W5 ^% E0 V/ t( N
| MCASP_PIN_AHCLKX& R' v. p' ~. x( K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
4 t4 w5 O" ~+ m5 B6 @8 a' aMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
  [% o+ Q/ }0 q& G5 M6 ~: a3 j| MCASP_TX_CLKFAIL 7 Z4 N# S, N, O( r
| MCASP_TX_SYNCERROR
' F3 ~' r/ L+ q8 S/ p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 g5 m+ }: _, ~. D2 U| MCASP_RX_CLKFAIL
0 a  @, i* K- F) }1 n' Y, w| MCASP_RX_SYNCERROR / i) a: l# }2 k
| MCASP_RX_OVERRUN);
/ {: h: {7 _1 @' C}
static void I2SDataTxRxActivate(void)
) b$ ~6 p2 i0 P% i/ K% m$ \{
6 L' Y0 k7 k9 v, j4 S+ }/* Start the clocks */
+ x* q6 A9 m. A: {$ @4 K& O( ~McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);/ R9 F6 v9 _& C# l2 r- C7 c7 B
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */* I9 V1 e, r" g7 R- ^! s9 g1 m$ Y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,  _5 }' @7 g, a+ K( ~5 ^
EDMA3_TRIG_MODE_EVENT);
7 f: p4 O5 U1 U/ ~: DEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
; m* f6 M2 {" T5 [  DEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ G9 N' H$ g6 R' f' |
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);, K$ p. b" Y' V7 c  y; ]
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
! g8 F9 m1 h2 \/ P- C9 zwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 Z$ q9 {6 }7 N2 Y7 h. S0 E  W/ D
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);. m. U4 ^! T) n7 q) Q" x! n
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
( I% N3 W, H* n. K6 O2 N, @}

( Q: G2 Q. l: k9 ^
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

' S* Y% x$ k% m8 ^; p; b( c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-7 01:47 , Processed in 0.040499 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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