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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8793|回复: 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,# r8 B2 [  k" }- N/ t! R
input mcasp_ahclkx,* X% {( x" N+ O. V2 N2 l
input mcasp_aclkx,
7 v3 N, U7 V! c; q% G# H. winput axr0,
) Q& C3 a: e" {- g- n. P( T
% S5 W1 V- z$ B6 h0 B: L9 koutput mcasp_afsr,
* ?1 [7 Q: G0 M3 d. p1 h+ moutput mcasp_ahclkr,# c7 }% j" `. t/ V* l0 j, ]1 W# T
output mcasp_aclkr,
; m/ D/ [8 U4 ^1 W& R, a. ~. ^output axr1,* F2 E! }+ G# @/ X0 J
assign mcasp_afsr = mcasp_afsx;
) O7 [/ L; e$ z, H( ^assign mcasp_aclkr = mcasp_aclkx;
1 X. W7 D: g8 `1 C. J. lassign mcasp_ahclkr = mcasp_ahclkx;( x. L6 `& C& x  M8 L% E# @3 V& A4 X" D
assign axr1 = axr0;
6 T+ Z- ^" d6 \0 _$ x: _
4 ]  d# z9 F+ `7 K# M6 s$ e+ P& z
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
9 v3 ]8 O- s4 N- |9 X; V; w
static void McASPI2SConfigure(void): X$ r1 |- A( }: ^
{
3 R3 q1 J2 a8 e- T! S! YMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
7 w, \! j6 J% K" \9 z& m1 bMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
$ ?5 _! P6 r. d8 U# iMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" E& N& G4 Z. `/ MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
: Q. z' b+ }" ?; `1 wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
' z/ E' l& Q$ f; _MCASP_RX_MODE_DMA);4 a0 ]0 y" W( Q0 |
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) K2 z1 T5 c/ F" J+ VMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
$ o, R- z+ T' X! o8 n1 e. nMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
* X" h1 ~7 H: e' p$ }MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);9 P: p' G+ L% j. ?6 K
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, ; j. n1 V7 Z+ }' L
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ Z2 G% F. O' ^. u' B- q
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
. \3 {2 D! m4 D3 R! kMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 7 b( R; R9 R. U# P' v2 y# i
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,; l3 Q$ V5 P2 r& m8 e* X$ \
0x00, 0xFF);
/* configure the clock for transmitter */
- m& e  d8 X" v5 LMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);  d8 R+ E4 ?' r0 U/ U  P
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
  u, j: Q, J" Y( L1 w( _: WMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,- U# M9 |5 _0 p1 k2 ?
0x00, 0xFF);
2 ^8 e! N* ]: a! q+ B7 |. l  [% v% }2 E2 z8 E( H1 p
/* Enable synchronization of RX and TX sections */
2 }4 m$ `; V. ]4 |McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& c- ^8 y+ I$ g1 m) |McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 T8 ?( m% G2 K- n/ m0 }
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*- R" a) s4 V% F& B, I- f
** Set the serializers, Currently only one serializer is set as, b0 l4 o4 f2 n! W; g; O5 A+ S
** transmitter and one serializer as receiver.
. D  O- X: {& Q; A*/0 G6 I" E% A' c( u% D0 I7 |
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);# _' o+ B3 f% K
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
, o: r' Y. D& A; w! ^* O8 i8 i** Configure the McASP pins
0 {( w4 d* P. E( }. q1 `** Input - Frame Sync, Clock and Serializer Rx$ F" H; n: `* Z1 {. v
** Output - Serializer Tx is connected to the input of the codec ( ^3 p; M& |5 i, a' _, a
*/
8 ]7 P# U" \, D1 O9 ^) R) DMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);( Y3 k4 H2 r- d5 s6 o- j7 o
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
  A9 [. v! F! m& bMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
4 A; S4 x! P, c/ T& W6 b| MCASP_PIN_ACLKX  p, r2 @+ e7 y- X6 S
| MCASP_PIN_AHCLKX
& q) W; @  }! f- P| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 T0 O( g) _2 ?$ ]McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 r) v2 q4 W8 C: k5 Q, R3 A; N' v| MCASP_TX_CLKFAIL & I9 Z- g- o( w$ e6 }+ b
| MCASP_TX_SYNCERROR8 k6 C" E# Z& b8 `
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
) v) {- W6 P5 s# U' g| MCASP_RX_CLKFAIL" k3 E; Z0 `4 U' S: Q- Q
| MCASP_RX_SYNCERROR   j  v. X, }' r5 G4 k
| MCASP_RX_OVERRUN);/ e% p, }( `- m6 H1 t0 f1 e2 K
}
static void I2SDataTxRxActivate(void)0 y' Z2 c0 A; `3 @  Q
{
! Z) q. i! w% X/* Start the clocks */
4 f  F; v9 ]! }6 [/ f/ X; RMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# ^5 c3 h+ d$ a. L: \4 [
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
9 k& A+ i& A% h' Q" U% x: v& sEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
7 H6 j& Z( I7 d/ s* C& v/ l- U! ^" wEDMA3_TRIG_MODE_EVENT);# b/ z: h9 ?2 H5 c$ Q; U9 x3 D
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
" T1 J9 x- G# X! uEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */" S4 h' A4 p1 h
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
; J; g( I" P2 n& K" J( @( z. zMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 b& T& y7 w/ {- ^7 l4 I& Q
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */3 u1 ~. c: A& ]. I, C3 f. ]& x
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" Z3 Y0 u3 c2 L6 CMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);
& q  B& D/ [: k8 i8 F* i3 m}

  B% s3 y1 [, `. @7 Y
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
. }; k2 [0 ~/ O' l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 10:31 , Processed in 0.039951 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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