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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
# `7 n+ v+ z5 m/ f1 ?; Z: ]input mcasp_ahclkx,
. ~7 _& X& z" C9 W7 Yinput mcasp_aclkx,
' a8 e. A/ S% T$ J5 l3 R. ninput axr0,2 l& V7 L3 c" f# ]; l  Y: {
2 H5 k. E; R0 i1 Y8 K+ o
output mcasp_afsr,4 L" [* @6 S9 x# i4 m* z7 V1 Z# {; o
output mcasp_ahclkr,  v% c+ _+ x* R1 j$ V
output mcasp_aclkr,
+ i' z1 x8 ~2 woutput axr1,
  O2 R3 p' v3 `$ j9 {- \0 q
assign mcasp_afsr = mcasp_afsx;
+ G( `/ {2 o, `assign mcasp_aclkr = mcasp_aclkx;
/ E* Y$ `* r* |assign mcasp_ahclkr = mcasp_ahclkx;; Z3 h& i0 `# S, `* W5 G; g
assign axr1 = axr0;

8 q: G  Q9 F8 P% u. X5 b% h$ k0 H4 W) e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 i+ y& O8 \: q* ]7 @& |
static void McASPI2SConfigure(void)
& C3 L& B! Q. c4 b- ]: K{1 k; p* F( K+ A* n: @; M# d
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
2 Z5 i0 Q+ V+ Y5 z9 eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */" t9 X. d" v3 R
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
6 ?1 i% Z0 O$ k5 ZMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
1 V# q+ E/ J  o7 i; B3 eMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
( g! H. V' h9 B$ |: a/ eMCASP_RX_MODE_DMA);
; b" V) v% u5 P( g. b+ l5 wMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- }6 ]( |& [6 T2 }0 y0 _MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
' }- n4 [4 }9 q3 Z& b- i8 Z/ HMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 8 L( i5 B% ~. \  D. q1 Z# H2 q
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);6 u" h+ i/ D2 X! F+ F0 p, y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
* L4 r0 \3 @4 p, j+ UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; \* g! |0 ]5 A$ O6 z' I4 F, TMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);* x' e7 l& ^$ N9 A1 _
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ; |3 _$ I$ b, W" p1 g6 M6 ~
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,, x0 V; b$ @5 Z% v$ O
0x00, 0xFF);
/* configure the clock for transmitter */
& ~1 Z1 s+ D* V) I- j4 x; AMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
$ R8 ^& B) d% OMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); $ ^9 t; j# [# Q5 x9 [9 f6 b
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
# R2 Z% S6 v; o0x00, 0xFF);/ |% }% z9 w% u, E" e) M
1 Y( _4 ~6 `. e: d9 L- r
/* Enable synchronization of RX and TX sections */ $ _# D2 R5 L- _& b1 T/ m
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */, T2 N) C2 s. L7 l( H5 N  @9 v
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 R) ^, Q' _* f/ O" i
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*% M5 y4 ]+ @" w& b8 z
** Set the serializers, Currently only one serializer is set as6 r9 @3 j  ], w2 H' c
** transmitter and one serializer as receiver.
3 y, L% W8 j, n1 A*/
8 j/ h6 }  @, d3 a3 _McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);' z" e4 C. U0 B* c
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*6 S9 T% s3 r. g/ n; _: K% {& L
** Configure the McASP pins , d; Y# @4 _) b" p8 A1 z
** Input - Frame Sync, Clock and Serializer Rx
3 R  t4 p# S' Z1 ^9 \* t7 y7 G** Output - Serializer Tx is connected to the input of the codec 9 a: r2 _! ]6 R2 w; W
*/
- u( d1 \/ U0 j1 J$ `; _McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);" B( ?- D# _% S, ?. ^
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));. }8 V0 E5 {% ?
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX5 ^! t( _7 o4 o4 i9 X
| MCASP_PIN_ACLKX( `- b0 I& E; t. Y. C8 R5 Q
| MCASP_PIN_AHCLKX
' ^6 Y$ p' w  A; x$ `1 Q: k| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */: g+ i/ F! M3 d8 [# {- ~1 j
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
- h2 ~/ d9 ^3 z- c| MCASP_TX_CLKFAIL
0 [  D; ^3 P8 `! [. M0 w| MCASP_TX_SYNCERROR- }6 i% Q( j) @9 H( y4 }) F) C
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" c$ Z# |+ R& t6 C  K: j| MCASP_RX_CLKFAIL1 q& S+ k/ b' c  S. H' V
| MCASP_RX_SYNCERROR " S9 D7 C1 X& M* n8 U2 {
| MCASP_RX_OVERRUN);6 z+ v* O# C5 |) g, y
}
static void I2SDataTxRxActivate(void)
3 j* h1 e$ _% G  K{
  F- {. X, h- U% |1 W& I/* Start the clocks */
0 Y7 ?/ n( U! Z9 l! ]McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
+ x/ W) w' m; \: F4 WMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */) g& S  l6 o3 y/ W( u  E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,, R: Q1 H6 f4 @, X
EDMA3_TRIG_MODE_EVENT);5 n2 g% M" S5 x# H6 X, U4 H% j/ a9 ^
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 }( U3 V0 J6 r  ]6 X7 e* A$ cEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, ]9 r5 n4 N+ ^2 ?: iMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
7 s6 v! Z( J1 b& W! \McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( x/ F& |- n) {/ k
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines *// k' H2 g% }9 D$ a) L( n2 u
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
) J* x2 F" w! @! J" L# {/ c! {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 q* }3 r2 N5 a6 h) n) Q' n' |
}
4 I9 ~2 U0 ^4 I6 q/ s# R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
+ ~' r) W- T1 q+ x$ B+ W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 16:00 , Processed in 0.037819 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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