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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 68|回复: 0

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1135

积分

金牌会员

Rank: 6Rank: 6

积分
1135
发表于 2018-11-7 13:28:07 | 显示全部楼层 |阅读模式 |文章模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
, l, J4 n9 A5 L' w( m) \) n& @! G; ]7 binput mcasp_ahclkx,
8 ^' Y# |! Z1 S9 ninput mcasp_aclkx,
2 T8 g* b, D9 Q) p: o, w% o" Oinput axr0,) b$ i: i7 n" Y% V% W
' I/ I& H; x# R
output mcasp_afsr,
. k9 ], M8 w* Q- y  routput mcasp_ahclkr,; d; H+ P0 J( {
output mcasp_aclkr,
% s5 |: L5 ]8 ~9 Routput axr1,6 Y/ b5 O: g- V' t- t# O3 h
assign mcasp_afsr = mcasp_afsx;
, f9 I! u0 _0 N5 T  l4 a- p4 Oassign mcasp_aclkr = mcasp_aclkx;8 D% s! Q: Q7 v: _3 C
assign mcasp_ahclkr = mcasp_ahclkx;
+ m' z0 D) ^% c  z9 c  w# r8 }' V: m4 Gassign axr1 = axr0;
& q* m  S. K; j: p" q7 W$ s, `

( G$ r/ r4 J% j: y
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
: k7 N+ Y4 |5 q1 @
static void McASPI2SConfigure(void)
1 [8 |' p0 p3 c0 H{1 r7 v. T+ |. {4 u. `' G$ P* U
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
! B6 W! u9 q3 D- ~5 C# sMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: s" v$ z/ e! J' D5 I1 L* v, e* GMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);( p- P+ ?$ N/ S! W2 \
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
. |! ]% j; L# z4 h# LMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, _& U% i, X. G% g8 n! q- m6 `
MCASP_RX_MODE_DMA);
" F9 t5 h6 }, `8 a: T2 [1 S5 D. oMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- F$ r) Y  }; {' r2 O: a* c
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */0 n' ?' C3 X/ b0 X, N' v
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, ) b+ O7 J4 I/ b2 |
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);- J( l4 C& z* v9 [, S: u5 d
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ q* v7 P( W9 WMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */  Z# `. X- o1 f* b1 l6 [. G
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
' X/ G* L- [; J" D0 }McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
. w9 i( O* {% c9 F, {+ g& ^$ uMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
) m+ c. I2 h' W2 }0x00, 0xFF);
/* configure the clock for transmitter */
8 {* I5 q& x" w6 i; G7 x5 yMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
2 l$ a: x8 z' XMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' H" w8 n  g" ?# `" l0 c
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,$ x) f  B% a; v9 I
0x00, 0xFF);
2 R6 c* J; ]+ G- ^, E
% @  ~5 Q' O  w1 W. D/* Enable synchronization of RX and TX sections */ 9 j/ [1 N8 S8 w, c0 f4 S$ c
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */" n2 Q. w4 c# L
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);/ m% Y% O# K8 l
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*9 n4 X$ I$ n, {4 L1 H5 G: f
** Set the serializers, Currently only one serializer is set as
# h& L1 r8 L; P+ R** transmitter and one serializer as receiver.
2 y* m0 m0 a3 n! c* C9 G*/
: X: V! C  _8 H. f5 i7 d9 h8 iMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);6 [: ?& l, x9 ^) D. L. X
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*( O! _% P& B. R5 c
** Configure the McASP pins
1 F+ g0 C5 H8 \** Input - Frame Sync, Clock and Serializer Rx1 a, Z" n3 y8 e" |
** Output - Serializer Tx is connected to the input of the codec
5 |; o" U. E$ |' v5 @" G3 F*/2 x& C9 B9 O( q
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);3 H: G% u, q  b' p. K
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
' h5 m/ \. S& c7 H; F. wMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX+ |5 [% e  {( ?  b3 \, X
| MCASP_PIN_ACLKX5 \% }: d7 K8 l" D! Q. N( C
| MCASP_PIN_AHCLKX; T; C2 \+ R4 Y# c9 \5 ?
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */1 ^2 c- W! t! ?+ {2 _) u) U
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ! K- _7 |! ^# W
| MCASP_TX_CLKFAIL ; r% j6 l( ?+ L- w1 T
| MCASP_TX_SYNCERROR3 `/ y, V# n  y' O8 L! g
| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
  q: D- T( n! Y% u( V( b| MCASP_RX_CLKFAIL
% R2 D3 M" M# R- K  @0 z3 u3 d  @* C| MCASP_RX_SYNCERROR
& I9 J. c* [. L. k# A  u| MCASP_RX_OVERRUN);
  \4 I4 E7 c' r$ W}
static void I2SDataTxRxActivate(void)
* z# k, g4 J) a. ]% W* g/ ^{
9 Y" x: g, T% L- B/ D3 O/* Start the clocks */
7 u6 w7 k/ t! f* V7 `; K: jMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
7 b' ~  e( w/ h8 w7 H% U3 N6 T1 B5 uMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
+ w+ C2 p) \! \% ~) Q- z9 {EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,3 i2 D% K/ j6 U( Y) s
EDMA3_TRIG_MODE_EVENT);8 L; M) V; b% J& ?7 n+ a) n5 V# I0 q
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ( L  u% x: W8 ~  Q
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */+ Z9 ?$ G& h" @$ V& x- z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
2 \+ o# A. ^% \/ I8 e7 oMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */( o6 Y' a; X7 w3 ~$ e- P) I
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
- N3 ?6 T. E2 G$ B+ A& e* ~McASPRxEnable(SOC_MCASP_0_CTRL_REGS);8 O/ x% x2 D3 B7 f3 r* y, l
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);4 q( b9 A3 M$ A
}
& k9 D  I1 Q9 b9 N4 L6 g3 L" L
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ B. e& |" U" C; G* A2 `. d
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有0人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

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

本版积分规则  回帖提醒

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

GMT+8, 2018-11-17 17:13 , Processed in 0.132715 second(s), 35 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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