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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12051|回复: 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,9 h2 D- j' e* `  _; n; J0 |
input mcasp_ahclkx,
. I/ Q$ C! E9 s7 p# k/ y& \input mcasp_aclkx,' P% G9 T% I7 E' ]4 o. ?) i, V
input axr0,0 ^1 h0 ~6 j1 E2 a

4 N4 u) D$ f' h$ i8 o+ uoutput mcasp_afsr,7 ]6 Y: ?4 U, ?' y
output mcasp_ahclkr,
+ C7 n4 u8 g! ^5 }& ooutput mcasp_aclkr,
. u9 ?: M8 R: X/ u7 woutput axr1,% Z& J; l8 V; y! F' u: I0 n
assign mcasp_afsr = mcasp_afsx;) P, ], w" O2 p  B3 r
assign mcasp_aclkr = mcasp_aclkx;( |* q$ O2 ]: @9 x& v" J/ f
assign mcasp_ahclkr = mcasp_ahclkx;
$ ]9 }% w8 t- C* Q7 Xassign axr1 = axr0;
) ]. Z) {) Y, [, B2 p; D* V
! U( n, w9 O: G( j: b* f+ r: ^0 q
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! o: i9 k( ^1 E- B
static void McASPI2SConfigure(void)
# N% j2 i, W0 z7 ~{. {9 q7 M& S2 K) B2 O7 S
McASPRxReset(SOC_MCASP_0_CTRL_REGS);3 O  g( |! K% Q" P( z3 q
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */; W. t4 \# e7 L# V6 {' x- y
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
% ~" j0 q0 p* T; YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */. v% U6 }/ X, x) q' s4 R  ?
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* d# @9 y  N, m
MCASP_RX_MODE_DMA);
; m7 x! m7 h! B" b5 E7 s+ D* D% OMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
1 r) n4 L0 _: A* oMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// a+ p3 d- N( ?$ _0 n& F
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
7 w  y& \9 G$ g' aMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! ]  s: _/ W: R+ EMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 H: j7 V# G# ^4 A& a0 t5 MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
% G9 U# h' T' I& zMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 q7 M* g+ x7 m7 A: L% {McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); + D8 Y# ]+ _4 k+ G8 _
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
( b. k/ O! s* ?; `  _/ B0x00, 0xFF);
/* configure the clock for transmitter */
# Y0 m( M" F5 s6 kMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
" C. A& @) }+ x+ }$ h, wMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
9 |% i$ k8 N* V- @3 B9 P8 YMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
2 m, N" _& e( x0 {  g0x00, 0xFF);
  p' [: N$ j7 `/ z
2 ^; Z% P& G1 ?1 u$ x! n) q" k- J/* Enable synchronization of RX and TX sections */ : k/ A# h* @3 A( \
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
8 w8 k8 e; I% K  w7 I+ A0 \McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);7 n- ?/ V9 i! k" p
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*5 R* P8 u6 d# I0 O" g  K* G' ~
** Set the serializers, Currently only one serializer is set as$ \; a- R" U! r" ?
** transmitter and one serializer as receiver.
. n3 h: u  z/ z3 s. y*/
( d! A; |6 N% e" {3 v! q  P: WMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# U4 `3 F2 ~" @2 s6 s& zMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*8 [3 L9 A0 V. L0 n
** Configure the McASP pins ( r; `& u  E: v3 ], |
** Input - Frame Sync, Clock and Serializer Rx& I7 e- l' c6 p; M
** Output - Serializer Tx is connected to the input of the codec - `5 {- B- B- c& _* o- B
*/
/ d$ X  |* A% a9 K. Q  u" nMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 M) f- }0 c2 K) F/ p( w
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. e6 @; `# m) x. }1 T
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
' d! D2 z) e2 g| MCASP_PIN_ACLKX& }( W  H1 G) T& M9 N# `% f
| MCASP_PIN_AHCLKX' k0 j. `: B/ B/ a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */' |0 L/ D4 `$ X6 Z
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR # l, N! {" t% ^0 v' \6 m) B  j3 I) `& z
| MCASP_TX_CLKFAIL
& m& z3 {1 k' V, M| MCASP_TX_SYNCERROR9 A" w8 j! r* Y# [9 f- G2 a8 N$ [( ^
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
/ r, I" `" P3 V4 \| MCASP_RX_CLKFAIL
4 N) D7 c1 H  K1 }+ k( n$ ~| MCASP_RX_SYNCERROR
7 R5 p- Y1 p$ w' I/ k+ k| MCASP_RX_OVERRUN);
, ^( t/ Y4 Q3 i& n1 \/ n8 X}
static void I2SDataTxRxActivate(void)
# D$ U# }9 j" _/ V% S{3 W* N. x* `$ ]" o: N
/* Start the clocks */5 ^  u$ X4 A- f9 k( |8 i( B
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);& _( E( f# ?# L  d0 A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& |1 \0 ?# U8 S- x- L: c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 Y0 n7 g& [6 }0 r: p+ S: B
EDMA3_TRIG_MODE_EVENT);9 ~+ ^1 R0 m+ m0 M% a3 T
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" ~! Y% b/ i+ h% p) [8 c  E. tEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
2 Y: D: @* U) A  s( t! B( gMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);3 V( ^) F) L3 d5 i
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
7 w2 e/ x* T8 a0 ewhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 \/ Y. N# M$ W: O
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);. O# P3 o5 Z" S- n2 w
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ H& ?- U' I4 Q4 @# M- _8 L}
0 z) g% P* \' S% F0 x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. J8 [' S& T2 u9 V2 S5 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-25 14:05 , Processed in 0.041087 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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