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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9711|回复: 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,
& w$ B, n& L- H/ Sinput mcasp_ahclkx,
. B% n  Y6 U% N  ?, D2 T1 K9 Linput mcasp_aclkx,
& {% C; t; O( N, @input axr0,: h  D$ \' }* T4 P' \& o7 a

7 o$ [# B' ~2 J9 S' L2 coutput mcasp_afsr,; O1 H( N' X0 K8 l" P+ w4 w
output mcasp_ahclkr,
% z7 O+ \$ B; W* Woutput mcasp_aclkr,9 S  k/ B/ m, d# F
output axr1,
5 O) h3 M! L+ z6 L7 p& Z) s- U. \; F
assign mcasp_afsr = mcasp_afsx;
' T/ x( z7 a5 k. eassign mcasp_aclkr = mcasp_aclkx;# X4 {* `; E' C  {$ c/ G. J$ C
assign mcasp_ahclkr = mcasp_ahclkx;
0 U) I  r6 F8 A* n, Y4 nassign axr1 = axr0;

" K" \: b/ {+ S, x9 M4 ?$ b. g; d
- l8 [; w; C# J2 F' N3 p6 X4 Z, E. ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

5 U4 `: f4 b1 Q/ Q
static void McASPI2SConfigure(void)
3 A% L( B) r5 b1 n{
  C) V0 Y0 K, s" ~( d7 f: xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);5 n3 z+ i& E  b! e4 o
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# F0 a4 @5 w' r3 ~+ j1 ZMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' y! W7 F4 A" C6 i' G8 V0 HMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
8 ?8 P9 q2 d0 }: KMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
5 P1 @! P; R% ?8 a, e3 P4 {MCASP_RX_MODE_DMA);6 T5 G- Z' C/ a" F1 h2 I$ m
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 v5 P, S' y  }" |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */& w8 L7 V) {% Y9 G5 ?2 `% y
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
8 s. _! L% N* d8 p! yMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);0 @" \' `7 a1 C( J, z( }' o
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 l1 {; r0 ?; j: J7 t& ?% [MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& h2 r2 ]' H2 K* B$ xMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
5 t" d  U, o8 K( V$ d1 YMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
7 }  R" V3 |8 t8 ]) UMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
' y  D' C! i: U. k+ M  T  _0x00, 0xFF);
/* configure the clock for transmitter */1 c5 K! G( g/ }; l+ u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ P% ]( r# _+ {7 V; ]
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); : d6 m( X( W. \" Y, a4 T
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
0 q/ d; ~: L& ]* y% q) S0x00, 0xFF);
2 T0 u: |8 f/ z) @' ?: Y6 `# j; f+ h  i% c5 R0 Y$ a  Y0 |
/* Enable synchronization of RX and TX sections */
$ y7 X, \9 `/ W* _McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */& l3 C, X: C3 c% m) w; Z6 q
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);; T4 a- i8 \. Z/ e4 q! ?! E
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
) f- U" G+ y. Z% v4 e# Z2 [7 p. ]** Set the serializers, Currently only one serializer is set as
# @$ T( Y7 g5 }7 ]2 p: q' e** transmitter and one serializer as receiver.
6 e, K) j9 u/ ^% E5 d*/% s1 m" N$ ?  z9 d" B$ y
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);1 a. D- X2 b  ?: O2 L
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& J& _, X4 b" Y/ M
** Configure the McASP pins
* A0 G3 N: P" ]( V& F** Input - Frame Sync, Clock and Serializer Rx
6 I5 x4 t# P' `: R& T' u5 _; D. T** Output - Serializer Tx is connected to the input of the codec # ]  Q. }) B# H! g
*/
% I. v0 d7 x9 Y% H0 OMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
0 {! O8 I: L/ k( A% EMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: ?7 p" @+ W  r9 s
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 k0 y) \9 W; w4 v! j0 D| MCASP_PIN_ACLKX
7 `6 m6 W: U: Y; s0 q| MCASP_PIN_AHCLKX5 @& r( F3 C- [
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */2 T2 `/ [4 G8 \9 V* g8 [4 Z% G
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
% i" K/ j# n" M| MCASP_TX_CLKFAIL " S4 ]- q4 t& ~0 ]5 P
| MCASP_TX_SYNCERROR  {3 n/ y4 Q9 j+ m2 Q5 ~  f
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 5 E' ]9 T% y. X; p
| MCASP_RX_CLKFAIL- T1 G+ k; r: l
| MCASP_RX_SYNCERROR * K, x8 p' S9 w6 V% C5 C
| MCASP_RX_OVERRUN);
# i4 W( M# |, E1 o}
static void I2SDataTxRxActivate(void)$ R' B1 A' m" w$ S
{/ g$ l: B- e  q0 J. e7 [: u* q
/* Start the clocks */
$ r/ N% T' j" i/ j/ K$ tMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
8 Q# V) _$ y; x# b- I; m5 |McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */+ E7 R# j2 i8 d+ j) ~# |
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,1 U$ Q" g8 J; i' C/ h0 |! X# o
EDMA3_TRIG_MODE_EVENT);) J  o) C: z( J9 _2 l- }+ e% b
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 ~' n/ p/ G! HEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */# N3 m# Y- J* N" k& g
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
& \8 T9 I; p! U3 cMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */3 @- s. G% Z. w) C( }
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- R# K3 s; t) lMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
# k7 k$ k5 V! o" S# o- }, S- uMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
. V, l2 N5 I% }}
- P% n8 L; p) |. \6 ^' w
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

! x, x1 i; \0 G4 e, }" X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-18 03:35 , Processed in 0.038084 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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