首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

机载计算机RS422A通讯的软硬件设计与实现

机载计算机RS422A通讯的软硬件设计与实现

摘要 RS422A、RS485等异步串行通讯技术广泛应用于机载计算机实时控制系统,提高了飞机的可维护性和可扩展性。为使其稳定工作,不仅需要可靠硬件平台,还需严密的软件算法°文中描述了某机载计算机为实现与多个设备进行实时异步串行通讯,设计了统一的硬件平台,并根据每个设备不同的通讯协议,给出了不同的软件算法,重点阐述了软件设计及原理。根据该原理研制的产品已经过试验、联试和用户使用,证明其工作可靠、性能良好。
关键词 RS422A;RS485;通讯软件设计

1 RS422A标准
   
RS422A是一种在工程中广泛使用的接口标准,其采用差分传输方式,也称为“平衡传输”,标准全称是“平衡电压数字接口电路的电气特性”。可见RS422A定义的是接口电路的电气特性,而对数据格式未作定义。RS422A是全双工通信,通信的双方均含有一个发送、接收驱动器。其中接收驱动器的两个平衡线连接端点定义为A和B,发送驱动器的两个平衡线连接端点定义为Y和Z,通常使用平衡双绞线将一端的Y和A、Z和B相连。通常发送驱动器端Y、Z之间的正电平在2~6 V,代表正逻辑,负电平在-6~-2 V,代表负逻辑。在接收端,当A、B之间有>+ 200 mV的电平时,输出正逻辑电平<-200 mV时,输出负逻辑电平。RS422A最大传输距离为4 000英尺(约1 219 m),最大传输速率为10 Mbit· s-1。其中平衡双绞线的长度与传输速率成反比,在100 kbit·s-1速率下,才可达到最大传输距离。只有在较短的距离下才能获得最高速率传输。一般100 m长的双绞线可获取的最大传输速率为1Mbit·s-1。

2 硬件设计
   
对于RS422A、RS485等异步串行通讯的硬件设计,主要有两种方式。
    (1)采用协议芯片加接口驱动芯片的方式。该方式技术较成熟,但使用的元器件较多,占用印制板的板面较大。
    (2)采用SOC的方式,将协议芯片的逻辑功能在可编程逻辑器件FPGA中编程实现。该方式使用的元器件较少,但在FPGA中写出较完善的协议逻辑的难度较大。
    本工程中采用第一种方式,用协议芯片16C552或16C554加接口驱动芯片进行通讯。并设计回绕自测试电路。采用16C552芯片实现全双工收发RS-422器功能,RS-422驱动电路由DS26LS31MJ(4路RS-422发送器)、DS26LS32MJ(4路RS-422接收器)、终端匹配电路和保护电路组成。

3 软件设计
3.1 通讯协议的定义
   
RS422A标准只对接口的电气特性做出规定而不涉及协议,因此可定义自身的高层通信协议。在本设计方案中,在底层以Byte为单位通信,采用UART字的格式。在上层协议中采用数据包为单位通信。
    通信协议中主要规定:(1)通讯双方的传送控制方式,即主从命令响应方式或周期通讯方式等。(2)通讯周期。(3)通讯速率,即波特率。(4)通讯字格式。通讯的最小信息单位是UART字,每个UART字由11位二进制数组成,如图1所示。


    第1位:起始位(逻辑“0”状态为有效);第2~9位:信息位;第10位:奇偶校验位(约定为偶校验);第11位:停止位(逻辑“1”状态为有效)。每个UART字按低位到高位的先后顺序串行传送。对于16位二进制数据分成两个UART字,按由低到高的先后顺序传送。(5)通讯包格式。通讯传送的基本单位是通讯包,通讯包由包头、包状态、数据字和包尾组成,最后的包尾是校验和字,其结构如图2所示。


    校验和字为通讯包中除校验和字外所有字累加和的补码。校验和校验正确的依据为接收到的UART字块中所有字的累加和等于0。
    包头通常规定为0xAA55或0x55AA,与数据字相同的概率较小。包头一旦与数据字相同,则可能误认为该数据字为包头,从而组包错误。
    通讯协议应规定每个数据字中每一位的定义。若通讯协议中存在多种包长或多种数据包定义,则应在包状态中说明该包的包长或包序号,由包序号可明确该包数据的详细定义。
3.2 接收数据
   
首先,需确定接收数据的方式,即选择查询接收或是中断接收。嵌入式实时控制系统应尽量减少中断的使用,在查询接收可满足通讯要求,且不影响实时性的情况下,尽量采用查询的方式接收数据。
    若通讯协议规定,要接收的数据包的长度小于或等于硬件接收FIFO缓冲区的长度,且两包数据间的间隔时间大于或等于最小查询周期,则可采用查询的方式接收数据。否则需采用中断的方式接收,才能保证数据不丢失。
    采用查询的方式接收数据时,以最小周期进行反复查询,若硬件接收FIFO缓冲区中有数据则收入软件中设定的容量较大的先入先出队列缓冲区。
    采用中断的方式接收数据时,硬件接收FIFO缓冲区中有数据则会引发中断,中断服务程序中将硬件接收FIFO缓冲区中有数据则收入软件中设定的容量较大的先入先出队列缓冲区。
    而后,再以通讯协议规定的接收数据周期,从软件队列缓冲区中取数、找包头、按包长组包、算校验和。当未收到完整数据包或校验和错时,进行错误计数。


    上述分两步接收数据的流程示意如图3所示。以该方式,可无需消耗多余的时间,并确保数据不丢失。
3.3 发送数据
   
发送数据作为主动的行为,尽量不使用中断。当需发送的数据包长度小于或等于硬件发送FIFO缓冲区时,可直接发送。当需发送的数据包长度大于硬件发送FIFO缓冲区时,可分为多次发送。软件将要发送的数据组织好后存入容量较大的先入先出队列缓冲区。再以软件运行的最小周期,将队列缓冲区中的数据分批装入硬件发送FIFO缓冲区进行发送。
返回列表