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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 11108|回复: 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,. A' W/ c9 e# b# L/ C1 F
input mcasp_ahclkx,, P( o& p0 C8 E% N1 U4 q# h
input mcasp_aclkx,
! m' {7 e$ }( ^8 k  e' Qinput axr0,
- w  i+ O+ n- u' G8 n
6 E5 {! Q: `/ A0 t8 eoutput mcasp_afsr,
/ s. u  R* \3 Coutput mcasp_ahclkr,* v7 `) u6 ?+ D# i
output mcasp_aclkr,
7 H6 R! s/ V* Y2 O' B8 |output axr1,' w) x4 o9 q0 t1 }6 X& k
assign mcasp_afsr = mcasp_afsx;( y2 Q: d" p- x  v4 J( B1 c
assign mcasp_aclkr = mcasp_aclkx;
- I1 {7 @/ a+ R9 a0 H" V' gassign mcasp_ahclkr = mcasp_ahclkx;
3 F* D& e. I# c! ~. Eassign axr1 = axr0;

2 t$ |3 z7 l- h' ~" {4 h( w  f, F( m. a0 K4 `
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

9 h8 t$ ~" I' p" ^9 t; {
static void McASPI2SConfigure(void)
6 [+ x; l9 S2 ?/ Z4 r' I{7 P8 U0 o+ N, {) f$ N3 W7 h, K
McASPRxReset(SOC_MCASP_0_CTRL_REGS);
" K- @& s6 V& N0 R+ D7 \, qMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */1 a  ?% Y, q" |
McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);6 c5 B# H( d1 L
McASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
/ T/ s# M+ P7 R; D+ ]3 p4 fMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
% u! I# e( p6 S3 aMCASP_RX_MODE_DMA);
. B" ]; Q% ?- |* a! r" j$ GMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
4 I- o3 l* {) _' @7 I3 O3 \! b( AMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */* R1 }0 y6 P$ {* ?9 `
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 1 G( z$ e7 R1 M6 v! v- C4 `
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
0 S1 D* D8 A# B- J7 sMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
1 h2 {8 z  }4 i5 X* MMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */+ {8 d9 I+ r# K. C
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
( g& Q: o% p- s  JMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); & u" l$ N! @3 [9 s6 Z
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,1 B# |# I+ I+ U" F# H4 P. ?
0x00, 0xFF);
/* configure the clock for transmitter */
  v5 W8 l3 W' v  F; w+ ^) F0 MMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);; [) h6 e( p7 [# [+ Y8 B) O8 W3 j
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); ' D8 v5 D" q; r; P( v( V3 q/ s
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 o# F* Q4 R6 ~9 ~7 r1 Q# ~* G
0x00, 0xFF);
) F3 Y3 k4 O& l5 N7 F- [# T( R& J+ r7 B4 f; k7 ]5 o
/* Enable synchronization of RX and TX sections */
' T) Q7 W& p( h9 GMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
$ W4 }6 Y$ Q1 I% G1 T/ l/ zMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);  k1 n3 z* Z% B0 N  H
McASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*: A; m! @. q9 U# K2 Y
** Set the serializers, Currently only one serializer is set as
6 }- n6 N' C+ x! v/ G* X** transmitter and one serializer as receiver." |$ [7 p& e1 T3 k  H- S, V
*/
7 }* t$ M( w# {+ KMcASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
# {) R5 K9 }( J9 ~* p2 @% m7 d  VMcASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/** {+ ~' I) x# i: z6 O1 p
** Configure the McASP pins : Z! W. Q' |; o4 J( t. z
** Input - Frame Sync, Clock and Serializer Rx% G* ~% c) G8 M  S4 ]! p
** Output - Serializer Tx is connected to the input of the codec + c  K2 l4 Z9 |" r
*/: A% V' g" f6 h6 N$ Y0 U: Z. F
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
+ Y' T" _& M7 r: WMcASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));& |+ E& B) H1 R
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX* f( R2 @* g: i( \2 ]
| MCASP_PIN_ACLKX
, q; S6 E9 ^2 J$ L| MCASP_PIN_AHCLKX/ Y% s& ?6 G( C$ J/ j7 h$ R. J; c, b9 d
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */- F! U1 S3 i) V8 w
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR / p0 X9 R9 B! s! A& W$ e
| MCASP_TX_CLKFAIL
# B" A* J" Q$ _4 C# q* x| MCASP_TX_SYNCERROR
8 Q$ L: Z; ^6 }1 b9 t& _4 f1 I  R| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR 7 m# t/ h# ]9 s/ `: x- }
| MCASP_RX_CLKFAIL
6 V& C9 l* c$ D/ c6 g| MCASP_RX_SYNCERROR 6 S, _! j! ^1 a8 t: c
| MCASP_RX_OVERRUN);+ M( j9 |, w& C% t$ |* Q2 f! Y
}
static void I2SDataTxRxActivate(void). J& Q/ ~* v& g- a0 A
{
% R9 F* S- ^0 e/* Start the clocks */
/ U8 \( I# s& y  h/ OMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
1 c. u) y0 |- w; zMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
$ E" Y0 m: x- z/ C5 G* x+ i6 MEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
' ?3 ^9 `; `6 K" y# M% y7 ?# a8 AEDMA3_TRIG_MODE_EVENT);
, |! o) m2 Y3 Y3 s" o7 pEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
- q7 W: J* G7 m4 C2 l$ FEDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */2 {* p- v% h7 z
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
+ c7 Q0 Y- Z! Y& g4 ?. V8 bMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
  q  @3 U! ]7 f: [while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
% l4 k9 u7 c; eMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
; F. _& Y1 z5 KMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);5 e. b0 g8 m* `- }' \5 {! O
}

) }6 G- F& k+ Q) j- Y, f
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

$ [8 g7 i; r6 {) i8 U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-24 20:04 , Processed in 0.039116 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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