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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12228|回复: 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,
" t4 ^: `0 p$ v+ ?! k% sinput mcasp_ahclkx,0 X8 V% G& N, s: k2 y/ }5 l; E8 q$ o
input mcasp_aclkx,
1 l% m( y. a" S. \& Binput axr0,% m0 @; b9 d) ^6 w3 M7 [3 m% n

. @/ Z* r% [% uoutput mcasp_afsr,
- t  h7 x1 i. ~& u( [8 Toutput mcasp_ahclkr,* z% E  H* K: c* D; x* k1 r
output mcasp_aclkr,
; }6 S- K$ A9 A  soutput axr1,
: c) t7 y: v4 H/ B. [6 A
assign mcasp_afsr = mcasp_afsx;8 b0 h! S: U: W
assign mcasp_aclkr = mcasp_aclkx;9 f- p3 V: H7 v
assign mcasp_ahclkr = mcasp_ahclkx;/ t, v/ B. d, J9 x
assign axr1 = axr0;
" n9 ^; ]: f* O* @6 B% j2 m
9 U- G8 j% \: W# h4 o: `; h
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

, P1 W: o6 `# J& Y$ d3 a; k
static void McASPI2SConfigure(void)
# H% C0 A; P! R" j' b! h" w{
2 L3 \  f6 g3 x$ _( R* X( r8 c& qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);2 c0 J" E4 b' j# \5 U
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */$ [7 D$ @' y% B6 K5 [% X
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
9 e8 }7 R% U5 }4 YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ C9 H' J. c. e) nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,1 K8 q5 k( m' x+ Z
MCASP_RX_MODE_DMA);
, v8 c# W6 K0 A3 h( e9 @% \8 OMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,2 k6 {7 n9 a! d) i' s; E, s0 Y
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */" K% K# T  b2 |
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 3 x0 e3 v  n8 ?2 I
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
  S( v6 u+ f) ?# wMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, % M3 l& \2 a# r$ A$ E* C) @
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 E, j; D. k3 o& uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
! h8 o6 R& x; f; E' zMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); / C1 h8 G2 H, p  w8 d+ ~6 v
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32," s5 s+ P5 U! r" q/ b& t- J
0x00, 0xFF);
/* configure the clock for transmitter */
8 \) [) j5 B9 s5 v4 f5 j8 G+ ~McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);5 G+ T; F5 s3 V8 W
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
) o3 c9 H4 ~, }. J3 b0 t6 EMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
+ H& u5 a" E* g+ |+ l/ d! [# L0x00, 0xFF);
! r' m: I; c/ D( [6 E
' V  l4 G; l' M8 C/* Enable synchronization of RX and TX sections */
) @2 C+ O9 m/ w$ W' q0 V8 e3 PMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
. Z. f$ R& G" [; `# A+ o& W6 M6 `McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
' Y% V: \% {/ O* k3 M% LMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
! }' h- n0 }; a: Z) I** Set the serializers, Currently only one serializer is set as
/ l4 d5 C; W7 u- ~1 Z7 c** transmitter and one serializer as receiver./ z4 a' S1 j0 Y  W
*/
; D* _& Y. q8 v0 L0 _; |# n, B7 sMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);( ?# S# [! U$ }; c
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
2 @# q1 U& P0 y$ Z1 }+ ]9 X9 X! V** Configure the McASP pins 0 O( H0 U; ?( w! m" `
** Input - Frame Sync, Clock and Serializer Rx+ K1 a# q) [" u; e$ J
** Output - Serializer Tx is connected to the input of the codec 8 Q9 k6 J2 P" u$ h
*/0 H7 q1 b& H6 ?+ Y1 u
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
3 U3 B2 W. l  `% t7 C: r4 BMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
& T9 e" p/ ~) ]! zMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 }& N# C, s' F
| MCASP_PIN_ACLKX
/ e4 [+ u' b0 R2 a+ e| MCASP_PIN_AHCLKX
6 g( ~$ q3 `$ a5 k* S2 e5 D8 C| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 D, {; q; i$ ^6 cMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
6 x8 g8 `9 E9 m: b7 [' I  j5 G| MCASP_TX_CLKFAIL * V- n; P1 G1 o" O, o
| MCASP_TX_SYNCERROR8 c  n/ ?" d+ ]9 `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
- H, ?* @9 d% Z| MCASP_RX_CLKFAIL* J: [5 v" l# u! V
| MCASP_RX_SYNCERROR 7 G; r& P5 B$ c
| MCASP_RX_OVERRUN);; p3 I7 O3 r  q# W
}
static void I2SDataTxRxActivate(void)
, u' t) Z8 c8 k5 \{  c0 C( g1 Q" K* n' ?" q
/* Start the clocks */6 C$ v5 R2 n& r5 u. l( n' @' Z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
/ U1 D. S7 q. }8 ?1 X# z- GMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */# q$ w5 ]  w/ R6 k$ \4 c
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" r- U/ K* H- d) o% }' c$ dEDMA3_TRIG_MODE_EVENT);$ r3 i( r# H$ R( h. C0 C; }
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
+ W) J4 O+ q6 u3 q. S/ \, q7 zEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */8 S& m2 F5 g9 k8 ^
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  K- i) X1 p+ S8 r/ Y
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) G: e/ i) {$ s- s- n6 V0 W: @& k6 v
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
  W2 D2 Y9 [. r1 O! U4 CMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
. G2 g* _) e/ T# tMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
' B* T( R3 k+ A% H. z}
2 }6 X/ X  G1 y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
* ]. D9 a7 x) \/ r6 T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-2 05:53 , Processed in 0.039882 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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