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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9703|回复: 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,! A' |/ M  V) q
input mcasp_ahclkx,
0 Q  |# ?8 c5 h9 a; D+ e6 a1 zinput mcasp_aclkx,
6 P: Z* |: s( ^" }4 t' z4 Einput axr0,
' H6 {# p, s1 `1 m$ I9 L' H: B& Y1 h  D* {+ c+ {& ~9 t' t
output mcasp_afsr,
& r; k2 z2 `! f- ioutput mcasp_ahclkr,. d6 l! c: T8 o& I, A4 T- v2 j( L
output mcasp_aclkr,
( x" f9 u1 k& R% q( Y9 v( r6 ], Toutput axr1,
# ^  p- X1 y  y: I0 v( n
assign mcasp_afsr = mcasp_afsx;
. Z1 i" R+ q. v) ~# X" H+ [4 M  T" fassign mcasp_aclkr = mcasp_aclkx;
! f! n1 \# H, R8 ~7 j& Qassign mcasp_ahclkr = mcasp_ahclkx;
# X9 H+ Z/ ~! f5 k9 D/ g; m8 Tassign axr1 = axr0;

5 N/ t+ h5 U/ Q. q1 C7 |+ @7 J0 \$ J+ I/ l% f1 ]) x' l  @0 `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ U! L# g9 P8 `  |5 s
static void McASPI2SConfigure(void)% |' o6 D" V& J! a
{
  _5 w  V! \9 r5 b: D# d  tMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
4 h+ k* C# w$ C7 l! S9 sMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
9 D' f, r: Q7 L8 Z5 T+ Y9 c0 NMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);0 r1 `7 R' l& t" P" z) @9 m' |
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 C6 M, R  u$ H, I9 y( Y  n3 G
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% a, f' W- |- A" A+ o7 {/ d! Z
MCASP_RX_MODE_DMA);: N2 U4 v, s1 t# O
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
- p3 k6 t' ~3 \  oMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
; v. y& J5 [# uMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
, K9 B3 j9 s9 k0 @/ LMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
$ A/ h/ e8 [+ q; z" XMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % t, i! ~0 I& C
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */2 p3 @3 M, L! A# ?8 O$ P0 w6 r  s
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
8 E; o3 l3 {  X/ `1 Q, w, RMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); ) y& {$ b& _" {5 P. \! e6 E  |
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,) S, f0 q% R( ~2 f
0x00, 0xFF);
/* configure the clock for transmitter */3 l) F, `. G& T
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
: p0 h- x9 W5 u! P. ]" M/ q0 cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
5 D, _- H9 P; q/ z* |McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
: m) k% O8 Z) o7 _7 o0x00, 0xFF);
1 ^+ X# q. Y# J) N3 T  @- J/ o4 i
9 b( W* }5 P  V; A% F" j& S9 W- x; b/* Enable synchronization of RX and TX sections */ ; I4 \: F/ k, q
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */( D' v- }" d, V) [+ Q9 m1 d9 ^
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
2 B: i5 P4 Y1 w' x  c* ZMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/** p, t, w# z$ ~! S( T1 P6 K- g
** Set the serializers, Currently only one serializer is set as
: T7 e! U* R$ s6 |** transmitter and one serializer as receiver.8 F" d$ i$ H! j
*/! C. ~+ T. V! V
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
8 A! J" B+ z' Q" u& vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*" {7 }4 o5 E' J; U: h
** Configure the McASP pins / s, i7 O& A: G% ~$ p/ G* h$ Q- M
** Input - Frame Sync, Clock and Serializer Rx/ X$ p( B+ k/ ^$ p, {8 K
** Output - Serializer Tx is connected to the input of the codec % M) j; x% B! t. Q. r: Z  t- N6 q
*/
) ]3 K% ]& j+ L' B; ZMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);8 O' i4 |& p- Y, o+ K' m
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
5 ~2 k9 V" \- S* nMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX# D% w, A4 A9 k8 N- C$ r% ~
| MCASP_PIN_ACLKX
' c( ^9 b5 Q0 ~2 `5 I6 f| MCASP_PIN_AHCLKX- U! f' q! y5 S1 R" l( D6 }
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 s3 }0 r6 {; m/ A8 w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( f8 D& q8 R, N| MCASP_TX_CLKFAIL
/ I$ C; H: L/ q| MCASP_TX_SYNCERROR0 [8 O1 k4 M  o3 c+ D+ j3 z2 s
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR + z! ?$ h3 A, M: f
| MCASP_RX_CLKFAIL
. {( I8 G9 v  Y  A: C- f) h| MCASP_RX_SYNCERROR
' G3 j: ]$ X( v, ^( @. _% @2 _/ w| MCASP_RX_OVERRUN);  {9 s, r+ m# d0 c+ g7 `
}
static void I2SDataTxRxActivate(void)
& c8 @+ W0 `* O5 p9 g, D7 h$ @{
( n5 l- d+ R' f' Q/* Start the clocks */
, ^" B: |1 h( kMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% e: a5 M& e) t9 X/ X
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
0 {0 C1 i, S4 ?: e6 uEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,# U2 `! g5 S9 D, O
EDMA3_TRIG_MODE_EVENT);& }4 }9 M& `+ ]+ E# ?6 K
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 3 `* J! T) c( L( W: R
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: h. D" h0 H) h. I' fMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; S- P( ^# S, m( B' r9 ~McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */$ j6 p3 L, j4 v8 \: Y
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
) H/ j8 o1 V2 x# q1 P! D$ P4 `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
& r! B1 w7 S2 r1 |+ w  c1 ~McASPTxEnable(SOC_MCASP_0_CTRL_REGS);( J7 h8 H% a2 j: f% A8 O
}

( }9 ]7 g$ d7 \
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
8 _8 z7 v/ g1 d4 J  Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-17 21:50 , Processed in 0.041489 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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