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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8876|回复: 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,
7 m8 ?! c6 I2 s3 e* i: x* s9 rinput mcasp_ahclkx,. o. w2 {: N& \% F9 x3 S/ ^& X) o/ p
input mcasp_aclkx,' ~, J4 y1 J+ J' T
input axr0,# H9 m8 M/ ]  ]* E. u' S

" u! F1 J; O" V" J6 ^" Doutput mcasp_afsr,+ @* b% T- P* y1 |9 g9 \; |
output mcasp_ahclkr,# X! X" O! r) S; B
output mcasp_aclkr,/ x. {  h, e% J5 L& p
output axr1,: D& u" m' c* b3 P# q+ \9 @0 b; _7 {
assign mcasp_afsr = mcasp_afsx;
2 t8 |- D7 J# ^& Qassign mcasp_aclkr = mcasp_aclkx;9 Z5 h8 z& k. Y" X. g8 |" r7 H
assign mcasp_ahclkr = mcasp_ahclkx;
/ h5 N6 q" Y8 A. T! \+ p5 sassign axr1 = axr0;

7 f( }" _1 {3 [  z$ H" E1 C, r! s% p& ]* F" }
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

8 t% O- d  D  Y- R  e$ T, f
static void McASPI2SConfigure(void)
$ w& q$ Q# U. o- h/ k{
: G9 L9 i" C: vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);/ d6 W, [3 l( r8 i* f% S
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */7 t) O; |8 Z$ |5 c/ e$ b+ |; [* R( t
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
- i, }7 j5 C5 t6 IMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; ~8 c1 A4 B) a% `2 qMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) P( l& _+ x2 K# k: E" rMCASP_RX_MODE_DMA);9 Y7 R7 b! ?' s& Z3 h  q
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,% I" ^+ J/ ~: @& O% N8 u! b
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */: b. T% t# W* ]; w6 K$ W
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 Y, _3 U+ u9 y: _1 S1 V* u
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);; R) ^/ u, @/ Q# l; k
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ! l( x" j4 z* O+ i6 h/ g
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 w8 x* Y' Z8 w- S6 ^: _* c- @
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
$ w* U& B6 }) h& \9 e7 hMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & B3 |6 K1 h; F: ]" o2 w9 R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ _/ j% G  R1 N9 V# G& {+ q
0x00, 0xFF);
/* configure the clock for transmitter */% J' D8 t, _/ X' R* R- C
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);& k6 d$ [, q/ i7 U/ z. x2 V  O+ i
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ c" o8 s& t$ H4 O6 r2 @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
  Q% h) ~2 s) H. T3 Z6 e7 t0x00, 0xFF);
% \$ [1 W$ m8 R6 j+ O3 b8 ^: \/ J( b! b2 q& F3 I; y8 d
/* Enable synchronization of RX and TX sections */ * i; |4 y- Z- v& r$ L
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */; x" t9 }+ |% V: }
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 y6 B" }! Y3 G% l/ l, u' _3 `McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*; }$ p( W! Q# U' H7 {
** Set the serializers, Currently only one serializer is set as6 N0 S& A' Y6 M6 p
** transmitter and one serializer as receiver.
+ {4 g( `, E/ R' @3 _*/
; @9 j( s3 s8 H4 Y/ M, j6 J- {McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
  e& z/ B* Q" k* vMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& I4 Q: E3 `" d; J1 _% e6 U" w** Configure the McASP pins
# ?- T7 |& l5 x6 L3 b1 K** Input - Frame Sync, Clock and Serializer Rx1 a! S. Q# u5 v+ [* F6 c
** Output - Serializer Tx is connected to the input of the codec ! s2 ^$ s  ?0 D7 G* |
*/7 v8 H3 w6 U0 b+ O8 b* t& B+ t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 j  h& s  M6 t+ X, n
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
8 }5 p. S( W" R$ O& ~. VMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* X+ c0 F% k$ k; g0 |! u6 M
| MCASP_PIN_ACLKX
: y: o2 \) l) I6 i| MCASP_PIN_AHCLKX
" T1 r5 x9 t4 u1 Q" t| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */4 z. R4 r& W" _
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
& h7 T- m+ x0 O3 `| MCASP_TX_CLKFAIL $ M. _2 c3 g! T3 c* S, X
| MCASP_TX_SYNCERROR
. j: e5 t  c. _  R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 9 w: e/ y0 ~& Q' S4 d$ t
| MCASP_RX_CLKFAIL5 P2 ?% N, p' y
| MCASP_RX_SYNCERROR
% y% W0 m" e- \6 z| MCASP_RX_OVERRUN);; v( _* b. b, e
}
static void I2SDataTxRxActivate(void)
) K' {) W& b3 o1 G! W' t8 B1 S! w{
# l; }/ H% S) B: c/* Start the clocks */( Y6 s1 P: i& s5 p. {0 I
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
2 L/ J; j" w: h: b7 t, T& lMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
4 D; J( h0 m* s# x: qEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
" P: ~* C+ q/ ?, M2 H: T9 \EDMA3_TRIG_MODE_EVENT);
  O6 {7 l9 Y0 s/ \, n/ V& c2 nEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, % T. A$ [+ D( i: A' k
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
% ^7 n" e+ b; c& G% ?7 e4 vMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);4 |/ d  l* [1 i6 M: l
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */2 o% ~5 {; y# B; {* D! H/ Z6 I+ G8 q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
* q" {& Q5 `1 v/ ^1 L+ pMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);4 R3 h  d2 Z' ^* \
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! G/ |6 {, X" }5 ~# M
}
2 T& d9 ~0 ^5 i1 q" _4 \3 [
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 ]  m) ]# U2 m- i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 19:36 , Processed in 0.037637 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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