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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* X  |2 H4 m: u" ]# _
input mcasp_ahclkx,
+ H; T4 U! m; G" i6 Z3 vinput mcasp_aclkx,
8 |4 F# g3 v" pinput axr0,/ u# O- U" L7 F
: W! R! |# f/ z' a
output mcasp_afsr,
" j0 e% s( |" E" ?; M& K) poutput mcasp_ahclkr,& d$ F" ]% {. ^$ S- P
output mcasp_aclkr,
3 q  W: Y/ [0 Uoutput axr1,
8 M3 m& K5 a* E8 N) H$ ?2 U) A4 m
assign mcasp_afsr = mcasp_afsx;
5 w" @9 [  }0 f1 h: c" Dassign mcasp_aclkr = mcasp_aclkx;
# y6 u3 C& [" m9 k4 |+ uassign mcasp_ahclkr = mcasp_ahclkx;1 s. c/ h" Q3 T- `3 c
assign axr1 = axr0;
0 k5 d; H( f4 y! ^* m; |+ |
+ {: `2 f5 k% @' k  B) v& r& d
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
$ N. t, L6 g8 W& e! n/ {# P! \
static void McASPI2SConfigure(void)
0 w' N" A. y5 w! s2 T& ]' S6 B{
9 u1 x/ d; q* k4 w: X' sMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 x& M7 r1 D" zMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */; w3 k- @4 U# E0 z
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);8 Y$ @$ i& z, g( i" Q
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */* N7 W/ {0 Q  Z! K0 P5 h+ A$ P& ]( g
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  ?6 O+ t6 l5 d5 E: oMCASP_RX_MODE_DMA);  _# q! U0 s4 O# y" ]9 O
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,* \5 ]( {% W& u3 E  `+ a
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */) C/ H/ ~; W4 y. E7 h1 H
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& V4 v! J& j  s6 T& O6 q+ OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 r" D" _& T6 K0 C6 L
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
) ^1 B8 Y' F* g/ n/ yMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
( g! b2 ^( Y6 }- c3 @; AMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! o1 p* ]4 o0 z" X& L# k$ l  iMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" W' }+ I& M- dMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
5 R* {* j/ b) n0 Q3 Z2 F% H; @7 j0x00, 0xFF);
/* configure the clock for transmitter */
0 b5 W! j# D  U& m& X  OMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; P/ R* p1 e3 z$ x9 k, |
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); " p% j8 l6 W1 i) p5 y4 a4 U  I
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,' {% L0 ~" H9 R' M) b
0x00, 0xFF);4 T6 Y$ J- s" l" B4 h" a1 a* w# v  V/ A

2 O- |/ X4 J" s- }8 }* E/* Enable synchronization of RX and TX sections */
& n7 ?; y/ W1 g, T% `McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */% o. [: q7 o+ w  l
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* u" a8 I0 J6 p7 |% I; z
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
; d2 d+ D' ]/ I% z8 w2 z2 J** Set the serializers, Currently only one serializer is set as9 {9 ]! ]9 |0 z( s0 R
** transmitter and one serializer as receiver.
: w9 o2 C# p( W7 T  a7 k5 X*/' d7 n$ l8 ?" X5 [* U9 v0 |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
! O" Z# R7 b& H# A& k& E+ \McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
3 _) r! c* P: L* \/ d' E) M" @) R6 y** Configure the McASP pins ) D: Q$ k# I7 {
** Input - Frame Sync, Clock and Serializer Rx5 ?# T8 e3 [9 y
** Output - Serializer Tx is connected to the input of the codec 3 Y+ K% N, G8 S/ [! N' R
*/+ [6 q) ?6 x7 u) A! [6 r
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);1 A' r% D$ N' _$ j' M
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ r* R4 L3 r' M6 gMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX" |$ g) Y6 K3 ^2 @. [
| MCASP_PIN_ACLKX
0 G/ b8 s+ c- D( t# J| MCASP_PIN_AHCLKX
. ]9 [: S  ]6 r% y6 [| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
& m) v/ R" m5 f6 `  J9 ^McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
. }+ d0 ]) [6 m2 D# W2 q| MCASP_TX_CLKFAIL
$ M8 r( y* I( t' m* V| MCASP_TX_SYNCERROR) S' W' [: U  t: ?# }# q7 e. ~; `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % m7 w: C9 {1 M# o& l; b
| MCASP_RX_CLKFAIL
" f! ?& z+ ^" q' u, g| MCASP_RX_SYNCERROR
. C" u$ @9 Y9 X1 ?- v7 |4 _4 R| MCASP_RX_OVERRUN);
  x, m, D9 @6 Y6 v- ?9 K: A- V}
static void I2SDataTxRxActivate(void)
. h1 X9 B0 B. i" F& b" @{$ q4 g: e, n% {5 D' S& `
/* Start the clocks */
5 T8 q, x% R- A& T% CMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. w! {% E& H, D0 o. @9 g2 PMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  a  Z( _/ z+ p% r) {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
% d# r. _/ A3 m( sEDMA3_TRIG_MODE_EVENT);& X/ ?) G& _6 R+ k
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
1 n" ^& B& q! L3 p: \EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
; D- ?9 p3 B, C) o5 b" |, aMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% N7 v# _& j5 G3 L- ~
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
2 h# y( i6 v) `( P# g* Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */$ K2 n: ?, ~, c8 T
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);: y9 C3 R6 \: F8 d/ i7 \' c- R1 V' ?9 }
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);8 m. w5 X# E  i
}
2 V% b% j% Q# n& k4 Z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
4 v- D5 |& p9 {/ M4 b! z8 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 05:15 , Processed in 0.035095 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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