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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10739|回复: 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,) Z0 C5 V5 n9 B# B) s' u
input mcasp_ahclkx,9 A4 T0 Z( W; y, j
input mcasp_aclkx,
% x$ t! @7 T- Q" g  O& [input axr0,
6 X& C* u! Z/ m4 Y4 x/ @* [
* g$ I( s  r7 R% z5 c6 m. noutput mcasp_afsr,+ g: E' |- p/ |
output mcasp_ahclkr,
: b8 J! v2 s$ foutput mcasp_aclkr,
# x2 e7 W1 X7 U# i7 Woutput axr1,0 _/ H- e" M! k0 L
assign mcasp_afsr = mcasp_afsx;
! r  U" {1 Y2 b' \assign mcasp_aclkr = mcasp_aclkx;
5 P: h7 B2 U. W5 P4 qassign mcasp_ahclkr = mcasp_ahclkx;$ R, n% d  {( x4 B
assign axr1 = axr0;

. C3 y; j2 N, S5 z) e
! ~: Z" b  w' Y* D9 ~. [3 w+ v+ A
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: d( B: P, y1 o
static void McASPI2SConfigure(void). n8 z  s( S' N8 Q2 L- @% i! H
{
. |7 f8 }0 I* x7 P) h( H+ }& vMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
, `+ C7 c; C  x) GMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
0 _# o% c/ F3 G- e& K. pMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 G' k) }0 ^6 x8 ]1 l- {! b1 eMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
* R$ P( M7 w. b$ C8 ]9 O% G3 w% wMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,/ l6 ^0 q+ R# g6 L0 F% ]
MCASP_RX_MODE_DMA);8 w9 b( B# C6 g3 {' l
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
) p. l+ g3 i  qMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
) W! S8 v9 l! K- D8 _; B+ c* gMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, * E* V1 @" ?: c7 B$ {+ S
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);3 I8 M; }7 E. y! Q
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
& U) T5 B% o9 Q1 ?# l0 sMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */, Z  d1 b6 g+ o- Y
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);5 n" U) @0 R' C2 n0 n. u- m0 u4 H4 Y
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 9 N( z/ F7 v, k  o2 G& N
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
" t, S' E. r6 p& M) O& o# |0x00, 0xFF);
/* configure the clock for transmitter */  b4 D) `- Y- a/ E6 K; ]
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);4 g& C+ g( j8 _" N, b
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
3 b7 g6 z3 w! f; H2 s. xMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
- b6 P8 k3 ~+ j0 K0x00, 0xFF);
! }' B: q# Z! l: E/ |# E, F. e0 y! S+ k& N+ ?
/* Enable synchronization of RX and TX sections */
/ ]# {; Y. g# u8 E  k# NMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */7 Z6 U6 s: Q) ~5 L* R0 g5 C* `9 p# W3 x
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 `* y) ~2 E3 n  I, T" G0 wMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
3 y2 d  T% R& s1 X: ?# G6 O** Set the serializers, Currently only one serializer is set as* o0 U, {$ q9 j2 Q$ b- R
** transmitter and one serializer as receiver.1 r4 P* T9 ?, n' l1 v3 r/ M) n
*/
) R# ^; N' U- j- E+ hMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
3 x: \$ z! W" m8 O% A$ k8 ]McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*5 Z1 o" i' k" \4 [% `9 a  h, |
** Configure the McASP pins 9 a) w6 Z3 ^" g6 H! t: k
** Input - Frame Sync, Clock and Serializer Rx
3 N- o% w% r' f, d( k** Output - Serializer Tx is connected to the input of the codec . G1 Z5 U4 ?3 T2 Z2 l% c2 s
*/
9 g( I2 E. O5 G4 K5 dMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);2 ^+ D4 b+ @* y$ l8 ^; m; A
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, H% j* j: [' r9 D$ x$ ?% ZMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
7 ]  Q/ }4 i# q( D2 Q( t0 L| MCASP_PIN_ACLKX; c( `, [; e8 m
| MCASP_PIN_AHCLKX: c6 c0 ~3 E; F5 H  r
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */9 P9 I: T1 Q+ I0 G- P
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 Z& \2 v. g# P. u* N: i| MCASP_TX_CLKFAIL - G1 b7 g2 ~% e- R& d, {( \3 t8 q
| MCASP_TX_SYNCERROR
" X3 w: c, b- B0 g2 d! }| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " ^5 c0 e$ V* I& a7 M1 m6 K
| MCASP_RX_CLKFAIL0 J; h" \# S9 U( o" R6 d
| MCASP_RX_SYNCERROR
  V  P& [' m' i* o* c5 O| MCASP_RX_OVERRUN);* _, f; j% h' _) l5 e
}
static void I2SDataTxRxActivate(void)
9 l! S/ }. I1 m{' X3 K  q) d* S9 X$ l/ e/ y5 q- _" W$ A
/* Start the clocks */4 D4 r% e& P( B2 [1 b! r
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);- ]  `7 E6 `) x" a3 e
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */5 i; d1 s* t. p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
+ \. \. z5 Z2 rEDMA3_TRIG_MODE_EVENT);; |) L2 ?/ ^4 J  [" B
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
: r/ O2 g3 ^/ {& |% I9 fEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
1 {( Y& N1 u, V4 QMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);0 Y& Z: q# M) |$ W
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */6 K: Z) q; |3 d  D  X$ S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
: }. L; x! }' OMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);" i" I& V' m- e) F( `; N
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);0 l" }+ {8 P) r5 r+ K2 G( G3 ^
}
- v  ~, P$ _) z7 v9 N* x
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

. J2 p2 `7 u/ s: V* h2 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-14 16:45 , Processed in 0.040062 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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