首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年8月25日星期日
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
基于F240的SPI通讯在试飞数据下载中的应用
Application of SIP Communication For The Airborne Data Download Based On F240
中国航空计算技术研究所一室 王国东 阎稳 姜运生


摘 要: SPI是一种简单高速的通讯接口。本文简要地介绍了使用F240的SPI同 步通讯接口的硬件设计和软件算法。该系统满足了试飞数据下载对通讯速率的要求,成本低、速度快。在同步通讯系统设计中具有典型性和实用性。

关键词: 同步通讯;串行外设接口

机载计算机一般对数据的后处理和分析能力不强,许多试飞数据需要下载到地面处理,这就需要一种实用而高速的通讯。尽管RS232串行通讯因硬件简单,各操作系统都提供标准支持函数,软件易行且应用广泛,但其致命弱点就是速率太低,理论上最大速率可以达到56Kbps,在实际应用中相去甚远。对于试飞记录的大数据量而言,近年兴起的SPI通讯就是一种简单实用的高速通讯。我们已经将它应用在机载试飞数据下载中,在此和大家共同磋商。


SPI接口简介

串行外设接口(SPI-Serial Peripheral Interface)是近年来新发展的一种高速同步串行通讯接口。新推出的许多嵌入式处理器都集成了SPI接口,用于DSP控制器和各种外设通讯。如图1所示是TMS320F240所集成的SPI接口通讯原理。

图1 SPI接口示意原理(略)


通讯分为主控方(Master)和从方(Slave)。整个通讯由主方控制,各信号含义如下。

.SPISTE - SPI Strob,即从方使能选通。只有 SPITE = L时,才允许从方收发激活。

.SPICLK- Clock,通讯同步时钟。激活状态下,一旦时钟启动,无论主从,必有数据传输。甚至可以是无用的空数据(Dummy)。接收数据是否有意义,由应用程序按约定的协议判别。

.SIMO--- Slave Input/Master Out,主方数据发送线,亦即为从方数据接收线。

.SOMI---Slave Output/Master In,主方数据接收线,亦即为从方数据发送线。

当然,根据具体应用,主从方在通讯过程中是可以动态互换身份的。

图2 机载方SIP数据流(略)
图3 PC机SPI接口(略)

 

 


SPISendByte: ;-- 激活 Slave. ----- LDP #00E0H : DP = E0H: 7000H-707FH 的页址. SPLK #0012H,SPIPC1 :SPIPC1= (704DH) = 52H = 0101.0010 :SPIPC1= (704DH) = 12H = 0001.0010 ;D6 = SPISTE data out = H: 禁止从模块. ;D6 = SPISTE data out = L: 使能从模块.SACL SPIDAT ; 发出去.
WaitSPI: ; 等着收回来.
BIT SPISTS,BIT6
BCND WaitSPI,NTC ; (7042H) = 0000.0000 ; D7 = Receiver Overrun = 0: ; D6 = SPI INT FlagLACL SPIBUF ; 读接收数据. ;--禁止 Slave--
SPLK #0052H,SPIPC1 ; SPIPC1= (704DH) = 52H = 0101.0010 LDP #0000h RET至于PC机一方的基本的、重要的函数,诸如复位ResetFIFO, 读取状态GetRxFIFOSta,接收数据ReadRxFIFO,发送数据WrTxFIFO等函数,可以采用在Delphi中嵌入汇编的方法实现。

通讯CPU管理SPI算法

SPI数据帧采用类似于SDLC协议,如表2所示。

表2 SPI数据帧结构(略)

不同之处在于标志字节需要软件发出、省略帧地址域、帧校验由软件计算并采用异或校验。其中帧长度L 是包括校验字节在内的数据帧长度,数据域为(L-1)个正式数据字节,而校验计算方法为 CS = B1 xor B2 xor … xor BL-1

主方发送SPI帧的算法如下:procedure SendSPIFrame;begin SPISTE := L; // 使能 SPISTE,激活从方Send Opening Flag // 发开标志 Send Frame Length; // 发帧长度 CS := 0; i := 0; while (i < L-2) dobeginFetch data from TxBuffer; //从发送缓冲区读取一字节CS := CS xor Bi;Send One Byte; // 发出去Wait Send/Receive Complete; // 等待发送/接收完毕Read Dummy from SPIDAT; // 读走空数据(Dummy)Inc(i);end;Send CS; // 发校验字节Send Close Falg; // 发关标志while not TimeOut do // 在规定超时范围内,从方应返回 关标志
begin Send Dummy Data; // 发空数据,保持从方激活状态 Receive Close Flag; // 接收到关标志时,本次通讯成功。 end; end;

PC机SPI接收算法

从方的数据帧接收和主方相对应,当从方被激活并接收到开标志后,其算法如下procedure RxSPIFIFObegin10ms内应接收到帧长度 L;CS := 0;i := 0;while (i < L - 1) and (not TimeOut) do //L-1包括检验字节在内begin 读 RxFIFO 状态寄存器; if Received then beginBuf[i] := RxFIFO; // 读接收 FIFOCS := CS xor Buf[i]; // 校验计算 end;end;Received Clsoe Flag;if (CS = 0) and (Flag is Ture) then Send Close Flag // 接收正确,则返回关标志else Send Error Flag;end;


结束语

SPI接口以普通串口几十倍的速率运行,大大加快了试飞数据下载,简单而实用。串行设备接口SPI同步通讯技术在不断的发展。同步通讯和异步通讯相对立而存在,相比较而发展。这里只是抛砖引玉,介绍了同步通讯的一些方法和我们实际工作的做法。同步通讯将向更高速率发展,应用在更多的日常电子设备中。

         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com