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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1212

积分

金牌会员

Rank: 6Rank: 6

积分
1212
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,
6 d' s8 l3 [9 x- }+ `input mcasp_ahclkx,0 r  K5 U  u& U  n2 F9 Y
input mcasp_aclkx,; g9 W3 }$ ^0 t7 G0 l. L9 S0 k
input axr0,
0 n1 w- h/ e( a8 o* j1 v2 _: t- V
+ h. V6 Z: I) v3 ~( _: boutput mcasp_afsr,
3 W" u% E0 t$ V. routput mcasp_ahclkr,5 p# j- u6 T4 O
output mcasp_aclkr,$ _/ D( C2 P" s2 I
output axr1," F: p: Q$ e# C( [9 D
assign mcasp_afsr = mcasp_afsx;
0 h5 Y5 h4 b( u, I3 Q7 `assign mcasp_aclkr = mcasp_aclkx;7 r/ n- h7 C+ d& E7 o/ E) \  E
assign mcasp_ahclkr = mcasp_ahclkx;/ F+ ~  V# h1 R* ?
assign axr1 = axr0;

! w6 U( \' r+ d) C  g: C- w
" }, W, S) _; P
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# m9 L( L, L0 i
static void McASPI2SConfigure(void)
6 o) y. e/ d! H/ m" {" {. U{
% B0 e, G1 H: cMcASPRxReset(SOC_MCASP_0_CTRL_REGS);% {3 k0 W$ i6 j2 P
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
% f+ U& ~0 ~# `( {# TMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
( f1 I8 X; k  ]& A* ]/ g# iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
- ?5 p" y+ }" T  x; J9 o. nMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
2 |9 \1 e- U1 k7 O* [8 c( nMCASP_RX_MODE_DMA);- e+ O8 }7 m9 a; Q7 X
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,6 W; k. L0 P7 D; d- c3 v1 ?
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
6 _' g# }5 J6 l! ~. t$ z# N7 TMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, # }  J& s  H. r: Z
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
& ^: z: B6 x2 l3 eMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD, 5 ~- D; D  v# H; g& x! M
MCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
+ q6 Q& e7 B$ s9 o, |McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);3 \9 Q1 Q, E. I3 @" A6 m6 w
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
/ z6 ]& G0 a% h4 z7 `McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,
& u8 w4 ?) A+ o# n9 |6 h5 L0x00, 0xFF);
/* configure the clock for transmitter */
3 T2 J7 W% F- X+ rMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);" L3 G8 e  ?, a& e* D3 R# A8 T
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
! C- S+ M0 I* _2 _1 @McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
. t) m: K* D& m7 h6 W0x00, 0xFF);8 X) q8 R" t1 X. D3 q+ i6 p
& A4 H" _8 x% n6 @* U0 ?( K1 G
/* Enable synchronization of RX and TX sections */ . f6 t$ v7 R  [5 ?- v4 x; H# j4 |
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
& g0 v( H+ v- Q2 `, mMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);1 o, g# a1 m" r0 o, Q9 i8 s
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
9 |9 V& \7 r% k2 L** Set the serializers, Currently only one serializer is set as* R$ X% N9 t% v. b$ V0 x
** transmitter and one serializer as receiver.
, n, r4 {, r, S4 x, S1 V) U4 q! G*/; G' I+ ]6 y+ p$ d& B
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
4 }& R/ w, J6 {- ~McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
$ F6 D  ?" `6 _: Z8 Z$ e- |, S) I# A** Configure the McASP pins $ L3 h' y* C, w! P! s: P3 J1 n
** Input - Frame Sync, Clock and Serializer Rx/ W4 H' X  N, M/ _2 P* b9 d5 J
** Output - Serializer Tx is connected to the input of the codec # h* `8 t5 n( u
*/+ P5 u( p$ m+ B5 g$ f4 k2 a
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
' U8 d0 f4 I9 S3 U' f; \/ cMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 R, E/ T0 F8 K9 K0 S9 X' R8 g1 ~McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX' y7 B( w5 h$ z
| MCASP_PIN_ACLKX
& ?& s) x; m$ N' H2 N- U  X% ^| MCASP_PIN_AHCLKX5 R# q6 o: j+ d; E
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
- I6 s( A8 X) @& XMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR ; i- Q2 P" M1 x: v9 ^" h( C
| MCASP_TX_CLKFAIL & B! i/ j" h+ l* h8 N0 }" Y
| MCASP_TX_SYNCERROR
7 r8 e) h9 K" [5 \' p| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
% |% n5 B7 P* p( Y" t| MCASP_RX_CLKFAIL
% T+ v+ Q0 ^' q| MCASP_RX_SYNCERROR " G' C! j( y' ]. \5 c3 Q# J
| MCASP_RX_OVERRUN);
# c* y( p6 l3 g) j* x) T" ?  J- S}
static void I2SDataTxRxActivate(void), ^: Y: e% G9 w( z- L: ^3 Q
{! B; C0 w- U& l' t! p& Q. n
/* Start the clocks */
. V( a: P1 j6 yMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);% ?1 L( ?8 r1 V+ Y: _  \
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */& y0 m6 O% c- x% K: A  R
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,( p% o) ^- \" O5 n
EDMA3_TRIG_MODE_EVENT);6 s8 B5 ^* ^/ ]2 t; O
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
6 W& N& M9 m* t. n" K# R$ SEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */3 m9 s/ r; z8 J% Y
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);# l" N+ b7 O  P% t8 l; O0 x
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */; C: d8 E  y8 O- T6 t" F
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */7 e" z; [. X2 G- P, {' z( H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);
* W- q! B8 H! NMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);+ C* `. [' o( {- m5 _* O" T
}

3 L! b6 G" c, `
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
% |2 s1 @+ a! _* K5 R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-4 18:25 , Processed in 0.040124 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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