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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12407|回复: 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,  W% p/ O! W( L
input mcasp_ahclkx,$ S/ H: g9 I. H7 F7 d' r
input mcasp_aclkx,* Z% s8 g: l4 Y  P
input axr0," y8 a# V1 r' O& I

5 k1 [. ]$ {& routput mcasp_afsr,
, C: ]) k( H4 I+ soutput mcasp_ahclkr,
, y9 Z; l3 E! u( I" o) b0 Xoutput mcasp_aclkr,- C  d4 G' Z& t, s0 Q! M
output axr1,
8 g. D8 U% L& ?( I) P/ v6 d2 a
assign mcasp_afsr = mcasp_afsx;# y9 M; w9 V& D0 q
assign mcasp_aclkr = mcasp_aclkx;. J/ g! M4 F1 z9 l5 Q( L: F
assign mcasp_ahclkr = mcasp_ahclkx;7 r: S8 ~8 d5 p! P6 x# u7 W1 W
assign axr1 = axr0;
' {9 l% j! N1 c4 \( c

9 @! A* I: b0 Y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# p+ ^/ ]0 y5 u5 `8 i
static void McASPI2SConfigure(void)
6 o7 d  s! I5 s, R# U" m  {{
1 z% \$ H. D$ l2 j; i3 f# q0 L! O, DMcASPRxReset(SOC_MCASP_0_CTRL_REGS);! i0 Z, X# f* X8 Y7 S
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 m. v% ~  _5 ]8 d- A+ |4 x! P
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 U) z# B- U/ i/ FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */& G% W: I: J4 p  t* m
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
3 [, j; v  c# l. JMCASP_RX_MODE_DMA);
, \, i% |4 p+ |8 r: T$ Z+ vMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,7 @8 f! _# m5 p2 W# _; A
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
4 _/ E- w' L- r! HMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 j" D9 l) i. T0 D* T5 b" P; [; ]
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 @5 c& d) f8 V) {4 s
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. A- d/ f- W  W) ?2 J/ M2 sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
, T# I) L5 ?9 r5 [& X2 MMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
6 k0 y0 r1 R' N( x( D9 ]- f0 uMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
5 u. |! \' i6 b4 v- R4 q! s4 N8 A. CMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
+ X6 ?/ N  |. m; K. w0x00, 0xFF);
/* configure the clock for transmitter */& k1 ^4 \& n& D
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);0 o& D! y2 }5 d
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 y( _% X3 k' h9 ~% Y3 l  ^McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,# s: j+ ~+ p2 b' Z2 T1 O
0x00, 0xFF);
  S) t: r  s; Y- P4 ~2 ]( d
% f; [1 L* P1 z4 p* J$ N/* Enable synchronization of RX and TX sections */ 0 B8 C: }+ C& f9 N$ J% n
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, O1 f- u4 B$ N- x( k
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 @- r( |9 W# {' }# u/ \/ w1 m
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*$ u3 w9 n0 W+ F
** Set the serializers, Currently only one serializer is set as6 O5 t5 }$ F. _6 x6 d
** transmitter and one serializer as receiver.
( Y( G* j) P5 {0 [  B, {*/
6 A( g  ~/ Q6 @+ KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
: d2 @" E5 R2 q4 }McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: K8 J; [# H9 ^6 z3 E
** Configure the McASP pins
5 m1 Z, T7 f+ E7 f% @: H0 X" r8 s** Input - Frame Sync, Clock and Serializer Rx
' v% h- f5 _/ e: C** Output - Serializer Tx is connected to the input of the codec 3 C( v  x1 l/ d: }$ a
*/" u' h; x6 F4 z5 `
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
8 e+ q1 S. B/ _, M+ \- rMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));/ M% Z& C/ A9 n" Z# y1 r1 t9 y
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
* D' c: }* J' D; Q7 {: q$ G9 W# T| MCASP_PIN_ACLKX
& A. [4 ?7 w3 \1 L# [| MCASP_PIN_AHCLKX
; j2 q- G. G, K9 d; Z/ z1 D  ~| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
1 ]5 P" t; H  X; oMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 p9 ~# k& D' ~3 r( O| MCASP_TX_CLKFAIL
" B; K( q) D1 N$ T0 S' Q" P. B! k| MCASP_TX_SYNCERROR8 r2 K( N0 {6 A  a. o! c
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR . n' F; o* R; |- ?, Z9 m0 I) @
| MCASP_RX_CLKFAIL4 W! u" E4 F/ ^3 ]; H; ]
| MCASP_RX_SYNCERROR ) B- D$ K0 J  _  v
| MCASP_RX_OVERRUN);
% H8 N/ W7 \( t! W, {}
static void I2SDataTxRxActivate(void)
; H3 B6 n4 @6 N( o$ _" ]9 g$ x/ Y{% l$ h4 v- Y# j! C2 o- n- |# y
/* Start the clocks */; o" h, b9 e7 z& [: Y# M
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);6 X8 c7 Q1 G4 H# J
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
% ]+ z- ]; K  l+ ]EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,2 ^% x+ S7 H/ M
EDMA3_TRIG_MODE_EVENT);
/ O/ x. M2 F, t- x1 NEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! e4 o4 \, Z/ J6 i5 _4 ~
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */4 p; K, \3 w4 P7 D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% S" \6 r+ T' s5 M9 q- ]
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  ^/ N8 W( s& Vwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
; [$ w2 M! e- ?! E  F1 L% bMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* M3 T; m! X* l1 v6 d2 w& PMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);- D) U1 j8 P4 v# L( l
}
5 L/ l7 p9 [- ^  u
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 F5 K5 C- I1 W3 ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-8 00:03 , Processed in 0.041965 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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