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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11846|回复: 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,
3 g! F: R5 _0 v+ W9 Tinput mcasp_ahclkx,/ e6 N" d0 a2 Q$ o" @2 q6 D3 p
input mcasp_aclkx,# ~9 ?! w. G1 ^7 }; o) a
input axr0,
+ H( u7 h  i5 e. R  _0 S5 F  c" n+ k- x( p4 |$ @3 A- V
output mcasp_afsr,. ?6 z. S* e  }1 c
output mcasp_ahclkr,9 W5 U6 K3 T$ F
output mcasp_aclkr,
2 y: v( `, j) C3 L( voutput axr1,
5 [) Z* t: z! x  G- V# l4 I
assign mcasp_afsr = mcasp_afsx;3 V8 Q% {. H! n
assign mcasp_aclkr = mcasp_aclkx;
; ?/ r# \! E. C& M( h( l$ Bassign mcasp_ahclkr = mcasp_ahclkx;
4 j, i9 I* m" o) e0 K2 Z& R7 ?assign axr1 = axr0;
& U8 p3 [* T2 P: {

" \$ D( `7 F0 @
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

4 W' j9 D3 S( c7 }! p
static void McASPI2SConfigure(void)
" Y  L9 `, v  g1 b" T2 {{
/ z- I3 @/ b' E2 C: tMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 w, H3 o, d$ OMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */, H  c8 j8 t9 Z" J, i
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
2 C1 ~* k+ k  ~5 P! l2 w. U3 m* YMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
4 D8 `1 g, C" ?- e8 WMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,  \, r1 ?, |% C% N1 Y
MCASP_RX_MODE_DMA);7 ]9 L' V8 G* m' d( x: F
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
9 F, n6 R6 Z: F+ PMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */2 S/ Q- ?1 Q: u+ W* D
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
& I8 O$ V+ w! L8 j$ O. d! [; R' G; A4 _MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
3 B9 |6 H6 w& }3 J+ {McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
/ f* T6 `) v; w# m2 G) r6 bMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */( E  B7 V4 V1 D" Q9 U+ [
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);9 C$ S, q1 j/ c: @; }# K& G
McASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); 0 C+ ]- g7 h# J. K6 h% N
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,$ W) R$ r+ R6 M. O4 s" j9 |3 g- U
0x00, 0xFF);
/* configure the clock for transmitter */* T& t  \# I+ ~3 x; V( }5 l  w
McASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 j% k0 ]7 {" cMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
6 v' R# B. A$ l& D) w: yMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
' r" e# \/ z7 L9 e3 {% \0x00, 0xFF);% L# Q9 b, I9 l  m/ r
* c0 q$ w" T+ G$ j( L
/* Enable synchronization of RX and TX sections */   d# e. W9 Z+ D# r- D% q4 w* P! B
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
# H  x* }% s* s. @McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);! f  r' m. q9 P) ]! I+ A
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*& @7 [2 J$ m- Z
** Set the serializers, Currently only one serializer is set as
9 \! O" S- `7 i** transmitter and one serializer as receiver.
0 T2 s2 ?# W+ ]; g*/8 C$ ?. e: r' v! a8 D" b2 V# P
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# d7 r! ~% e  F5 m/ T4 cMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
% e2 O+ m4 J4 h5 [/ V. [: P** Configure the McASP pins ; z3 u& x, q0 d) G6 Q
** Input - Frame Sync, Clock and Serializer Rx
; [9 B5 `& z2 w& k# M** Output - Serializer Tx is connected to the input of the codec $ i8 D* ?9 \: S- O# I
*/. {; \) ~2 Z" t
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);6 K) A2 K  |6 H+ S$ u+ ~
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));7 t- V6 s6 i. ~' C$ A
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
6 f2 r  Y1 _) q9 v! r1 |3 T! f| MCASP_PIN_ACLKX
8 q: N  n$ b& P# || MCASP_PIN_AHCLKX. f7 d& l) W$ O3 _) O4 L
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */
) H0 \3 D5 p7 O' H) v2 {* v. f) ?( Z  uMcASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
' P" [; v+ K# x" [| MCASP_TX_CLKFAIL
7 }- c2 S7 m; n5 f* [* ^| MCASP_TX_SYNCERROR
7 N2 M3 U, M% N. p! f| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ) r9 I4 J$ n4 A: X
| MCASP_RX_CLKFAIL" r- |0 H  f/ P
| MCASP_RX_SYNCERROR
! M$ O: r- b) R* [| MCASP_RX_OVERRUN);& p7 z3 L' a0 S( ^6 Q6 ^$ A
}
static void I2SDataTxRxActivate(void)
* H, W) F# M6 i* a5 O{
* [7 p. y2 k+ N" C4 f/* Start the clocks */: I! i2 O+ _# e6 z3 [
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
. B% D0 C! ?2 A* P6 X+ LMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */2 @8 D5 M2 G) }/ V( `7 q+ t) |5 p
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
* A, h1 s, H; dEDMA3_TRIG_MODE_EVENT);2 w7 F$ U9 I% g& [
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, & O+ C6 @4 R8 b3 v1 b
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
& A4 u9 l0 q+ ?0 B- hMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);  ?" ]! F( Z* s- V- U* b
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */) L7 N+ D& v9 W* O% i! S
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */0 w+ \5 _4 `6 S% d
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);9 s' ]+ M! }/ |3 O$ e
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
5 d$ V8 X! Y; s}

% Q+ h1 p; c2 i% F, e/ s4 e
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.
7 d' J0 [' p6 e+ I' {/ H( s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-16 11:15 , Processed in 0.044252 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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