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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 8588|回复: 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,  z# c0 M2 u, B$ v
input mcasp_ahclkx,
& V# U: C- T6 P: G6 G  r- zinput mcasp_aclkx,
# j" P4 f9 |5 Z% X, W: P, iinput axr0," j7 z$ ~, C- B+ [9 d1 [# R! \

5 Z9 }* K* c. W4 F/ `& koutput mcasp_afsr,) \* A8 g; ]6 M& n" F8 \
output mcasp_ahclkr,% ], P. F4 r% ^' D; {6 c) b
output mcasp_aclkr,
; k, F1 T0 h- E+ `9 Poutput axr1,
# l1 x/ ?7 w$ B: `9 {: K) u- [$ a
assign mcasp_afsr = mcasp_afsx;9 t4 u  u7 M8 m, M
assign mcasp_aclkr = mcasp_aclkx;9 y. I$ A5 n  k, v- I
assign mcasp_ahclkr = mcasp_ahclkx;: v" b  Q- d% E5 p
assign axr1 = axr0;

* v/ v( ]7 T' G7 A1 j+ ^2 [
! u* s; X# @+ o0 Q4 f
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; m* Y* B* p% v& ]7 j+ B& d
static void McASPI2SConfigure(void)
. `0 O$ U" e  @! ?: H3 w8 d{
& O0 C4 ~% @) A+ T6 qMcASPRxReset(SOC_MCASP_0_CTRL_REGS);& \3 G5 u' N/ ^3 a
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */' F7 e8 F( c5 x
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( G  k& k4 W5 \$ t0 G, pMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- j" Q% G- J/ g6 S/ z+ B  {McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 H( }. S- Z* y' R, ~7 a" ~  C
MCASP_RX_MODE_DMA);. l) @6 Z0 ?/ E# W) ^: ]2 o
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! }7 C  k  y4 P+ P; |MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  h! [: ^7 K$ k6 ?McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,   N+ z4 z& ?; y$ y% O2 ]
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
- h0 q: E$ T  P4 b- d9 dMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
  x4 C9 v8 T' {. I, @MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  @* N& O! }; E6 D0 j
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);  q3 {$ @5 d9 u$ u  _3 X' S
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  y/ ^: Q1 x0 t4 M6 a3 `% eMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,( k/ s/ ?' `$ x9 K' O1 M; V
0x00, 0xFF);
/* configure the clock for transmitter */
' A# \( U( ~0 s" J# d- ?) tMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);. K( Y- B) n$ |# M3 Q2 `, D+ M; C
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
0 \* [+ n* ~" U' K8 L7 R3 LMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32," \8 T# Y0 x% F- s+ n$ O
0x00, 0xFF);
+ k. y) K7 E! K! m; }4 W9 [) F: H' z% i" B% [) m# D
/* Enable synchronization of RX and TX sections */ 8 E( _5 J1 v+ k- y, L, V. e$ F$ o
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
" v" |/ d9 B5 Z/ x: }( b+ CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
* q6 ^$ |$ C1 f% T3 R, @) hMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*0 H; Y. P, S- Y
** Set the serializers, Currently only one serializer is set as) ]& H3 A$ }2 p! c1 o, ~
** transmitter and one serializer as receiver.+ W5 J3 v/ D; E0 Y
*/
4 w# `4 J, d' V# a3 xMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);2 j* M8 I3 Q+ ~6 B2 o; i5 O; E
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 G. L& r) x+ ]% ?3 R( e5 q
** Configure the McASP pins
( C. v# s! X" ]3 ^6 X' P** Input - Frame Sync, Clock and Serializer Rx" m5 _; c* p3 ~* D- v
** Output - Serializer Tx is connected to the input of the codec
7 }1 N2 h, ]+ _* e*/
6 }# C" ^8 p5 Q! U+ g9 J# FMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);+ A/ j+ U8 O) G' @
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" }( H' A* }  p( F. N0 ~! O1 yMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ H& W3 Y& l% ^6 s' y' L2 D# i
| MCASP_PIN_ACLKX
9 k/ Y+ _, x: \; Q| MCASP_PIN_AHCLKX
/ X5 g- @* A. f9 @- m6 A4 z| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* u# f1 @6 y0 w4 Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % y' R6 J( p+ v, J+ Z9 r. ~
| MCASP_TX_CLKFAIL
/ Q5 y3 Y2 g8 d. J1 g3 }/ o| MCASP_TX_SYNCERROR
; Q8 r7 `8 b; s0 Y# M# n| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
7 U8 S! k3 U1 q& S0 O| MCASP_RX_CLKFAIL, c, P6 q% ~9 l- u: B1 x
| MCASP_RX_SYNCERROR
$ L5 g; t' f% E: t! J3 b9 u| MCASP_RX_OVERRUN);
/ o( V. x' L! Z: `9 d4 h}
static void I2SDataTxRxActivate(void)
& F6 x. u3 ?$ R: ?% A4 `9 l* o{" t) Y& h' F+ I* r5 w, \
/* Start the clocks */1 K- N& M. C" f" p) T' V
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);, I; I1 V6 s" B' }* s
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */$ s" z" h% K8 W7 X, k7 s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
- F4 Y; ^% x1 h+ L1 F4 _EDMA3_TRIG_MODE_EVENT);4 m8 [1 _3 E9 ~# l+ s
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, + b$ h: g  [# B) Y8 @1 y* o* F
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */6 P- d: y8 I7 }3 e
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
9 x+ e, a9 i  P1 ?McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */7 |! v# B+ G2 S8 W
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
# j! e. l5 F$ ?* wMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);( \; R3 L- ~0 t0 |( d- X" M
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
0 X8 R" r9 w1 o/ ?! }1 f. m}

, j- L0 C4 k+ Z0 e5 I, r# x+ r" N
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

4 S3 B  U) w( W) R7 @: ?: n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 05:04 , Processed in 0.043332 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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