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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9809|回复: 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,
/ ?; K1 U/ o* D; n9 Cinput mcasp_ahclkx,
, X; D0 [" E+ U1 E& C# A1 Oinput mcasp_aclkx,6 G: U# n! y) h$ {$ t# c
input axr0,
# ?9 N, U! k" J. n" |' U2 a$ O4 |  H$ {# D2 r# c8 @
output mcasp_afsr,
# _* y" I* H. P1 `$ v: Boutput mcasp_ahclkr,# q6 D& i/ @' @# {' l: W
output mcasp_aclkr,6 \% u* |: v3 k. L- |
output axr1,
) Y; n% g; s# e. F
assign mcasp_afsr = mcasp_afsx;& d- [( R& G% r$ ?: i
assign mcasp_aclkr = mcasp_aclkx;3 J' T1 n6 F) C" ]7 b
assign mcasp_ahclkr = mcasp_ahclkx;8 Q7 t# b% s2 m( _  Z' R
assign axr1 = axr0;

" i; N1 U* v  H) [) o7 H/ M3 Q% A
& _4 K% g" Z' i  @" B0 S
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
# ?. y. j$ d7 V0 `: V8 O( @9 Y
static void McASPI2SConfigure(void)
! l& b. j0 v5 |! M9 N6 B1 e{
* B& o" \; L  _8 G" {0 {, xMcASPRxReset(SOC_MCASP_0_CTRL_REGS);; \* x0 X* N/ H7 X- L) x! M- s
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */  y+ @& V! r/ k7 w* |  @
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
' @  y4 `8 F1 o# q" T+ u, ]" FMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */# K% `. K' m# p; H( p" o( P- H
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,; V+ B4 g* r4 k& C
MCASP_RX_MODE_DMA);
% n& B, G" G3 L: n% |McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
  a- h9 ~* V6 F6 O* mMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */- z5 [' z: D$ p5 D) a
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, % W8 u4 G7 y7 U$ J: S- U2 B
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);, D( [- L, A2 K/ B* ~
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
0 T* O4 v1 V5 r  x+ @MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
9 q: x$ v* r3 S% c! U9 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);+ X; P5 v& ]5 t
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 2 T9 i7 f0 }* L, o1 S
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,4 U' q. k8 z2 ]
0x00, 0xFF);
/* configure the clock for transmitter */6 f1 O0 o7 \4 o& k, v& u
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);! ~; m  h+ `3 K" I$ n
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); * g8 A% _& O" w1 I1 P
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) {, j; r# C) K( ?# `/ \# @2 x
0x00, 0xFF);
2 R3 S  j3 @, X4 {. q- x: B. H% M, B' f8 b% R% v% K
/* Enable synchronization of RX and TX sections */
9 v2 B8 N  d, E3 Q4 B  n: ?McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
; X9 X. h* `9 i7 o. ]$ N( t) RMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);5 y$ W) K8 {" G+ c0 f3 o# Y, B% g
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
+ H: E' o; M$ Y) u3 ]$ L** Set the serializers, Currently only one serializer is set as% y( q0 k7 v# t! ?3 N# h% m5 n0 Z
** transmitter and one serializer as receiver.
  W. p( U* T5 M, Z8 G*/6 a% u3 h" L2 }7 u
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);& o; i1 |- P% P4 a% Z: U& a
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
+ g4 G6 m# I! K** Configure the McASP pins
  p  j2 x5 [  t: p) `$ s** Input - Frame Sync, Clock and Serializer Rx0 L/ t' v& {8 y8 _& M
** Output - Serializer Tx is connected to the input of the codec . r- |, o9 s( C& k5 S' `  e
*/
4 ^5 e' h3 ?# RMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);4 }, C7 N' ^5 `$ f% x7 C6 k" f$ i
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
, E2 x9 x+ X) v" h3 CMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' s' a* d9 I. J* ~4 ^
| MCASP_PIN_ACLKX3 e4 d0 O* r' v$ x( t5 G
| MCASP_PIN_AHCLKX
4 q! @" L& y  d! d| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
7 d4 E6 \1 Y) Z8 r8 hMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
0 a4 h, o6 q$ L| MCASP_TX_CLKFAIL
. v/ {  @/ P% ]+ g% [- j| MCASP_TX_SYNCERROR
0 R3 u  O' s6 b, e$ [6 K% `+ {4 T0 H| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR % B3 ]) M) `4 Y, k. f
| MCASP_RX_CLKFAIL$ [5 ^4 a4 A$ ?+ c' I5 R. ^
| MCASP_RX_SYNCERROR + x( w/ A; q' c
| MCASP_RX_OVERRUN);& T- d7 h8 R' i: ]8 @5 q
}
static void I2SDataTxRxActivate(void)
5 r4 _+ t! ^8 K) l, `- Z{8 M) {9 c4 X0 m6 \# n9 q  n/ V' x
/* Start the clocks */
; X$ ]) S5 y7 X% O( |McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
9 h: ^" o2 w- E2 ?& _: r" K7 fMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
  `4 w. O9 E) L  n( TEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,5 L- b7 A- r' @5 j) L  X
EDMA3_TRIG_MODE_EVENT);
) H5 l& ^2 I$ ^3 f& B7 WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
' ~$ t: e- D3 r" o& SEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* z( W( e! i- }! R) F- fMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( d/ _' j% [! d0 U8 }McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
' r) q5 {, y5 ]! i" e$ Iwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
. I3 I9 }  E4 P# V; j+ {McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
3 y6 Q/ a- a$ d3 d9 n1 f6 `McASPTxEnable(SOC_MCASP_0_CTRL_REGS);: X7 Z+ W: M5 B+ I
}
( q1 L! k+ k7 K( J( c1 X; K6 T7 |
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

2 G! a/ p7 I' `" c; r7 f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-20 21:43 , Processed in 0.039394 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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