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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9833|回复: 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,
5 z3 ^0 K( O7 p0 Z$ j4 \input mcasp_ahclkx,
1 ~3 }7 [* c' O( f' w3 y9 U; [' sinput mcasp_aclkx,
, l# J) |& T5 L+ winput axr0,
, R) h: [  N+ ~4 B  T
9 t* _( L* G# D% x, y) uoutput mcasp_afsr,9 N2 ~1 P1 Y8 f9 `4 p  E- d9 p- H
output mcasp_ahclkr,- H8 W7 o6 r+ u0 V
output mcasp_aclkr,
$ J: X+ B: D0 H2 l/ n7 U7 {1 Moutput axr1,3 J9 H9 n6 d4 l- w6 I
assign mcasp_afsr = mcasp_afsx;. {, ^2 T) k8 M2 H$ X% G. ?# U
assign mcasp_aclkr = mcasp_aclkx;
9 L* Y7 x; z" a+ ]0 N: L& Iassign mcasp_ahclkr = mcasp_ahclkx;( V8 a5 k1 t( M
assign axr1 = axr0;
- j8 c2 e" N6 r: y8 M0 H
7 [4 V# i; N$ ]) j: n: D' @9 f& C
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

  I3 L9 }3 T4 N/ l# j; J& m  U
static void McASPI2SConfigure(void)" x7 r  j0 Q, C3 v' Z5 ^) {( a
{; n0 A6 S) m' \8 A2 z6 F9 K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);/ T4 {/ g2 w: c
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
) O2 g% H: E' q' H" }McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);# N7 e+ z: e5 m0 U/ B
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
% R. B' E5 I+ K! e2 d0 k$ V" yMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 e' n% U8 h* ZMCASP_RX_MODE_DMA);
7 _7 A; j- p9 L+ D( TMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
0 C1 Q" c/ _: b7 K  W0 W2 x/ Z1 rMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ |2 R, s+ a% p7 I" l
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 0 z& n* R$ U4 E, p9 n6 _% V
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
9 i- q# y) _- LMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 n/ J" [$ q9 [9 v& f8 A& z( {
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */% a8 m. N, C: V7 n# L8 g
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);: c# Y1 k0 s0 W6 V6 i; t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. y$ Z: h8 z/ B1 o2 [, C$ A3 e0 ]McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
2 |- s6 L8 R# o! \# i, ?0x00, 0xFF);
/* configure the clock for transmitter */" @( L# Y2 R; v
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ E1 d3 X8 q' d' U
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
2 Z# r" f0 {& ^; kMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
4 P2 S: ]% `4 H) `; X) k0 u. _2 d0x00, 0xFF);. W3 P3 C  }! |
* G7 I$ V/ K+ e. |: g8 F" T
/* Enable synchronization of RX and TX sections */ 9 V- u4 j+ \2 Y
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" ?/ I1 A: ~/ e1 o7 s. I8 p
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
; ]& `3 A) f. j, j' QMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
" ^0 X, c- T$ O** Set the serializers, Currently only one serializer is set as9 \. y: L4 k7 ~
** transmitter and one serializer as receiver.3 [5 x; {. s1 a7 I; {
*/: @4 N$ E' l. z0 f/ _5 i; ^4 ?
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);. H( v# J+ f: M6 N  N4 d
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*+ G/ C" l8 M" Q# Y+ X' Z
** Configure the McASP pins 1 {5 |& l! S) C1 G
** Input - Frame Sync, Clock and Serializer Rx
5 X: S3 U4 ^$ ^** Output - Serializer Tx is connected to the input of the codec
! J, x" K- b% a( w& i7 l" I*/4 r  ~6 D1 {! c' Z9 l$ |: |0 A' R
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
7 A3 Q  o5 i  oMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
) @4 h9 X! @, Y  IMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX: P$ `- Y& ^/ l5 a
| MCASP_PIN_ACLKX
/ I3 z7 F1 b% x, X% S- d$ x| MCASP_PIN_AHCLKX# r6 e2 |, d  d. u( t
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
% A- G4 v/ V: d+ MMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
! R: ?: G/ _% G| MCASP_TX_CLKFAIL 8 T# Z/ t) j( z0 w1 u1 ~0 S
| MCASP_TX_SYNCERROR
$ H2 e2 Q1 J# S| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
( S+ d8 y7 a. W& u. E( @; D| MCASP_RX_CLKFAIL
. D/ N# B- s2 t: J| MCASP_RX_SYNCERROR
6 p+ @/ h; s/ J: L: A7 V& Y3 z| MCASP_RX_OVERRUN);
  c* G# _" F2 h  a" H}
static void I2SDataTxRxActivate(void)3 i9 S0 l  z0 h$ h5 `2 d) E5 T+ ]
{& z; [0 p3 F* J- L4 `' W5 [
/* Start the clocks */
! T5 i* p' c& yMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);3 D, L5 i. }' f& G( a, s) o
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
! N% A" ^4 v7 l; N5 B7 F; {0 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' z1 |6 Y2 N5 N5 T" f3 ]EDMA3_TRIG_MODE_EVENT);
6 u* L' @; l, J; i0 b$ r. d4 REDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
! s' M5 D) ]: ~3 t+ V& p: vEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
- E% R) k8 J: j* B% B! X5 h2 h0 \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);$ }; m; c7 T( @1 l, J0 Q
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
3 u/ g8 {4 a* B3 t- }' Dwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
8 L" t, c! F+ g0 i6 c- `McASPRxEnable(SOC_MCASP_0_CTRL_REGS);" G" h4 E5 @8 F! K
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);2 e7 s7 H* ?: u3 K( C( _7 F6 [
}

  [- C! g! a! g9 u. O( ?2 O: C
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
2 _# ^( f8 m" a
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-21 11:18 , Processed in 0.040457 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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