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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8875|回复: 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,
6 D0 J/ }6 q8 [input mcasp_ahclkx,
& Q: ^# ~, \& i( W* K. binput mcasp_aclkx,) p4 y1 T# ^7 G2 Q7 a
input axr0,. g% D  h6 `% E! ]

$ d. z/ M8 r+ l% N0 noutput mcasp_afsr,6 A& G1 V, Z, C+ v. [
output mcasp_ahclkr,8 N8 l- z8 i8 R% @: N
output mcasp_aclkr,
) v7 t9 E& T4 xoutput axr1,
( }" f' c/ k  j
assign mcasp_afsr = mcasp_afsx;5 w0 u4 A/ @7 E" ?; A2 d
assign mcasp_aclkr = mcasp_aclkx;
5 I8 ?5 f6 Z; eassign mcasp_ahclkr = mcasp_ahclkx;
# C- ]7 ^- Z* k0 V. k7 x( y$ kassign axr1 = axr0;
2 d' f$ B1 W8 b5 ]

0 h, p  {6 s/ [4 [; o! ^* ~
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
! q# v. |0 G  @0 h. h
static void McASPI2SConfigure(void)( q$ R) H6 ?" U9 Z8 S7 [& w( J
{
5 y( F3 U5 p5 u5 EMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
1 l* X7 D9 W) C# c! w+ C/ n3 JMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */) ?% m' n) f: {  I3 N, e1 w4 u
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 O( j  L3 ^4 @2 t$ f4 JMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */- }0 `; i3 }9 o" w& c8 [, D/ {  V
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
7 x& `. S8 l+ y& d: q) b7 W' \MCASP_RX_MODE_DMA);
$ b+ E7 Q5 {: G6 _# z4 ?' u6 WMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% S% i: [1 \2 Y. R3 D% R" ?# e6 MMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots *// h% F1 z. g7 H. \3 }- E/ s+ a0 b
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, : J& H$ i/ L! \
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, m# N1 D- f, J+ @* d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& b! i1 l8 d3 }6 k+ m) u* W5 fMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
; {4 k2 o+ Q! Y! k; O0 ?) @McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
2 p% D1 c$ w3 H4 m  F& ?McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); * X: r8 A  d2 g$ R$ R
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,/ D2 B- W! |5 E- P3 m0 q
0x00, 0xFF);
/* configure the clock for transmitter */* W$ d. Z: k# \
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 A) ?8 f* ~* O9 U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
* C$ t1 d& k. O3 y; OMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ C: i2 T: c, ^# h' ~! Z
0x00, 0xFF);7 w% t3 y. F( ]
" m" P. _8 C' `5 B+ a" e/ q3 j+ C
/* Enable synchronization of RX and TX sections */
/ `4 \6 d% y7 g, G& MMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* |$ z/ A5 N) W) aMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);. X7 I9 S( n1 _
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
& g' b- N9 I8 N6 g4 Q** Set the serializers, Currently only one serializer is set as
0 D+ b, z% e  \- x* q** transmitter and one serializer as receiver.
/ k! s* ~' n+ r* b*/
; X  ]% L! o1 R: l! [McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);, T- s* f# m. X, \/ V5 K6 Z
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** ~2 r% H% V9 y  k- r
** Configure the McASP pins
1 m( S0 ]7 p  o  k# S** Input - Frame Sync, Clock and Serializer Rx
: x7 L& e5 r) ~: T; u3 D/ r/ ?# ]' ^** Output - Serializer Tx is connected to the input of the codec
  {0 g4 N4 P& o2 v. Y: S" X*/+ P! S$ p7 m. {$ `
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
: F$ {3 v5 w. c5 C+ ^9 N! nMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
/ h5 i0 k5 ^& T1 C7 NMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
: g8 J, c& ^# P3 r4 e& A| MCASP_PIN_ACLKX; O5 J# L. j+ [
| MCASP_PIN_AHCLKX# r/ A5 v' _, f, J, I$ q& v+ q* I
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
/ \0 n# @' [5 K- x2 f  P% P7 R, v2 E; {McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR 6 e  j& X% b' x* ~: d
| MCASP_TX_CLKFAIL
! C9 p$ `9 a4 {| MCASP_TX_SYNCERROR
6 g; p: N% u  h; g4 ?( c' ]| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 0 Z$ a& x: k8 S- @
| MCASP_RX_CLKFAIL
* Y6 y" I. {6 X3 C/ t| MCASP_RX_SYNCERROR , V8 o# g! I7 [  b
| MCASP_RX_OVERRUN);) C: Z" ~5 o, v  E2 W3 }) }9 T
}
static void I2SDataTxRxActivate(void)
% r, K0 F$ \+ W{# N2 [+ A; d: e' d  ^* m, w
/* Start the clocks */) @) q8 S) r4 I3 A. G  ?. U
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
& _0 H. x( p* r! F7 F% t* ]+ ]McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */4 m) G, V/ \- m1 f
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 j1 l8 W: D8 ~3 E' W+ e' xEDMA3_TRIG_MODE_EVENT);- g  y* x; g4 u& s% r
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, / ^, }7 D; \# a0 R" ], p$ i4 l, Z2 J
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
8 Q( y, k+ c5 }$ G2 t. r) TMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);* \) y$ x1 X. {  G$ `, b3 |% g6 |
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */* G1 k5 [0 |" V- \0 K
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
, [& R" S. _# C' Z/ F- [: {/ ~McASPRxEnable(SOC_MCASP_0_CTRL_REGS);5 O- i1 x( m8 @1 X8 d' g+ M: L
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
9 z+ N4 d* X3 @}
8 Y8 s% q/ A# j
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
- O! a2 U7 q3 m2 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-8 17:40 , Processed in 0.044417 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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