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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 12083|回复: 0
打印 上一主题 下一主题

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1215

积分

金牌会员

Rank: 6Rank: 6

积分
1215
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,- T1 Q, f1 f/ [$ |
input mcasp_ahclkx,0 \# P' O8 x' T/ f0 l  E7 i* a0 ]
input mcasp_aclkx,- N- S* |% Y5 N! ^6 Z
input axr0,
; \) `! `" [) O1 y4 b2 u7 `7 n1 L7 o* b. c% F3 H: D' n- L" ^
output mcasp_afsr,
" J8 Y0 Z1 E: I. Noutput mcasp_ahclkr,1 [2 |. a3 F  C: V: {" F6 t
output mcasp_aclkr,
: [- N  `  F4 S- s! ]- \; Boutput axr1,4 N7 f9 G+ l- k8 x# [0 J$ ^
assign mcasp_afsr = mcasp_afsx;
. d# u# h; H1 cassign mcasp_aclkr = mcasp_aclkx;- v& L! _0 k7 Y+ g
assign mcasp_ahclkr = mcasp_ahclkx;% k/ i4 y& ?. q  D5 ]9 S  P3 S
assign axr1 = axr0;
- |. U- ?: Q* H# R' @

6 e- ^! F$ p8 S3 V. ?; u  E
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
; i7 A; V- g8 V. X
static void McASPI2SConfigure(void)
$ g$ H1 ^" M' o) Q1 Q- g{$ j/ i$ l6 L- D4 ~) u
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! ^% M. k" g6 o8 O& a8 P. N- C0 eMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
' J+ |0 ]$ J1 x4 j' EMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);. d$ o9 y0 T$ ?& y
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
; D5 t- v& k5 g3 v2 Y9 s* w* @McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! Q/ v! \8 L& X  }4 EMCASP_RX_MODE_DMA);2 o; ~" P4 v/ \( `% M
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,. _4 R! s8 j3 u. s9 A  L6 _1 Y) Z' q
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
  p# o1 Q1 T/ n7 ~( N5 CMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
  s4 a8 b! p* t" o* vMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! z( b( l6 K# t. R. [McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& q; \: b# e+ e) ^2 e9 wMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */4 r8 M1 A3 M+ i* u
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);# X8 X8 ?% O& z) Q% w+ D1 c
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);   r- t  s+ k$ I  n: c6 k* x/ D5 |4 C8 |2 H
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,9 m' e2 q1 }8 v8 }
0x00, 0xFF);
/* configure the clock for transmitter */
0 |$ r8 h: S1 ^2 t$ R. Y2 SMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);+ g0 f& Q4 j  U  T1 U- u
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); + \# [1 Y7 T1 g0 y( R7 o2 W6 ?9 P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 R6 d6 e" W' G/ T- A1 _9 `$ N; r
0x00, 0xFF);; J9 B, }4 |3 H7 F( }4 T

4 ^1 M2 m+ y3 S4 n) {/* Enable synchronization of RX and TX sections */ * C( [* X, r% d0 R& D2 E
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
1 Y/ D" x9 v) O8 y+ k1 xMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 s3 j! P- L# f5 Y3 r
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 V4 d4 m* \$ g8 ]# F** Set the serializers, Currently only one serializer is set as
; D  `. A) E3 a/ o+ J& }* f! f- D** transmitter and one serializer as receiver.; E" y' [$ L3 u  S0 C
*/$ i% G* q+ h0 L1 B! O7 M+ P- J
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);5 L2 r! `: C; L$ D' G
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
& m* w5 Y" M- {# i0 Y# p2 e, W** Configure the McASP pins ; _1 Q- j8 H  _8 y( H# T
** Input - Frame Sync, Clock and Serializer Rx8 F% N6 ~" `7 l4 D8 l1 _
** Output - Serializer Tx is connected to the input of the codec
7 W7 P/ F# s. `: g*/7 @+ {! K: h" T4 T# S  Y
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
9 u- }% h4 l# g6 m, PMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
" N$ o9 O6 f9 g( L0 y( J4 `McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX9 k$ ]8 D( z, N' d( F
| MCASP_PIN_ACLKX* d& D4 f" e/ {4 c* K$ f) K( h
| MCASP_PIN_AHCLKX/ u  ]$ j; z& U7 \& A8 a
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
( ?; j+ }  r8 z5 R% F2 v+ p1 ?McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
5 y$ Z6 S( F7 W: `6 N| MCASP_TX_CLKFAIL
7 K7 i% T/ m3 U' k# [! g| MCASP_TX_SYNCERROR  h5 z5 R" }4 k8 L! W
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
$ a3 ^/ y! {4 r, l9 [| MCASP_RX_CLKFAIL( V3 o. m# f' R! e
| MCASP_RX_SYNCERROR # M5 x0 T; x7 I8 m7 d
| MCASP_RX_OVERRUN);. |0 ^. t6 `8 _$ l+ K
}
static void I2SDataTxRxActivate(void)
0 G) e5 L: g; `{; B0 E6 v: u# M# w; n
/* Start the clocks */
* `# X8 `: X* \5 Y9 ?/ B) EMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);# ], E2 z5 q- \/ R/ K0 d
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 c1 z2 l) E& I  j/ x# v" ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
6 X( z7 R' J; YEDMA3_TRIG_MODE_EVENT);
% T! o$ T9 y, e& J) ]& O2 x# YEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
& ?3 P+ r5 t/ q9 CEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
) t8 c  W7 T$ r& n7 ~McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);+ d0 \* ^: H. d: w
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
& C& H/ Z/ p7 mwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- e' `6 I0 j( E. |McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
4 S, W, |9 a) ^McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 a1 {# {$ |9 j- ~6 }
}

, ~) I: H. r( A* F5 K: N' v0 R
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- i; _; t: J9 B  S' f2 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-27 16:16 , Processed in 0.039898 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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