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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9987|回复: 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,) Q) @7 \1 h, c: \* l3 W; ^
input mcasp_ahclkx,
4 G2 a, v- p. u  [% R1 v6 I+ E0 Ninput mcasp_aclkx,
6 t2 p  ~3 f. p" m- Xinput axr0,, v: V# S- m/ U9 R

4 e9 Z/ T4 C, K5 {: aoutput mcasp_afsr,
5 ]1 b6 a+ E  o7 \  I9 n/ \4 p6 Aoutput mcasp_ahclkr,! [/ O4 j2 A5 b( W- G
output mcasp_aclkr,
* `& o4 k& e# `( o7 v; z3 Eoutput axr1,
/ G9 @* K* L* f7 L% i3 i3 ^0 T
assign mcasp_afsr = mcasp_afsx;! U; }  B: M) W& h
assign mcasp_aclkr = mcasp_aclkx;  C' g, p& }% T4 ?( x$ |* U
assign mcasp_ahclkr = mcasp_ahclkx;
' L  [# o! K$ ?& I$ u9 M4 eassign axr1 = axr0;
% t( y0 u& X5 o- z. J
% r; u/ U4 H3 u) |! I0 n
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

$ Q* r% j3 k7 f2 j
static void McASPI2SConfigure(void)
" D/ p  Z, j1 [8 Q( S{1 ]) I# K8 [" O- J9 v; k' E7 Y: v4 Y
McASPRxReset(SOC_MCASP_0_CTRL_REGS);" N4 u+ e  \; k3 f5 g4 O! |
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
; ]- V9 T& q0 _; RMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
" r5 |* H- E- z+ @8 Z0 H- v4 MMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */0 q& V' }( e# O; n8 Q6 C6 {
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,, v( P0 x$ F0 s2 L% y6 v. [1 |
MCASP_RX_MODE_DMA);
- I; \' V" v/ E1 e4 n8 `. y) I, y% ?McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,! r& F5 s, ]& i7 u! W1 l
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */
* s. M( V$ v. }: |' v$ S- B$ B  vMcASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD, 7 S5 f1 ]$ w- A0 e4 i& D, r2 v0 a5 H
MCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
- }. Q9 M: I/ k" C8 QMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
2 o8 e; z2 }- `& b5 m: mMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
2 f  k: Y% a& @7 h* OMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
3 g) D/ t* _/ W1 X9 ?" D+ uMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE); $ `6 k' V3 F9 f6 j% l
McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,  f( @" r  o, w0 u
0x00, 0xFF);
/* configure the clock for transmitter */
: z6 e2 f, h- o7 y# ^# v2 JMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);1 L; r7 K- `% j1 d, J, v5 O- h: ^
McASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
' ]4 M# M+ x+ A. l- }* dMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,
/ ~9 x. j4 r: [/ q# n0 ~$ N" m0x00, 0xFF);4 H! ]$ c/ j" V8 X& `5 B
) S/ d9 p5 I0 F/ R- T. `
/* Enable synchronization of RX and TX sections */
+ @5 d, q( H4 e1 q+ J( i7 u2 {McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */+ N" \# A( K3 l: f+ y4 p; }* o
McASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
9 n) ~7 R4 z: y! W& [# uMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
. v. b4 P- s1 J# D; ^** Set the serializers, Currently only one serializer is set as
6 r( |" p; n+ Q** transmitter and one serializer as receiver.
9 M/ f7 z" M  ^/ i% J& d4 E) r" N*/5 J: q1 X& Z6 i
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);
1 Q- L" h) R  o+ }) D9 j* |McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*
9 j# n9 A) O( {4 x& C* @( }, O6 c** Configure the McASP pins
# y) Y/ V9 A: e& }** Input - Frame Sync, Clock and Serializer Rx
# s- v. H6 j1 l5 [: I: {** Output - Serializer Tx is connected to the input of the codec
: U5 ~5 w. Z0 n! Y% b( g: _+ B+ I*/* s3 i5 U. G* b* ^! N. K6 e( l
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);) w3 K6 p- O6 Z3 g& G) y- e
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));$ W+ ?* f# r0 G# l6 d
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX
3 l4 o/ l, m4 m0 m6 N& w| MCASP_PIN_ACLKX1 t2 W  s5 Y" v5 a$ H0 h
| MCASP_PIN_AHCLKX* z" c8 Q( U- \! d. J4 S
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */; j" g/ G7 g$ K+ X: p+ v* Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
( w9 R8 Y' _: ]3 Z' o, ^4 x  w| MCASP_TX_CLKFAIL ' q; e7 l2 y- [- X/ _# K
| MCASP_TX_SYNCERROR
( I2 U0 c: N5 r0 g| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
" J. i! Q5 }8 M7 H+ G| MCASP_RX_CLKFAIL+ q- ^. [9 D1 N' b
| MCASP_RX_SYNCERROR
9 q& W: X7 n$ I5 e, a7 A1 e  \7 J1 @| MCASP_RX_OVERRUN);
& R- r8 `! \0 P! ]. K2 I& r}
static void I2SDataTxRxActivate(void)! L0 U  E/ S. Q4 H
{( u( T, E7 @( H2 q1 G$ _  Q$ b; P7 c
/* Start the clocks */
; A" J( b9 g4 MMcASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);9 e$ A5 N* p8 g3 L/ A, t* [4 A
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
; X, l" a/ J3 x/ i, B( UEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
9 H7 `! b! Q/ s8 E$ ?! R$ JEDMA3_TRIG_MODE_EVENT);
2 S) K$ l1 X/ y, y( xEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, ! g  P: z+ s4 }) [! l
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */: j; s. @, X$ v; J8 F/ z3 O: |3 H
McASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
( e  o2 h/ v! `9 B) x5 RMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */8 }# p% j0 o7 L9 X. n, U7 A
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
3 Q9 U5 z- H$ b& j: rMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);
" U+ Q. K. J0 S5 BMcASPTxEnable(SOC_MCASP_0_CTRL_REGS);7 Q: e1 r" x$ j; E2 n6 Q/ `
}
( r  L. c" h7 n( T- L- B! d
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

  c& k$ X2 L( M$ H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 22:28 , Processed in 0.044995 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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