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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9773|回复: 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,: ]3 L* N3 O2 _$ }" K- U! Q! @
input mcasp_ahclkx,
* i$ I- G# o# N/ B. @$ Linput mcasp_aclkx,
6 a0 t* C! }6 T! @4 Ainput axr0,( M6 \2 n3 ]! ^' g; Q2 F# m1 }2 \1 U
  W8 G1 O+ K8 b$ z, D& J$ E: S
output mcasp_afsr,5 S; B- M. C* p/ U
output mcasp_ahclkr,- _' N3 T: e# X) j
output mcasp_aclkr,
+ b& }* v" }0 Q! b/ Routput axr1,
4 S. ]% J* m( F( {
assign mcasp_afsr = mcasp_afsx;, n* v/ s8 \2 p2 J6 l$ j+ ?. e
assign mcasp_aclkr = mcasp_aclkx;! N' t" ~/ v3 Q( s4 F; j5 H# o
assign mcasp_ahclkr = mcasp_ahclkx;
+ o: ]6 m2 X$ |8 F- q, xassign axr1 = axr0;
" l4 X. C- Y, k# [% |2 w' W* I' k
. \. P& `2 l' i( |7 ^0 r
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& @. {  U2 z  u$ Y9 U
static void McASPI2SConfigure(void)
, ?. @" }* ^) G/ P/ z5 b' L{% k+ _( U0 f' P2 _& Q6 u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
  t( I% p$ a2 X* CMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */- J' d6 H" C2 k' P( `
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 @! b! h/ A+ T) _* P7 z- z
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: B" g5 R7 ^0 |) D. dMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 K: M/ @7 @: _$ W+ q
MCASP_RX_MODE_DMA);
1 p/ \, L9 i8 D1 J0 v* xMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ a5 L  m: x. E$ XMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */3 n4 J! h5 R$ f1 p( S- P
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 E9 y3 q- I2 H: V4 I; R
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);4 e3 @; s& A: f' t+ c# {8 R
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
- m: M/ t7 H/ Z$ S( [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 V2 _* y9 ~# \. H. eMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
7 T5 w+ |+ C$ {& bMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ( K2 W: p7 F! [5 e$ k( Y, C9 d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,7 P2 d& j9 x4 k% i0 v
0x00, 0xFF);
/* configure the clock for transmitter *// }! g" Q9 |- u  I
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);( l, z2 i: l/ m- k
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
- v- D% g' P4 T# KMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,9 m$ s" J& Y) H7 _
0x00, 0xFF);+ e- p0 O, I7 [4 _. c1 ]( \
. M5 J# ]  _$ v6 S# Y0 q' d: y
/* Enable synchronization of RX and TX sections */
3 e: D7 U5 l; v5 A% \7 lMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */1 @, K* w3 H! |0 @0 N* M
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);6 Z, D# D6 E1 e0 a! j% H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
$ k) t# P' [" J** Set the serializers, Currently only one serializer is set as
8 [% g% T3 f+ k** transmitter and one serializer as receiver.+ G4 q9 d! Z$ ^; i
*/
: C9 p% {. P% ]+ L& M$ M" T5 }# rMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ F: T) w( ?+ L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*9 A& A( k1 F, N# ~$ B/ C
** Configure the McASP pins
' `9 B0 Q8 C; R) o3 O4 a7 M** Input - Frame Sync, Clock and Serializer Rx
% T" X0 w: A. ~, R, i** Output - Serializer Tx is connected to the input of the codec
5 F9 p* j# n$ a0 F9 o1 B2 u  k*/- S; W* v$ _+ o" u6 i' Z; q8 N
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);% t0 N3 ?0 o/ z% L% l" e/ K9 q' ]
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));) {& e# E+ P, k9 `: t1 F
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
9 ]5 @  J; [) Y! l+ D( Y% }* f* z| MCASP_PIN_ACLKX# e% m3 j2 f* j$ i- V
| MCASP_PIN_AHCLKX
4 p! w1 |5 g, |4 D2 F| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 ^' k' B2 m5 U5 j# k8 R. D
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
, Z2 X: P$ e) v$ T: c7 h| MCASP_TX_CLKFAIL
  A0 O* A3 p% R- B7 D| MCASP_TX_SYNCERROR
7 O3 e# u$ Y8 k6 w| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR   S2 R- `! g, X: d8 G' A
| MCASP_RX_CLKFAIL
' r( K* ]% t) `+ ~6 w" R9 N| MCASP_RX_SYNCERROR
- j/ c8 Y+ Z( J  G- J| MCASP_RX_OVERRUN);
# G# \# N& e( w( L+ P; L& U5 E5 ?$ @}
static void I2SDataTxRxActivate(void)7 K2 v. q  A8 k& ?2 j, F
{
# B$ @7 a8 B7 i5 q: h7 t" A/* Start the clocks */
. B+ T$ ?" \3 t% GMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# ^' J/ y  H" c9 U/ ]
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */8 ~. K/ t  f6 p3 {; [3 P0 O" N
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
# ~0 |- k" M0 HEDMA3_TRIG_MODE_EVENT);- x- A8 A6 N/ d. U5 w- ~& l
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ) [  n3 B! ~* a& Z4 c% z& O
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */0 B* |' o: [: y, l) X
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);. Y8 g6 y( w! q/ A
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  `" u& e  C8 f, x  Y* Bwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  q( e* H  t1 ~! iMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" U, u* J9 N- m, p: x! G4 fMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
- U  S% @% a$ S( I}
* {6 U; J8 v- ?3 q
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

" O' M: |3 s! K) W! I6 q+ ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 21:03 , Processed in 0.045082 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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