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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10667|回复: 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,
9 p8 w4 m& N# Q" x6 c( Zinput mcasp_ahclkx,  L5 a# S4 O' f. J9 I
input mcasp_aclkx,
: P+ A8 _# j/ F  iinput axr0,. O; _3 B1 z- }& y0 I8 Z5 ^/ m

0 R% a  o$ u4 Moutput mcasp_afsr,
7 g) l6 }; p/ o0 o  a6 D' l* \% Xoutput mcasp_ahclkr,
( g# }3 ?$ C- ^output mcasp_aclkr,
2 I3 |( y* m0 |6 J  Y) Ooutput axr1,
1 G! Q0 B- `6 Q* K5 X
assign mcasp_afsr = mcasp_afsx;
. t! _, S8 r5 K$ zassign mcasp_aclkr = mcasp_aclkx;
6 U0 G* N/ Q' S$ V7 m5 V; |8 P; B  j9 Tassign mcasp_ahclkr = mcasp_ahclkx;
8 m- ^  k& P- F% ~! D( Sassign axr1 = axr0;
: O8 w. d: `& s- c! i
3 a$ B$ s' a. k- j# b, r" I( e
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。

# ^& H* h# _! [* J" A
static void McASPI2SConfigure(void)
' a( U; H9 U+ t( C( _{
, K# b! T4 `! c% ?0 H. mMcASPRxReset(SOC_MCASP_0_CTRL_REGS);
0 ~) ~* L% e7 z9 D! I% s) C6 FMcASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
: M6 A% S" x% Z/ C3 {6 YMcASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
, I' q! Z! C! _% Q; r$ J: \9 iMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */1 _' ?2 C$ k) b, S6 @: i) V1 l
McASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,$ \3 b5 C: U1 t  g
MCASP_RX_MODE_DMA);
. D2 o$ u7 n7 mMcASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,
/ U& f9 w4 f0 y3 RMCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */6 ?2 I* v" T3 O. y  _$ ~
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
4 _2 Y. P- p; f# [& c9 NMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);  m6 i4 O" T# E, J" Y; x$ P, b
McASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
" y8 }& p2 s2 ^( cMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */3 b* w* r1 t; w0 c  ?0 A- O
McASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
- m2 p6 I" z1 B% {8 `7 d5 A3 kMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
  J) _  x6 L& Z  Q2 l  M' BMcASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,: }) R9 |# a! Y3 L$ j9 T
0x00, 0xFF);
/* configure the clock for transmitter */
* T3 q2 P  k: V5 U, Q! zMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
8 F/ b  W: `" @7 m! x. _" U, Q/ oMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE); # a& q: U- Q/ x$ n0 x
McASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,) K7 }, C) h4 P, }* l& H8 k
0x00, 0xFF);% q* P3 G0 R6 S6 p4 W
& O- d5 o) r6 F1 c0 y* H2 ]
/* Enable synchronization of RX and TX sections */ 4 e3 ~& l; u1 V3 G  k0 z
McASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
3 \* X" W. z5 B1 z* K7 JMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
5 z6 i1 i  D  M6 r1 K' UMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
1 w. [9 u  D3 y6 W+ R** Set the serializers, Currently only one serializer is set as& ^1 W$ }9 p% a0 X0 N- S8 X( W
** transmitter and one serializer as receiver./ d  x- q7 x- V* S6 P: y3 c1 |- y
*/: _9 G* g) ]4 D1 n; y- Q" z
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);$ i: `* r# Y) t- x* n! i( O
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*$ q  m' R$ e( Y- k& a
** Configure the McASP pins 6 J, Z. X* a- |- ]7 B; P
** Input - Frame Sync, Clock and Serializer Rx
# t9 x+ i4 V" T1 z1 W** Output - Serializer Tx is connected to the input of the codec
! V, t! h6 J+ K' u5 q- N*/
' S9 N7 p' g  Z5 ^$ _2 B5 A( n* `McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);
6 Y6 }2 i" w" w# _McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));* T( Y; Y2 @# l2 E7 d; l
McASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX8 k) s8 j( x& i; L; I) ]) a) y
| MCASP_PIN_ACLKX
& n* U/ s9 A2 `7 r1 v' H| MCASP_PIN_AHCLKX! v  Z3 }" ]! G0 {$ e
| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */3 t7 q6 m; o/ v  C" Q
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
; y, [  S  u1 H+ f1 M8 z| MCASP_TX_CLKFAIL
& |+ R( q5 I$ A, d2 _& z* z| MCASP_TX_SYNCERROR
; `$ Y9 _: [% C| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR
# O8 c/ {' M) m% I: ~  |$ i| MCASP_RX_CLKFAIL
: O( u* a7 n) e/ _| MCASP_RX_SYNCERROR
; Q9 h! Z% J! C! a7 v+ G" g| MCASP_RX_OVERRUN);
4 R1 n' z& ~7 O# Y- g}
static void I2SDataTxRxActivate(void)7 @4 k7 S! `5 Y6 `$ c
{
) d. _6 y1 D- d% E) b4 P1 q/* Start the clocks */1 r6 w* @8 a& \; [
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);
  ^9 s: U7 ~3 H5 c* G  XMcASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */
- F0 G+ _- `8 lEDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,
2 ]4 S% X' Q. z0 bEDMA3_TRIG_MODE_EVENT);* z+ M9 ^& a; X' d. K' d$ z
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, 9 U' o5 O4 C+ t4 ]9 r/ @% h
EDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
* z: m4 J+ g* l1 Z! XMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);
8 e6 w' I0 Q1 J0 a0 w$ JMcASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */+ }. J% L/ l- ~+ M0 O( I7 ~( m
while(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */
9 h! U7 L; N4 l' k" C- XMcASPRxEnable(SOC_MCASP_0_CTRL_REGS);7 L4 q1 \3 Q" \8 E2 y7 w' ?' L( r$ E$ n
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);
6 N! ^4 m. B7 {; u0 s}
$ I* K' ^# T) z# A/ z
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

) \$ h% m; ^4 S& P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-12 16:41 , Processed in 0.044934 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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