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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11980|回复: 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,2 m# O4 F' [, W# K
input mcasp_ahclkx,
9 T6 s, r  {& n! u  ~: \! P' sinput mcasp_aclkx,7 Z6 c- O( N7 b. |4 [
input axr0,
3 m; M: f: f# z$ t% }+ m. X
4 n5 _! }( @9 L  f1 z; ?# Voutput mcasp_afsr,: p' o2 k. D+ d2 |1 P5 D1 g
output mcasp_ahclkr,
, E8 }. B, c" M$ z% S8 d. qoutput mcasp_aclkr,) a4 \9 i8 ^) X$ ^6 V- m- R' y5 R+ ^
output axr1,
- D, I- Y! E* p3 |3 D/ H4 ^: O6 S
assign mcasp_afsr = mcasp_afsx;3 Z1 V% B& \* d2 v
assign mcasp_aclkr = mcasp_aclkx;
/ @5 B7 S. }: K# kassign mcasp_ahclkr = mcasp_ahclkx;5 Z, j8 B: }! Y8 A9 |# e
assign axr1 = axr0;

+ O. j6 k9 p! a9 L# R, g$ w2 [, u% c, }* _! V
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 I% G, L% i5 E: `( |- k
static void McASPI2SConfigure(void)
( _4 q0 p; c: t$ a" b/ [! T{
, H  i' K+ p0 M& ?* zMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
6 r/ C& g) c0 b; c* K2 UMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */9 u: b( ^, H3 N+ R
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, n4 R, h4 l3 g# i! t0 @McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */) }* H4 e& }5 M2 z' {, R0 \
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 B6 l% r5 l9 r; j! N- QMCASP_RX_MODE_DMA);
: T' g0 h3 X+ q, }# u9 \McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
! |6 Q8 C! E4 N8 [# y/ mMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
" k8 p) J/ |- o# k8 g$ C' DMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 4 u$ \/ Q* {9 U! r
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
" o6 o2 A4 X- S+ \( Y) P# tMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
. h2 E6 I: _; V2 DMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
7 u( p/ }9 O/ D3 p8 O: N) o4 w  k2 VMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);- u. }3 G" l+ G- ^
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); . M  E2 \$ A1 h" K7 t
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
* c; \- t/ s+ G; c+ `: [: ~2 Z0x00, 0xFF);
/* configure the clock for transmitter */+ j; ]2 `5 I. M% r
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" D* t& h; P; P% r6 W; J
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
$ L% \: u5 c- IMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,3 n* f. V: Q7 g3 E( u% x* E" O
0x00, 0xFF);
& T8 R  ~  S  }9 b* \* r
; O0 X' Q. n" P. h9 E/* Enable synchronization of RX and TX sections */
  M7 I9 [- K. r- [6 f; N& }McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ }" G' r  l/ A8 _! q, M" ?+ S* AMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);0 o' e7 A& Z3 u$ q' s3 L' X, d' N
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
, |" {6 K3 e" M' q; u** Set the serializers, Currently only one serializer is set as
2 H0 n% {. }$ G6 M) H% [6 Y7 Y+ G** transmitter and one serializer as receiver.# J8 ~. L' p! k1 }' [9 \
*/
( `, W9 O. }! J/ L4 J6 fMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# `+ w- P" m: ]' p7 x2 |7 ?McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*: `& j9 W: Y5 K/ k
** Configure the McASP pins ! t2 E7 @9 l; A/ ]& n5 X
** Input - Frame Sync, Clock and Serializer Rx
8 U  D3 T' n% H" M, A** Output - Serializer Tx is connected to the input of the codec
& C3 j, h: S8 N*/
9 D/ T# @4 b5 H0 t+ tMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
" G5 f" A6 ~) s7 R4 a) y1 jMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
; \4 e% {" D  ^3 Y, ^4 p2 B+ LMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
$ O( Y1 \: ^( V: D# ^7 ?/ l| MCASP_PIN_ACLKX& z, q/ b. q) F  ?# n; {. J
| MCASP_PIN_AHCLKX: s" e* z6 X9 L+ z3 m
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
9 I& t; z$ h; f: O" `2 g7 tMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
2 ]2 E' K* X/ \| MCASP_TX_CLKFAIL 2 _  O7 |1 a5 r$ r2 d, d8 n
| MCASP_TX_SYNCERROR" l; z1 _! ]# x- `2 l& |% D- ^7 b
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
* i6 H/ K3 e7 _0 |5 l' h| MCASP_RX_CLKFAIL( O, C9 B7 [& I+ j8 c8 F: Z
| MCASP_RX_SYNCERROR , d4 M3 C. C" k6 p, V  Z& M, H
| MCASP_RX_OVERRUN);& ?, H: \+ h* x: ?
}
static void I2SDataTxRxActivate(void)
% Z7 F% L. ]' w( ~0 u4 L" n{1 R* A2 a- L- d) u
/* Start the clocks */' x8 u2 F$ S* _) j+ n- z
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);7 o0 _0 |6 Y6 q3 R/ I( X% g
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
' F/ |! n' k2 h  E) D) NEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 r. V% F( |1 O; V' ^
EDMA3_TRIG_MODE_EVENT);# W; b9 H5 T" e0 l) g- b9 y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
# e4 e) h3 x: w: Z) Y% f& OEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
3 d/ }2 _  K: V! U0 l! NMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% P# w) U7 u: n6 ?
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
+ E4 [! t% u, `* _& Swhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% l0 ~' C3 b* R) H& r- g" C' ~McASPRxEnable(SOC_MCASP_0_CTRL_REGS);+ W6 k2 I, M* Y, s' V( s
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
+ Q2 |  H  m) x  F) Y}

: g& J- G' V, ]1 ?
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

; j5 X' A: C  e+ @6 a6 j! K  p$ Z) j% Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-22 19:27 , Processed in 0.041257 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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