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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11706|回复: 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,
( x" }' u6 X" z( B' R% S' w- sinput mcasp_ahclkx,
. m. A9 O5 z/ |: Xinput mcasp_aclkx,
; w/ d+ ~' M  |' h0 i7 |# k* N0 {input axr0,6 Z( h5 M% p9 t( \9 B) w& q

; E6 v, A) L- v9 C+ houtput mcasp_afsr,
6 G% P4 c" C% {, A& q0 ^output mcasp_ahclkr,
1 C0 f+ p7 ]$ w! c$ s& moutput mcasp_aclkr,
/ ^- n8 ?2 _  [2 W: e: ?" Eoutput axr1,, M! _0 d. ~! `6 h$ x& p
assign mcasp_afsr = mcasp_afsx;: H2 s3 I5 u1 T) J) ~) q5 R
assign mcasp_aclkr = mcasp_aclkx;+ B% C$ T6 ^* x) [! K
assign mcasp_ahclkr = mcasp_ahclkx;
0 w8 n" r: q/ K' \) Z( Sassign axr1 = axr0;

/ o+ \1 X0 G+ [( ^; z  o4 [4 A* R, ]5 {& @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# O6 r/ N7 \% `9 d  T5 F
static void McASPI2SConfigure(void)
) [! g! d8 d( T# E{
& H- \5 z% H0 n1 ^McASPRxReset(SOC_MCASP_0_CTRL_REGS);
- F) T, m; A' S3 V2 T7 H# e1 OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */4 O7 C$ f4 G% W& f
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);$ g5 p$ D! K- X4 K4 }
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
+ h4 w* D' q. z1 B) dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,& m4 K2 ~3 e, v* ?- R! N* _
MCASP_RX_MODE_DMA);
1 s! ]% L# l1 F( F7 VMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 e# m5 |8 \2 M7 S! _! I3 yMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */( ^; T2 H1 M8 a  }
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 D# ?0 L, @4 {- n8 D
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);" V+ v: B0 C- F2 z, l2 d+ a
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 8 h# K( f( H* n* [9 F5 p' b1 ^
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 T  D* w1 c* e# w2 o
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
9 p2 d8 X9 Q) o+ V+ }# uMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
1 R5 S( ^, G' Z- }2 JMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; S6 x6 a% J3 H6 I
0x00, 0xFF);
/* configure the clock for transmitter */5 Z9 `: B! M# b* Z
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
; Q8 v2 |' P: Z# r- j: ~McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 l4 z- V+ i+ d+ EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,( I7 Z* p" B' X3 g: s& }
0x00, 0xFF);
5 A- N* y: G, h# o4 V; \1 S$ \3 U2 F2 a9 R" \
/* Enable synchronization of RX and TX sections */
) ~$ o/ u- {) P7 B3 s5 ^1 `McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */3 O* y+ b7 {# `. {9 Z9 m& j7 p
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 z8 D2 L: N) p3 {: `" \McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 y4 e7 R+ F8 X1 g* f  n** Set the serializers, Currently only one serializer is set as
! l1 [* ?/ U3 C; u/ J9 ~4 {** transmitter and one serializer as receiver.: t, a8 ^/ v/ h8 @* v2 [# F
*/7 a, b, r5 }. k6 F, q9 S& w: X
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: O# n6 Q2 H+ B7 T7 A( O* s( tMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
8 O, ^) q* U, F* t0 L. |) G! p& Y** Configure the McASP pins / I. P4 b* O3 J; f7 h
** Input - Frame Sync, Clock and Serializer Rx
6 v& ]' P+ r$ G' l0 P9 G** Output - Serializer Tx is connected to the input of the codec
9 {  e) k' Q7 H*/
' I  p# d6 B+ p% V: x7 DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
2 K* g9 B( n/ r0 s6 |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));, ]3 D6 e/ u. H* t8 v4 q
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* F+ l6 A7 }, q" N' n| MCASP_PIN_ACLKX
6 ~7 S4 q/ T, z8 h$ i# [4 b| MCASP_PIN_AHCLKX: `" p7 v) b' Z/ Q) t# H6 ~) w
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */$ v5 B2 [  \! [% N$ i$ z. e
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 b9 b. B/ d* V) ?4 C- J. n| MCASP_TX_CLKFAIL
4 R; c) Z5 k1 V  v| MCASP_TX_SYNCERROR
( F9 }" n+ }0 O4 K| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 2 E3 N# ?9 g6 u6 c3 |2 _
| MCASP_RX_CLKFAIL% H0 x6 s0 d/ r* i' L' F) d' q
| MCASP_RX_SYNCERROR 4 O# G; H7 [& p$ a4 f
| MCASP_RX_OVERRUN);
* H* F, n' d! G) O/ L}
static void I2SDataTxRxActivate(void)% b1 l( L) Y2 {8 s0 t
{7 T. Z2 a- _( Y/ V# o
/* Start the clocks */
% G5 K8 A+ \  t- bMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
0 G% ~. k( S) Q9 J9 i2 J' y) eMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
8 n0 f0 l! Z6 |; G2 fEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' e  P* N8 F6 W0 [' a  b+ _* rEDMA3_TRIG_MODE_EVENT);
& [1 l+ Y% `* E. \5 vEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
) A/ @! q; M# H6 }0 }EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */$ _7 k9 V0 d2 O; H) [( z- I3 ?, i
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);- P4 F3 A0 }1 q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) Y& ]. [( K4 `% H' }
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */; u- v8 F1 D% I! P. \
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  U+ d4 T) Z3 d! a) X" Z
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
  @! N6 L+ Q2 m0 F7 }& Y}
  X+ w+ [7 h5 d& A/ d( G
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

3 L8 @3 j: v! m& V7 F; j/ k( d, a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-12 06:05 , Processed in 0.040677 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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