第25卷增刊 贵 州 科 学 Vo1.25,Supp 2007年5月 GUIZH0U SCIENCE May.2007 基于8位单片机的ARINC429航空数据总线接口设计 陈怀平 (贵州双阳飞机制造厂,贵州安顺561000) 摘要APdNC429数字信息传输规范是航空电子设备通信标准,目前已经成为航空机栽电子设备通信的主要 通信方式,本文介绍了用8位单片机和高性能数据通信芯片HS一3282的ARING429航空数据总线接口的设计 方法. 关键词单片机;ARING429;总线;HS一3282 中图分类号V351.36,V243.1 文献标识码A 文章编号1003—6563(2007)增刊一0321—07 THE DES聃E oF ARINC429 DATA BUS TERFACE、VITH 8一 BIT DATA MCU CHEN Huai—ping (Shuangyang Aircraft Manufactory,Anshun 561000,Guizhou) ABSTRACT The gauge of ARINCA29 data transmission is the communication standard for aircraft electronic equip— ment,it has been one of the main busses of aviation circuits.This article show a way to design Arine429 data bus inter— face with 8一bit data MCU and high performance CMOS bus interface circuit HS一3282. KEY WORDS MCU;ARINCA29;data bus;HS一3282 1 引言 ARINC429是美国航空无线电公司(ARINC)制定的民用航空数字总线传输标准.随着计算机技术的不 断发展,航空电子设备由过去各自独立的部件逐步向航空电子综合化系统发展,ARINC429标准的出现和应 用提高了航空电子设备的通用性、可靠性和灵活性.在航空电子综合化系统中,快速、有效地传输数据对整 个航空电子系统的性能有很大影响.我国也相应制定了“航标Sz—Ol数字信息传输系统(HB6096—86)”作 为航空数据总线传输标准.机载航空电子设备,如GeS(全球卫星定位系统)、INS(惯性导航系统)、EFIS(电 子飞行仪表系统)等,都是通过ARINC429总线与外设进行数据交换的.本文论述了以8位单片机为平台的 ARINC429总线接口的设计方法.目前,该方法以很便宜的价格,已成功应用到我厂某型外贸飞机的地面检 测设备上. t 收稿日期:2007—04—27 作者简介:陈怀平,(1974一),贵州安顺人,1996年毕业于西北工业大学飞行器制造工程系,贵州双阳飞机制造厂航空仪表技术员,高级工程 师,主要研究方向为航空测试技术、虚拟仪器技术应用及开发. 维普资讯 http://www.cqvip.com 322 贵州科学 25卷 2 ARINCA29数据信息传输规范 ARINCA29 总线是通过一对双绞屏蔽线从一个端口向设备以串行方式传输数字信息的.ARINCA29总 线规定高速传输速率为100 kbit/s,低速为12.5 kbit/s.表1为空载输出电平. 表1 ARINC429总线空载输出电平 Tab.1 ARINC.429 date bus aviation output level ㈣㈨㈣㈣洲洲洲洲伽 洲卧 一个数据字有32位,它们被分为5组: (1)标号(1abe1):第1—8位,用于表示信息的类型. (2)源/目的识别码(SDI):第9—1O位,当需要将一些专用字传输到一个多系统的特定系统时,就可以 用SDI来识别字的目的地. (3)数据区(data):第11—29位. №丽眦 №一 I蕈一(4)状态位(SSM):第3O一3l位,表示数据发生器硬件状态,是无效数据还是试验数据. (5)奇偶校验位(parity):第32位,奇校验. ‘HS一3282(CERDIP) TOP VI FW 图1 HS3282的引脚排列 Fig.1 Pin arrangement ofHS3282 3 HS一3282简介 HS一3282是美国Intersil公司生产的高性能ARINCA29总线接口芯片,外接驱动芯片HS一3 182便可产 Ⅲ 叭呲陌舢叫 一维普资讯 http://www.cqvip.com
增刊 陈怀平:基于8位单片机的ARINCA29航空数据总线接口设计 323 生ARINCA29电平,可通过编程设置为32位字长或25位字长;还可通过编程使它工作在100 kbit/s或12.5 kbit/s.HS一3282由两个接收器和发送器组成.两个分别独立的接收器直接与ARINCA29总线连接,并以十 倍于接收数据速率的频率工作,接收到的数据带有奇偶校验状态;发送器由先进先出(FIFO)存储器和定时 器组成,FIFO存储器用于保存串行传输的8个数据位,定时器按照ARINC429规范的要求分隔每个字自动 产生奇偶校验位.在接收器和发送器中附加了外接时钟输入CLK,允许HS一3282工作速率从0—100 kbit/ S,从而使器件的通用性更强.该芯片为单电源5 V供电,功耗低,工作温度范围符合军用标准.美国DEI公 司的DEI1016的功能和封装完全兼容HS一3282.HS3282的引脚排列和引脚功能如图1、表2所示. 4原理设计 ARINCA29总线协议芯片设计为16位数据总线.从原理上来看,适用于16位数据总线系统的单片机; 但从应用范围上来说,因航空机载电子系统具有很严格的工作温度要求,而8位单片机目前在市场上较容易 获得符合军用标准的芯片,并且还不断有很多低功耗、低辐射的新品出现,用此设计出的产品更容易通过要 求严格的电磁兼容试验,因此,在ARINCA29总线接口的设计中通过增加外围电路,使HS一3282适用于8位 数据总线的单片机8031. 外围电路由可编程逻辑器件GAL20V8和两个数据锁存器(74HC573)组成,其中一个作为输入锁存器, 一个作为输出锁存器,作用是锁存数据的高8位,以便8031与HS一3282完成16位数据的传送.由于一个 完整的ARINC429数据字是32位,而HS一3282是16位数据总线,因此,一个ARINCA29数据字要分成两个 16位的字分两次进行读/写.GAL20V8通过编程对单片机控制线实现一定的逻辑运算,完成对数据锁存电 路和HS一3282收发器读/写的工作时序控制. 表2 HS一3282的引脚功能 Tab.2 P-mfunction ofHS一3282 维普资讯 http://www.cqvip.com 324 贵州科学 25卷 对收发器读/写控制电路和数据锁存电路的控制采用直接访问的方式.也就是说,将收发器读/写控制 电路和数据锁存电路当成单片机的一个外设,由单片机的P=2口、Po口产生16位地址和单片机的读/写口(/ RD和/wrt)一起访问外设,其中,P0口产生低8位地址,P2口产生高8位地址.图2为HS一3282的8位单 片机接口原理图. 在向FIFO或HS一3282的控制寄存器写操作时,输出寄存器向HS一3282提供数据字的高8位,在读取 HS一3282接收到的数据字时输入寄存器锁存高8位.因此,写操作时,首先写入高8位数据,输出锁存器锁 存,再写低8位,与此同时,使输出锁存器输出高8位,与低8位一起出现在HS一3282的16位数据线上;读 操作时顺序与写操作相反,先读低8位数据,同时将高8位数据送人输入锁存器锁存,再读人高8位,使高8 位数据出现在8031的数据总线上,通过两次这样的操作就可完成对一个32位数据的双向传输.图2所示 电路实现的一收一发功能,当接收器接收到一个ARINC429数据字时,HS一3282向8031发出中断请求, 8031在中断服务程序中读取收到的数据,采用中断响应的方式接收数据,有效地满足了ARINC429总线数 据传输的实时性要求;对于数据发送功能,采用定时器计数溢出中断的方法,根据数据刷新速率的要求,设置 相应的计数初值. 图2 HS一3282的8位单片机接口原理图 Fig.2 Interface schematic diagram of 8 bits MCU of HS一3282 直接访问占用单片机I/O口少.由于将HS一3282及 写控制电路当成单片机的一个外设来访问,因 维普资讯 http://www.cqvip.com 增刊 陈怀平:基于8位单片机的ARINC429航空数据总线接口设计 325 此软件代码量小,执行时间短,容易保证HS一3282严格的工作时序,但是设计复杂,其中最关键的就是地址 的确定及根据地址和工作时序计算出控制逻辑(表3).其中,表3中GAL20V8的编程逻辑如下: 输出锁存器锁存信号: C1=A0:lc WR 输出锁存器输出允许信号: /OC1=A0+/WR 输入锁存器锁存信号: C2=/A0术RD:lc A3 输入锁存器输出允许信号: /0C2=/A0+/A3 控制字输人选通信号: /CWSTR=A0+/A2+/WR 接收器1的数据到达数据总线信 ̄/.EN1=A0+A2+/A3+/RD 第1个16位数据发送到FIFO: /PL1=A0+A1+A2+/WR 第2个16位数据发送到FIFO: /PL2=A0+/A1+A2+/WR 5软件设计 软件开发环境为KEIL ixVision2,系统软件用单片机C语言编写. /:lc HS3282的读写地址:lc/ #define Contrl_high XBYTE[0xfS00] /:lc写入控制字寄存器高8位地址:lc/ #define Contrl—low XBYTE[0xf400] /:lc写入控制字寄存器低8位地址:lc/ #define Rx1st一—low XBYTE[0xtS00] /:lc接收数据第1字的低8位地址:lc/ #define Rx一1st—high XBYTE[0xf900] /:lc接收数据第1字的高8位地址:lc/ #define Rx2st一—low XBYTE[0xfa00] /:lc接收数据第2字的低8位地址:lc/ #deifne Rx_2st_high XBYTE[0xfb00] /:lc接收数据第2字的高8位地址:lc/ #define Tx一1st—high XBYTE[0xfl00] /:lc发送数据第1字的高8位地址:lc/ #define Tx1st一—low XBYTE[0xf000] /:lc发送数据第1字的低8位地址:lc/ #deifne Tx_2st_high XBYTE[0xf300] /:lc发送数据第2字的高8位地址:lc/ #define Tx一2st—low XBYTE[0xf200] /:lc发送数据第2字的低8位地址:lc/ 表3 HS一3282读/写操作时各端口的电平 Tab.3 Level of every port during read or write HS一3282在工作时必须先对其初始化,以规定数据收发速率、字长选择、是否奇偶校验等.以下是HS 一3282的初始化函数: 维普资讯 http://www.cqvip.com
326 贵州科学 25卷 void iniital(void) { Contrl—high=0x00; / 写入控制字的高8位 / Contd—low=0x20; / 写入控制字的低8位 / } 单片机中断响应函数,用于接收数据,以接收气压修正高度数据为例: void intsvrl(void)interrupt 2 using 1/ INT1的中断服务子程序,用于接收数据 / { Rx_word[0]=Rx一1 st_low; / 接收数据第1字的低8位 / Rx_word[1]=Rx一1 st—high; / 接收数据第1字的高8位 / Rx_word[2]=Rx一2st—low; / 接收数据第2字的低8位 / Rx_word[3]=Rx_2st_high; / 接收数据第2字的高8位 / if(P_x_word[0]==0xa2) / 标号判断 / { Rx—height=(Rx_word[3]&0x7f) 256+Rx_word[2];/ 从接收到的数据中解算出气压修正高度 / if(((Rx_word[3]>>7)&0x01)==1)/ 符号判断 / { Rx—height=(Rx_word[3]&0x7f) 256+Rx_word[2]一1;/ 如果是负值,按2进制补码规则还原 / } } } 单片机定时器中断响应函数,用于发送数据,以发送气压修正高度数据为例: void timer0(void)interrupt 1 usingA TO的中断服务函数,用于发送数据 / { Tx_wodr[0]=0x84; / 气压修正高度的标号 / Tx_word[1]=0x06; / 状态矩阵 / if(Tx—sign)/ 符号判断,如果是负值,按2进制补码规则编码 / { Tx_word[2]=((一(Tx_height (~1)))+1)&0xf; Tx_word[3]=(((一(Tx—height (一1)))+1)>>8)&0x7f; Tx_word[3]=Tx word[3]+0x80; } else { Tx_word[2]=(Tx—height%256)&0xff; Tx_word[3]=(Tx_height/256)&0x7f; } Tx_l st—high=Tx_word[1];/ 发送数据第1字的高8位 / Tx_l st—low=Tx_word[0];/ 发送数据第1字的低8位 / Tx2sthigh=Tx_—_word[3];/ 发送数据第2字的高8位 / Tx_2st_low=Tx_word[2];/ 发送数据第2字的低8位 / } 维普资讯 http://www.cqvip.com 增刊 陈怀平:基于8位单片机的ARINC429航空数据总线接口设计 327 6软件设计合理性分析 以数据接收的中断响应子函数为例,经过KEIL i ̄Vision2编译后生成以下汇编代码: MOV DPTR#0FS00H;/ 接收数据第1字的低8位 / MOVX A,@DPTR; ‘ MOV 43H,#00H; MOV 44H,A; MOV DPTR#0F000H;/ 接收数据第1字的高8位 / MOVX A,@DPTR; MOV 45H,#00H; MOV 46H,A; MOV DPTR#0FA00H;/ 接收数据第2字的低8位 / MOVX A,@DPTR; MOV 47H,#00H; MOV 48H,A; MOV DPTR#0FB00H;/ 接收数据第2字的高8位 / MOVX A,@DPTR; MOV 49H,#00H; MOV 4AH,A; 其中,“MOV DPTR#data”和“MOVX A,@DPTR”指令是双周期指令, “MOV addr,data”和“MOV addr,A”指令是单周期指令,接收一个完整的ARINC429数据字需要(2+2+ 1+1)×4=24个机器周期,在该接口电路设计中中晶振频率是8 MHz,一个机器周期是1/8×12=1.5 s, 因此接收一个数据字需要的时间是1.5 s×24=36 s,一个完整的ARINC429数据字包括32位数据位,字 与字之间有4位间隔作为位同步信息,由此计算出该系统的通信速率为(1000/36)×(32+4)=1000 kbit/s, 远远大于ARINC429总线规定的最大100 kbit/s的标准,完全可以满足高速数据通信的需要. 7 结语 ARINCA29总线是目前应用最广泛的航空数据总线,在我厂某型飞机上体现更加明显.多年来,其技术 核心 直被各机载设备厂商所控制,使我们的工作处于被动地位.通过采用廉价的8031为平台实现其接口 设计,目前已推广到多种航空机载电子设备的地面检测中,从很大程度上缓解了我们处处受制于人的局面, 尤其是GAL可编程逻辑器件在ARINC429总线接口设计中的应用,使产品具有保密性高、抗干扰能力强、性 价比高的特点,具有良好的应用前景.
因篇幅问题不能全部显示,请点此查看更多更全内容