MCASP自环配置。 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 5776|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1193

积分

金牌会员

Rank: 6Rank: 6

积分
1193
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,$ u' c7 G) a% Y, Y' [
input mcasp_ahclkx,
8 j: f8 ~, t, _input mcasp_aclkx,  x6 i7 D- ~7 J  n. `3 d1 k8 k
input axr0,
+ F" G' j! r6 |" a( N
+ o" m2 N1 I* w0 noutput mcasp_afsr,
- A0 O' _% s1 u+ O6 Ioutput mcasp_ahclkr,
& w2 w/ w5 F. m, ]0 boutput mcasp_aclkr,6 x0 V/ G; k! [7 L# u! X7 k
output axr1,. d, U) R4 E. Z' A* C9 q9 q9 B2 v. Q7 K
assign mcasp_afsr = mcasp_afsx;$ }& f0 w) ^) q+ m; k
assign mcasp_aclkr = mcasp_aclkx;1 Z  i: f$ d* s" m! A7 a
assign mcasp_ahclkr = mcasp_ahclkx;
0 o9 o6 `1 |8 ~2 S6 Q! `3 yassign axr1 = axr0;
/ c# v. u3 W4 Z. O

0 T/ \# }% R9 r, t
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

& a! v% k8 J! W6 `9 O8 ~* _" ^- M
static void McASPI2SConfigure(void)
% C4 P- P. C1 m* X. c$ I# S{% E) R+ M/ A! \3 L/ n+ ?; `
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 {& R' Y) r. n& Y  E+ x3 g9 K# hMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' l! w! a5 o1 o- g
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( {" R. n3 v1 ^& F
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
9 ~: h, S: ~: M) TMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ s& A( s1 k% C7 N
MCASP_RX_MODE_DMA);
# P1 O' j) g8 K' GMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
8 P7 v9 h! Q# d& z, w/ d+ z  OMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
: U# F' [: Z( y8 m  h" \: {McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
# y, w0 t. p" b% L+ r3 S  VMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ J# S2 e# y, B" A0 R  k) ^McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 E! b# w2 B# t% LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver *// B0 b' ^0 k7 ]
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);8 t9 [. H: V  E% X8 R1 |
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # K' Q7 `! _8 C
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
! @4 B- D0 }1 j9 y5 W; K2 R: `: B& g2 n0x00, 0xFF);
/* configure the clock for transmitter */
; G$ L# S1 p' {2 c5 oMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);6 A: H* a' n( g; {; z& x
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # U" H9 H$ E6 p+ @4 y" T
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,4 r3 ]7 {' j5 B6 {% c7 `" {
0x00, 0xFF);
5 ?- g+ e; s3 g# F1 }; r
: P* n5 ?7 f: H/* Enable synchronization of RX and TX sections */ " L- [# M& G; i) I
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
( c9 m4 |- ~" dMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
+ B5 q% {5 w, P/ w9 |# n3 h* BMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 D4 C7 S% p1 A. b** Set the serializers, Currently only one serializer is set as
1 k: p6 r5 Z$ S8 q** transmitter and one serializer as receiver.
2 }, u+ M! _8 p4 F*/1 o  v3 Z+ R6 W" L
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& @6 C; B, ?/ K" ]" N
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
/ }' o: F4 f% m! ]# D! X** Configure the McASP pins
/ Z& r6 {0 E$ y  ~** Input - Frame Sync, Clock and Serializer Rx2 y% Q% M1 A. R) R$ h( J1 C
** Output - Serializer Tx is connected to the input of the codec
# O5 s* C. A1 }*/
3 [$ n2 J0 e9 r: F5 q& uMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);' v) V! E' m; g
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));: Z3 i' c; p5 v
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
; `! S5 c: J0 ]) x2 H9 ^( T| MCASP_PIN_ACLKX
9 F- ]2 e# u5 F3 V5 n| MCASP_PIN_AHCLKX1 j" ]. c0 I8 j/ W& {
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
$ {( Q; D2 W8 l7 p$ d# UMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
+ |! D5 D! `$ u! b- O$ F1 _| MCASP_TX_CLKFAIL
  l5 ?; H! L" k0 B# t| MCASP_TX_SYNCERROR
* n. R: \8 m0 M1 B$ A: ?' p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
, }; U" y! i. S; z8 {( W| MCASP_RX_CLKFAIL3 I. n2 ^1 C% l% p$ o; W. w- F
| MCASP_RX_SYNCERROR % C& [4 ~" a. {! t2 n0 H3 i
| MCASP_RX_OVERRUN);
+ t. z9 i; w- y' M  Y0 ?* W}
static void I2SDataTxRxActivate(void)
% m3 U9 c  M5 x; H{
5 D: u7 L' V/ W8 Z; ~1 g0 E; I! Z/* Start the clocks */
: o% b; R+ Z) Y% w2 N* L" kMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
3 b9 h5 x8 A$ l* y& G$ ^McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
1 p, v% g$ W) I5 G9 b9 m7 eEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX," ^; `- p* _! {# x
EDMA3_TRIG_MODE_EVENT);( [( X9 ]) r4 ^5 u
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 h$ a5 q% N8 g/ r0 h3 ?5 z- vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */  I9 D7 b5 Y- G9 e
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
6 `0 ^: q7 t+ A: g3 a( C, M9 [% aMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
5 ^4 T2 X( m: t1 @" mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
0 x7 ]1 h( O, W& M) yMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
! i4 h; Z9 Z9 y( m9 L, K* XMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ x$ D. A* j0 R6 B
}

8 m8 b; o/ y$ A6 i5 S% T% c6 l
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; \$ ?4 `6 q# Q8 ^5 @3 F! Z, T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-7 02:14 , Processed in 0.052147 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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