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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

[未解决] MCASP自环配置。

[复制链接]

6

主题

12

帖子

1216

积分

金牌会员

Rank: 6Rank: 6

积分
1216
跳转到指定楼层
楼主
发表于 2018-11-7 13:28:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我项目上用OMAPL138的板子MCASP的引脚都是链接的FPGA,所以在FPGA这端设置的MCASP自环。把axr0接收到的通过axr1发回去。
部分代码如下
input mcasp_afsx,% Q" H1 f1 l# ?) x
input mcasp_ahclkx,4 g  s/ U. {: F! k* X" P% q. U$ K
input mcasp_aclkx,' P7 _9 v0 A7 X* m4 z
input axr0,
1 J* W% C& e" |! `- U, l2 |. b- O. j0 T
output mcasp_afsr,5 v1 e, C/ k; V! @$ G
output mcasp_ahclkr,/ N7 h, ^2 P0 e) V  t! K3 f
output mcasp_aclkr,
' K* ^8 d+ b- ~; t, b& m# l, N6 _output axr1,
1 k. A# J, c+ E0 e1 t: `- H
assign mcasp_afsr = mcasp_afsx;# V1 @) D: s, Q4 q1 c
assign mcasp_aclkr = mcasp_aclkx;
" Q' v" V4 y: z: x1 M  passign mcasp_ahclkr = mcasp_ahclkx;
* J9 y/ i4 h6 \4 w- I4 Tassign axr1 = axr0;

' j+ H+ ~/ Z6 x# Z% y, ^4 m( d7 Q
' d4 X) ^8 a- q; |3 F$ S! J; m
在OMAPL138这端,通过axr0接口发固定的数,axr1接收。
在配置MACASP的时候,发送全部取内部时钟,接收全部取外部时钟。
一直循环发送,但是接收不到。在FPGA端也没有看到时钟和信号的波形。
部分代码如下,关于edma3的部分未做变化。
' r) A2 T/ q0 V0 R7 ?# Y2 h
static void McASPI2SConfigure(void)
- v7 C; T" `+ t  Q" w0 H6 s{
* _. Y' h* ?0 S  B1 lMcASPRxReset(SOC_MCASP_0_CTRL_REGS);' m: U5 A8 r; S. }  B8 l
McASPTxReset(SOC_MCASP_0_CTRL_REGS);
/* Enable the FIFOs for DMA transfer */
* B2 z" d, ~$ r1 J" U+ q4 ?McASPReadFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
7 }) F7 j) n8 p7 DMcASPWriteFifoEnable(SOC_MCASP_0_FIFO_REGS, 1, 1);
/* Set I2S format in the transmitter/receiver format units */
( P3 Q) ?; r' N# v8 k* G! zMcASPRxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,' c2 Y) O% }! O( Y2 P% B. @
MCASP_RX_MODE_DMA);1 a" b7 B* X' g$ f  C7 n/ g
McASPTxFmtI2SSet(SOC_MCASP_0_CTRL_REGS, WORD_SIZE, SLOT_SIZE,- s4 a; V4 r! R. k! l2 x
MCASP_TX_MODE_DMA);
/* Configure the frame sync. I2S shall work in TDM format with 2 slots */8 i/ n9 Q, ?" c9 F" G
McASPRxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_RX_FS_WIDTH_WORD,
! F9 Z- [* W1 Z! m4 OMCASP_RX_FS_EXT_BEGIN_ON_FALL_EDGE);
! E; d& Q9 [4 z3 ^) D" Q) GMcASPTxFrameSyncCfg(SOC_MCASP_0_CTRL_REGS, 2, MCASP_TX_FS_WIDTH_WORD,
4 q- ~. F8 o5 K3 P( Q1 }6 UMCASP_TX_FS_INT_BEGIN_ON_RIS_EDGE);
/* configure the clock for receiver */
& D2 o% J, ?$ a7 Z( p- D5 uMcASPRxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL, 0, 0);
% o2 I! _$ s+ y0 fMcASPRxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_POL_RIS_EDGE);
' T& k7 a  V" v0 g$ M# N0 Z6 z( }McASPRxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLKCHCK_DIV32,2 e* i; i# `" w! v# J/ k2 ~3 ?" E! l
0x00, 0xFF);
/* configure the clock for transmitter */
7 d) Q& q1 _1 l6 `7 uMcASPTxClkCfg(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL, 11, 1);
' q# k) ?# f( {0 eMcASPTxClkPolaritySet(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_POL_FALL_EDGE);
; o$ p" D% i0 r8 o* E- vMcASPTxClkCheckConfig(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLKCHCK_DIV32,2 w; O  {: p! a9 `+ Z6 k- U
0x00, 0xFF);
0 J8 T( m" {, I- N1 ?+ v9 t1 O: Q
& a( e( |. M6 {2 a( A  Q/* Enable synchronization of RX and TX sections */
& J/ b" @5 \) l' M' W3 iMcASPTxRxClkSyncEnable(SOC_MCASP_0_CTRL_REGS);
/* Enable the transmitter/receiver slots. I2S uses 2 slots */
* Y/ T" {. W0 h) H( u6 CMcASPRxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
4 ~6 l0 I8 v6 Q8 vMcASPTxTimeSlotSet(SOC_MCASP_0_CTRL_REGS, I2S_SLOTS);
/*
0 o' c: ^9 E! K: h** Set the serializers, Currently only one serializer is set as* |/ h( X" f. [0 a
** transmitter and one serializer as receiver.
( c, T  }4 u9 G$ k! ]! P  k/ T/ j8 [*/1 N* O2 [5 ?. E, ~6 T, E6 o
McASPSerializerRxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_RX);  d0 D3 y; i7 p+ _! S4 \/ ?
McASPSerializerTxSet(SOC_MCASP_0_CTRL_REGS, MCASP_XSER_TX);
/*1 ?7 t! ]6 [) G
** Configure the McASP pins 7 |- I6 e- o7 K
** Input - Frame Sync, Clock and Serializer Rx* s" f  _: f# u5 b: F
** Output - Serializer Tx is connected to the input of the codec
; p9 }3 G, ~; L& h; F, g! `*/* v* j! V- m* q4 N3 ]) a6 P6 c: s
McASPPinMcASPSet(SOC_MCASP_0_CTRL_REGS, 0xFFFFFFFF);9 w; v7 ^6 ]' I4 z% C7 E
McASPPinDirOutputSet(SOC_MCASP_0_CTRL_REGS,MCASP_PIN_AXR(MCASP_XSER_TX));
9 G$ y, k# @( Z1 a; m+ Q" E7 X9 XMcASPPinDirInputSet(SOC_MCASP_0_CTRL_REGS, MCASP_PIN_AFSX) I6 x# A8 M- S- m* c7 R/ F0 b
| MCASP_PIN_ACLKX2 r& w, @* D* G" \$ e0 m& E" d; |3 _
| MCASP_PIN_AHCLKX
# J& j" r+ w2 ]| MCASP_PIN_AXR(MCASP_XSER_RX));
/* Enable error interrupts for McASP */* I0 `$ z  p5 E' I+ ?  s
McASPTxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_TX_DMAERROR
1 t; i8 Q, T2 i! x| MCASP_TX_CLKFAIL ; U$ n1 Q+ x* O8 X8 ?/ E, D
| MCASP_TX_SYNCERROR
5 @4 }4 q1 h& W| MCASP_TX_UNDERRUN);
McASPRxIntEnable(SOC_MCASP_0_CTRL_REGS, MCASP_RX_DMAERROR ' ]& Y$ U+ F2 @7 Q3 p# O) H1 A
| MCASP_RX_CLKFAIL
& n; V# X9 x0 Q# ~8 C2 ]| MCASP_RX_SYNCERROR ; G0 q4 w+ ^8 A- H3 ^, i% K
| MCASP_RX_OVERRUN);
4 d2 ^4 D0 V+ u}
static void I2SDataTxRxActivate(void)# m$ {; N% D. h  X. K5 L
{' u- c8 e/ ?: I# r! X4 q
/* Start the clocks */# U: y! ~% K* r2 g# u
McASPRxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_RX_CLK_EXTERNAL);8 W  W) a9 n+ n. ^/ M3 Y
McASPTxClkStart(SOC_MCASP_0_CTRL_REGS, MCASP_TX_CLK_INTERNAL);
/* Enable EDMA for the transfer */: T4 @3 ?% k, q, c- E, C; h
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS, EDMA3_CHA_MCASP0_RX,9 x0 F8 B( u- l& f7 W5 {& F
EDMA3_TRIG_MODE_EVENT);" A" ]& L4 u6 w. g4 ]
EDMA3EnableTransfer(SOC_EDMA30CC_0_REGS,
$ q3 Y6 S( U5 {" M- |4 I6 REDMA3_CHA_MCASP0_TX, EDMA3_TRIG_MODE_EVENT);
/* Activate the serializers */
: Y; {7 Y* y5 ]5 C7 j) _0 t: wMcASPRxSerActivate(SOC_MCASP_0_CTRL_REGS);% S' L9 L& l, l$ C+ m, V
McASPTxSerActivate(SOC_MCASP_0_CTRL_REGS);
/* make sure that the XDATA bit is cleared to zero */
9 W8 W" k( W6 {5 o0 b& y8 C* q% hwhile(McASPTxStatusGet(SOC_MCASP_0_CTRL_REGS) & MCASP_TX_STAT_DATAREADY);
/* Activate the state machines */* @7 z1 K0 [5 Z! ^* `' H
McASPRxEnable(SOC_MCASP_0_CTRL_REGS);  H9 I6 M" v, t1 K
McASPTxEnable(SOC_MCASP_0_CTRL_REGS);3 c. p: ?$ Q: T- z# u0 G
}

' O$ W0 F" n/ W: ^. P5 L: c
请问:问题出在哪了,时钟按照这样配是否有错。
另外我看XDATA一直是0,接收的rxbuf0,1,2里有一般全是FFFF一半全是0.

5 r2 Q4 N/ s; ?: `6 C0 e% x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-11-11 05:11 , Processed in 0.066817 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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