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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9136|回复: 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,9 Z3 a# O6 o7 H
input mcasp_ahclkx,3 f4 L8 }( P* f; Z8 o; J
input mcasp_aclkx,9 l" S- I0 ~0 o
input axr0,6 {2 B9 p( ]( A2 w
; `& U, ]( x' D; u0 J) _) `8 U
output mcasp_afsr,  V  o4 G) M/ Z+ f7 f% A
output mcasp_ahclkr,
- F, D9 o: {! w# X' e7 K( Voutput mcasp_aclkr,0 p" E. p! {1 u7 b4 H: C0 J" n4 [
output axr1,0 j" }9 _1 y4 n0 M' B% b' ?
assign mcasp_afsr = mcasp_afsx;
" q$ G! `* V0 y4 q6 [" Tassign mcasp_aclkr = mcasp_aclkx;( b; {0 m4 ~% A# [, @; ^' \. m
assign mcasp_ahclkr = mcasp_ahclkx;2 _. U* E' x: N1 F
assign axr1 = axr0;
+ L9 c6 G3 @3 H& f/ S! O
, S0 c: T. Y5 w) [8 D( s
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; _& m* ~- x! n  ?7 P
static void McASPI2SConfigure(void)
) L/ }6 b( J  S  P. S{
4 I# F0 _$ j$ T& |3 K9 I' ?McASPRxReset(SOC_MCASP_0_CTRL_REGS);
+ z1 P5 i6 q6 i, N) uMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
# E3 o4 g4 }" ?) j  b! L( nMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
# X( V$ s: l8 h$ _) YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */; N* f- z5 Z# Q- W# l+ Z% u
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE," Z$ V6 m, V, W" G! {
MCASP_RX_MODE_DMA);
0 X( B* Z4 t9 Y4 k6 C9 M2 w6 nMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
: K2 h* U+ P0 L+ ]. LMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ n2 O, V9 _* C  g2 E6 bMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % X( B9 ~  m4 M9 X
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);$ X; I: P" e/ q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 u$ d* x- a8 H. C- a4 Y
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
# |  y6 L6 F& P( lMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' h: n: Z9 P& {2 @! ?* S" eMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 1 c7 d7 N/ m+ }' |3 Q/ g8 S3 O
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  P  K6 A/ R0 J; v& _% ^0x00, 0xFF);
/* configure the clock for transmitter */
7 E) B9 D" m* C& s. XMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);- w/ y$ K$ @: y) l: [# C5 b  I
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' \- M5 g' }$ Y* Z
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,+ A, j9 Z% t( ]9 V+ U
0x00, 0xFF);; S5 P9 Y/ A1 O8 }* E0 |  ]. t) j% I

1 o" h3 |% \1 @* ?7 X4 H! v/* Enable synchronization of RX and TX sections */ : ], r% a) B6 V5 C! T% x' l
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; W+ F# y/ x+ |3 N. k( V
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);# V6 {/ f$ i" }' ^; @: X0 f4 @7 p
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*3 P# j1 }" G, W- h3 ^
** Set the serializers, Currently only one serializer is set as& G/ h; u) R4 u4 f6 v
** transmitter and one serializer as receiver.
2 Y/ a# J; n2 S, ]" {( Y: w- d*/
! C- Q5 h0 i3 s; w# S9 |McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
0 [6 [. L9 P' r( c7 {$ o0 GMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*  E) Z, Z! g1 e4 J( Q
** Configure the McASP pins 2 \. z$ p# J5 y8 {: D
** Input - Frame Sync, Clock and Serializer Rx
6 c; H, X7 f% _/ P, F** Output - Serializer Tx is connected to the input of the codec
( F8 F( ^: q# v' J* ~*/" k2 c5 ^8 H+ K( x" c. @' E8 z- r' c
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);$ I7 U6 Y9 A+ A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
0 V) Q# e" i: O2 f( R4 D9 k: zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
- v1 Y" f3 O. K8 J| MCASP_PIN_ACLKX5 x, B9 `4 s/ W, R  A- Z/ \4 R
| MCASP_PIN_AHCLKX
7 R+ K* Y' e- \| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */( ^0 s! }! b6 Q, E/ s; d% N& a& p  L
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR " z/ f9 d! R4 q4 s1 g9 j
| MCASP_TX_CLKFAIL
5 s$ x1 S/ o, X2 _* E: X9 F" [| MCASP_TX_SYNCERROR
8 f# I- I+ ], |! a| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - ~% k& I2 Y' |" Q' H; ^
| MCASP_RX_CLKFAIL
, o- G" i5 z* U' Y1 `1 F! n* v8 Q| MCASP_RX_SYNCERROR
7 t0 T9 _; V3 T* i+ p: Z| MCASP_RX_OVERRUN);" @$ h) l; G/ n# d. J
}
static void I2SDataTxRxActivate(void)( E# N4 i# e) Q* f1 {, {- s
{
$ _1 j6 R. s+ A/* Start the clocks */& w$ `; r' i  g' w2 }2 r$ E
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
$ o+ i. ?; n9 j' l; J6 a$ {' L* qMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 P  g  r8 s7 }- ?/ n+ P. |2 a8 E
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX," k- _2 i- T) d! L
EDMA3_TRIG_MODE_EVENT);
. c! `% w' R* E9 r, {* t3 KEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 7 W7 Z7 O" @& _4 b2 r
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */7 h( W. ?. d: t2 [* Q
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);: g3 o) z! \) ?
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& |$ t( W4 Y) ]' Awhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */# I' ^3 j( M; v
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 k  X! S+ z9 D% C. Y* p% Y5 @! j
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 Q) |4 u0 d) J8 f  g; p
}
) B1 q5 h/ G' A
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

# e! `/ \9 z7 ]/ a3 v" s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-21 17:35 , Processed in 0.038324 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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