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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1213

积分

金牌会员

Rank: 6Rank: 6

积分
1213
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,* g/ {5 z  T. C- c
input mcasp_ahclkx,
0 I& ^3 ?. p/ q- I2 o+ A, ginput mcasp_aclkx,
. i$ Y- B$ v3 ?* t% Y  B" Sinput axr0,
! v8 H- l) \- ?: X# B
' E. ?7 y' ]$ I" E/ ]output mcasp_afsr,: q, R* U. R2 d. G* c6 I" j
output mcasp_ahclkr,- a. s8 |) s! A
output mcasp_aclkr,
. {8 F  p8 S9 S3 L) h9 O( }. boutput axr1,
8 h4 a* ^" M% b$ |) z2 w3 ]
assign mcasp_afsr = mcasp_afsx;% [" h2 D& u7 D+ [7 c5 _
assign mcasp_aclkr = mcasp_aclkx;
  c; ]  K( A4 N& X: y/ }7 o$ J4 d3 Wassign mcasp_ahclkr = mcasp_ahclkx;1 Z" C7 P9 \+ R4 Q$ a+ r: R
assign axr1 = axr0;
- g8 Y3 @8 H5 W( W
' U% |9 I5 o0 x  {/ i
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
3 J/ M7 _9 S1 ?4 b
static void McASPI2SConfigure(void)3 z* k' f* B/ s6 m9 K* u* n
{
, ~7 c% Y% M- x* WMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
3 `; I* _# N( l, S* O2 Y) P1 y: PMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */* D: q6 x2 R% N
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( S4 N: d( s7 \) i+ }McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
3 ^" F" ~; R8 HMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
6 {' e) c: e, p  i9 b% w, JMCASP_RX_MODE_DMA);
9 T4 C0 J+ x5 G' D) uMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, u. x- u/ w8 [8 f: f5 h7 D1 c
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */$ s& Z& y- D9 L; a8 L4 w
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ' N, T2 L/ g' j
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);+ U' k: M9 e  V) ?, l6 y
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 0 U- J% o9 F; W8 Q9 p
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
! ~' z, d* {: j2 v" oMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);, r/ H) {" Q7 j+ Y  f# S, s) X
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); # e# ~3 y' Y0 z3 U- B3 Q3 J: d
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
  ^6 v+ `) L: `$ ]) C( F0x00, 0xFF);
/* configure the clock for transmitter */
3 y7 G" ]" E' ~) Q/ ?7 M5 pMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
# w) z6 D" `/ O2 ?! Z: q) RMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ! w, }* P7 d: a
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,. ^3 R9 g+ y' B4 O4 W$ J
0x00, 0xFF);
  M, s3 {1 c4 z  h" G& W
+ D8 _' n( @6 `+ `: Q0 w/* Enable synchronization of RX and TX sections */ . I, e; ]8 m- T$ X
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
  E' q# U" ?- M6 W& H9 n, ?8 WMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);* [. R$ t6 b( k
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
5 }% v) W0 @) \0 |5 q** Set the serializers, Currently only one serializer is set as
' a, T' U( W; T1 |: Q** transmitter and one serializer as receiver.( {, ], Q3 h" T3 v3 m
*/
) ]9 l* v$ x" H2 ]  gMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);+ h1 e/ U. A$ k
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*& `7 x' X8 r/ I7 B) C. Y
** Configure the McASP pins ; U: ]6 o8 ^5 @5 X) w/ U) A& \& ?
** Input - Frame Sync, Clock and Serializer Rx
1 q7 s; _( Z$ M: E: {! f4 p. y4 S3 d** Output - Serializer Tx is connected to the input of the codec 5 b$ z1 J( y( a2 e
*/
1 e' D5 u5 M, wMcASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
/ w: N" H! V9 ZMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 Z) Z- Y9 P6 A- T
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX. x7 ^7 p& L6 a: T. ]
| MCASP_PIN_ACLKX0 }% C8 R: `2 m  K2 }/ q' w
| MCASP_PIN_AHCLKX+ e! G% T2 z6 ^9 i; o0 k6 K
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
. E1 i" f0 D5 @* n2 gMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR % H% f  m4 i# H/ x$ S
| MCASP_TX_CLKFAIL 8 L+ S$ y7 k* `6 E* s. d- h% Z
| MCASP_TX_SYNCERROR, i, T6 I! ^' q
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR " s; D5 |  U. y' m4 f2 o: ]2 [8 L
| MCASP_RX_CLKFAIL. M1 O. z: e4 O9 H1 n0 G
| MCASP_RX_SYNCERROR : N$ j3 N6 [- I
| MCASP_RX_OVERRUN);
4 P2 E% x0 ~8 m; o) A}
static void I2SDataTxRxActivate(void): y8 j' J% p% U! l0 a9 W
{
3 k+ M' K) e6 N9 D/* Start the clocks */
4 T( b/ ?( U5 X/ PMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);' {6 O* h1 h  {6 ?( L/ n5 [9 n
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */% j, `5 u& j( y8 i( [( c9 ]5 Y# [4 y
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 I& P) V! ]8 q) H) K/ j3 g( dEDMA3_TRIG_MODE_EVENT);
9 `8 Y" c7 v% Z/ G9 {% N4 O, V, WEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
  m6 e6 k% X% g* h6 z9 S& [4 n! YEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
, ^9 ?& h( p( C% `" T: S. c& X) d* X9 @' \McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);1 w4 ?: H  \" Y- g
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */5 O% {' y2 E+ s7 I5 b+ X! J
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */( A' s) S$ K1 M4 G  h
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);6 f3 q3 N3 G! K
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);! |1 `9 O  t' b3 Q$ k) f# _" @
}

2 _- `; b% l. [6 P
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

- k" i9 L# a( B  l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-2 13:04 , Processed in 0.043511 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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