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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10413|回复: 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,; l! Q* h% D1 ?! R
input mcasp_ahclkx,/ `% o( }+ F: e  J1 e5 R! u8 e
input mcasp_aclkx,
- ?6 k9 y; R, o' x6 C. Linput axr0,
" s& e1 V6 c7 K& I2 R* F1 h7 Q" j' ?, I% f) Q5 {& n# o
output mcasp_afsr," d! F: v* ~, h* _- j
output mcasp_ahclkr,
& b# v1 T" X1 A/ q/ W/ ]* w+ zoutput mcasp_aclkr,5 a8 y3 s0 i- @; s. z$ i7 j6 E
output axr1,
0 ?  u. o0 x$ }: ^1 [' |
assign mcasp_afsr = mcasp_afsx;
# ]% }$ @& O9 U  \' [: passign mcasp_aclkr = mcasp_aclkx;6 e) }& y6 T3 T# y) `8 S
assign mcasp_ahclkr = mcasp_ahclkx;1 m* B" n2 }' _: y% \
assign axr1 = axr0;
6 a0 j% D3 L# y" g4 \4 E, w

2 w3 e& z+ h' [4 Z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
* N8 M8 c; m5 }
static void McASPI2SConfigure(void)
1 G- E. o: q6 q- s% {( R" R* T  x{3 g. B6 |6 x2 @! P; B
McASPRxReset(SOC_MCASP_0_CTRL_REGS);  X7 U4 {; P  z( f1 K
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */+ E+ u& ^) Q; ]
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);; @+ V) H* f& @0 x. b& [
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% v( l1 N+ d( I* n) mMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,: W# P% ?  B7 M
MCASP_RX_MODE_DMA);
& u! f- g2 @6 o7 h2 L: y, w" LMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ ^. {4 u9 T# A. K# P$ |
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ K9 t1 {3 G& z* O# x: e
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, / J3 ]3 f  c0 j' R  y: C' F* J
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);2 k. L) v8 ~4 T0 W) k; \4 G
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
# q* v& k1 M2 K' v+ LMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
3 ~: c9 o7 [5 B, X& fMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);( L5 Z4 @/ O5 M% P7 w, u
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
3 K$ K3 B/ m  ZMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,. `9 o/ _0 J) v1 Y7 ?2 T
0x00, 0xFF);
/* configure the clock for transmitter */; b' n8 l. u( I; B
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);8 o8 g+ C* i7 P+ p6 n9 M
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
4 o: O/ r. y# @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
8 C4 ]5 k" u( M( r& m+ D0 r0x00, 0xFF);
$ Z1 l, L2 k# @- b5 O- W7 |0 E1 S
1 A) \1 V/ m% n6 e8 i3 c/* Enable synchronization of RX and TX sections */
1 x5 |( ?  x+ d( a) `McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */! f& U7 j+ r8 f: b
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. K+ W" s  J+ ?3 V
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& R5 p  X; x0 u( P5 P) ?. q( z6 B** Set the serializers, Currently only one serializer is set as! x8 [  |4 b% Q' g$ i/ o5 n2 T
** transmitter and one serializer as receiver.
" ?8 G# `" Q# U*/
, W' w. p& C* @7 `* ~0 H# RMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);9 }3 j0 b3 _8 Z+ |7 @) |
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*4 V7 X! c' @$ u" J
** Configure the McASP pins : U% e" Y! e& C$ O6 B: e
** Input - Frame Sync, Clock and Serializer Rx
3 ^+ \; f% |" R5 U7 z! E** Output - Serializer Tx is connected to the input of the codec 1 s2 J/ R* D0 ~+ w, n+ a7 z
*/
* |& ?- M! H0 a( h( yMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ b1 X$ ]' D+ @& n- E: z' CMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
+ F6 ]2 h* R8 s* E5 \4 ]McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
1 a6 d# x% l+ @. j6 E3 x| MCASP_PIN_ACLKX% }2 I2 K( |8 f* l% ]. I
| MCASP_PIN_AHCLKX
" q1 t: F" W6 o# J# B+ j5 o| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% M; f) A+ L( P5 B- d2 d+ bMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
# X. K! e8 N) i/ E0 |2 L5 d| MCASP_TX_CLKFAIL
7 z! s( C4 k% V, R( ^| MCASP_TX_SYNCERROR0 p3 m0 Q5 F1 A1 S( i
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR - ~' j7 Q% m) I% D5 r! Z3 X
| MCASP_RX_CLKFAIL9 \* v8 j4 z* i: X1 O
| MCASP_RX_SYNCERROR
7 ?# v# J% Y! _$ j| MCASP_RX_OVERRUN);# a2 C8 _' [0 x  X
}
static void I2SDataTxRxActivate(void)
1 x8 \& [$ ]& i& C5 f" c# V6 L{0 r7 J; H' B7 u
/* Start the clocks */
6 v% F" @$ g! J3 Y' G# \: m! F5 hMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);4 m7 P$ \0 |" E* k. n+ [, f: W
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
" i8 R7 h3 `. C) a7 L" _, QEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* B2 t' W7 b( U( w) XEDMA3_TRIG_MODE_EVENT);
. z4 n. y, k! c9 ]9 J8 O6 tEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
3 }8 Q0 {" i( ?2 s# b9 L9 j: D# CEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 Q! K, S9 x+ k" ?/ c2 R; l* \
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ T3 ]% s! |& X+ Y  OMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */& V, i1 E! Y3 s. Z  y) i  |" k
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
1 v2 ~% i# P3 j5 pMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);: P* A5 H9 A) X9 B7 b9 q0 l: |
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);* O3 [, ?" W: _
}
/ c& N7 ~% h+ M- U! t
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
$ }, r7 G, E' e( q$ q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-6 04:20 , Processed in 0.044999 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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