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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8469|回复: 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,
* Y) P6 i/ _9 g# P+ c: ]input mcasp_ahclkx,8 x6 J/ v! k8 b. l
input mcasp_aclkx,$ h6 V9 ?" c8 a* Y  o  r
input axr0,1 J( F( t. H: n- r# u

: ]6 ~! [- h  t+ X  Xoutput mcasp_afsr,
2 B+ l/ ^1 r8 s( J3 a1 b1 n2 Coutput mcasp_ahclkr,
, e, @$ W/ r" |' i% zoutput mcasp_aclkr,
; [- ]1 z4 @4 ^' o$ y' @output axr1,
7 {1 l# C! H" Y9 M; z& H
assign mcasp_afsr = mcasp_afsx;
/ ?6 P( K1 \/ X- }- w, ]; Hassign mcasp_aclkr = mcasp_aclkx;
: S: I2 z5 F6 ?+ b; x) yassign mcasp_ahclkr = mcasp_ahclkx;* v: {8 x$ p! k* Z; c& m
assign axr1 = axr0;

6 s: i# p( c- v9 l6 T& Z: L! C/ h; g" c. [' M9 F4 @6 t) a1 M
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

% j. _2 a, q2 O" ]7 H
static void McASPI2SConfigure(void)
9 D4 D5 @7 z: g! g. F. }{+ q- h3 Y9 ^6 g0 V( ]4 p, d
McASPRxReset(SOC_MCASP_0_CTRL_REGS);; u) p, O& {+ D, y* R, m0 d- J
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
/ ~; O; v& d! Q3 |* s  L8 WMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
: B; m" Q/ G9 l4 ~- Y' H# YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# ?, Q# f1 r, v' ?; q" _
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) B* K- u6 a9 [* T, O% Z9 }2 ?3 U" LMCASP_RX_MODE_DMA);2 M2 U9 C4 }' r  y' S1 g, [* U' v
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
& Y) W% J' }; Z' X4 O( n7 T2 dMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
7 G9 _* l, Z8 E7 R* U; p- c2 bMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * d9 u" k: x* O9 G) a0 M- {7 P
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 O9 ]; ]5 y- h- }McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
( j4 P8 N9 Z  q$ \0 ~* L' @5 Z* ?MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */1 r0 g& V+ L$ s' c( S/ D
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);" w- A! N* C: A% \
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
" h1 v: u$ r( k. X/ f. @McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
. B! m9 s! M4 |* O0x00, 0xFF);
/* configure the clock for transmitter */
+ f7 c9 ^. `$ ]. B8 v/ b( mMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);* _" |7 X1 B9 z
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
8 I. A' r# w" e: r; s$ z. TMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
" R% U' W  B& J. @0x00, 0xFF);
7 o/ P8 m4 M. H& u! [. s" x0 P! p4 W- K5 U& a
/* Enable synchronization of RX and TX sections */
* H; ~1 ~" \: B8 f  ?' tMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */) w. V; j# B" R* _5 q/ w
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);' n; s6 z$ `6 Y( _  {8 t' c
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
' s5 B; q1 X2 i4 x** Set the serializers, Currently only one serializer is set as' I9 r" ]+ p' f; k  K  P
** transmitter and one serializer as receiver.  L3 e5 [9 b/ v/ C
*/
4 D% e$ C! S  H- o; XMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);3 N( C; R0 e3 ], b7 N8 a
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
  V% n" p1 d5 b1 ?  B% X$ j** Configure the McASP pins
2 Y: O( o4 @% S( x) u! y* e/ V1 Q** Input - Frame Sync, Clock and Serializer Rx0 z# X; k# o. F! R
** Output - Serializer Tx is connected to the input of the codec
  {. D4 t* K+ ?/ H- ]*/( [+ j+ n9 G3 S3 }2 c) F* s. C$ K9 b
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
$ v9 ?4 ]" r" Q1 s4 k  S/ O+ |McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));9 P0 y+ ?$ ?# k6 m
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 L7 G- U. [+ o" h, c7 E  L/ [! D* H| MCASP_PIN_ACLKX
3 c( X" D' O$ h$ E3 Q| MCASP_PIN_AHCLKX
6 Y; Y* g" O3 {% a0 T| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 p+ t, Z* Q- _7 ]. n
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
" h7 [: j* `* T9 h& R| MCASP_TX_CLKFAIL
: l: N" z$ T  }+ v$ C) ~| MCASP_TX_SYNCERROR4 Z: O8 b/ r  j8 X' E: ^
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ! i8 `( f3 k$ g  M: ^' @
| MCASP_RX_CLKFAIL
! z, |5 T0 I, M6 B- f" ~6 @| MCASP_RX_SYNCERROR
, W0 z3 a: l9 J3 r+ H| MCASP_RX_OVERRUN);
+ ]% V5 s( o& @/ U}
static void I2SDataTxRxActivate(void)
( L- W  F# T# s7 u2 f{4 o1 ^- E% [0 Z2 ?/ ?% \+ y
/* Start the clocks */
; C% f) `) k( NMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 K/ e% X; w2 D, TMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */3 ^6 ]5 d+ U1 L% e
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
  m4 ^/ Y9 x! ]EDMA3_TRIG_MODE_EVENT);
$ ^/ ^# ?0 ~4 IEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, . y; X; S  W. R3 e  \2 u, F3 C
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */, M7 Z5 r5 w" V2 {5 D
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
  v( X, y( R8 p7 |- D9 j+ h$ MMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
6 w8 r; y4 M4 g: X) N! h9 D/ z2 uwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
6 S$ [! T8 d1 SMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
7 z) C; d" s+ G9 A" {McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! B+ M2 [. ^6 O- {# {$ D, B- P; v$ {1 t, X
}

# _2 f1 r4 n- _7 C% n/ J
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; C# D; [4 u- B, [4 j2 s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 09:52 , Processed in 0.040312 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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