1ARINC429总线及协议芯片HI-8582简介
1.1ARINC429航空总线简介
ARINC429总线是美国航空无线电公司制定的民用航空数字总线传输标准,它规定了使用该总线的航空电子设备的信息流向和ARINC429基本数据字的格式。ARINC429为单向传输总线,信息只能从通信设备的发送口输出,经传输总线传至与它相连的需要该信息的其他设备的接收口。在需要两个通信设备间双向传输时,则在每个方向各用一根独立的传输总线。ARINC429通信采用带有奇数奇偶校验的32位信息字,信息字通过标牌识别,最多具备256个标牌。采用双极性归零制的三态码调制方式,即调制信号由“高”、“零”和“低”状态组成的三电平状态调制。
1.2HI-8582简介
目前在机载设备中使用的ARINC429总线协议芯片较多,相比之下,HOLTINTEGRATEDCIRCUITS公司生产的HI-8582是一款性能价格比较高的ARINC429协议芯片。该器件的主要功能如下:
●符合ARINC429总线协议;
●具有独立的双向接收和发送接口;
●无需驱动,可直接上ARINC429总线;
●标牌可程序化识别;
●串行数据速率可设位为100kbps或12.5kbps;
●对接收的数据可进行奇偶状态校验;并可对发送数据奇偶状态进行设置;
●可自动产生字与字之间的间隔;
●52脚PQFP封装,节省印制板空间。
2AT89C52与HI-8582的接口设计
2.1接口原理介绍
由于AT89C52是8位处理器,而HI-8582是16位接口芯片,在接口设计中利用一片CPLD实现接口,设计中选用了ALTERA公司的EPM7128作为接口电路。电路框图见图1。
图1中,D1为单片机AT89C52,其中P0端口用于数据的的交换,P2端口用于控制,利用两个外中断INT0、INT1接收收到的429信号,单片机的复位信号是硬件看门狗产生的,图1中没有画出,复位信号RST作为CPLD的输入信号,单片机的时钟选用12MHz,同时12MHz作为CPLD的时钟源。D2为CPLD器件EPM7128,主要完成8位总线和16位总线的转换、数据交换、编译码、产生HI-8582的时钟和复位信号。D3为ARINC429接口电路HI-8582,BD00~BD11为双向数据总线与EPM7128相接,其余均为离散量。

2.2CPLD的控制逻辑

CPLD的控制逻辑见图2。U12为反向器,单片机的复位信号反向后送HI-8582的MR管脚,复位HI-8582中的寄存器。U6~U11构成了分频电路,将12MHz的时钟频率分为1MHz,作为HI-8582的时钟信号。U1~U5为三态8D触发器,由OE控制输出,CLK为时钟控制,上升沿锁存数据,低电平保持,当OE为高电平时输出为高阻状态。
2.3HI-8582的复位及初始化
电路上电后,单片机首先复位RST管脚(高电平有效),同时RST反向后复位HI-8582,然后把控制字写到16位数据总线上,此后便可接收和发送数据。一般情况下,当既不能接收又不能发送数据时,应怀疑初始化过程。初始化程序如下:
CLR7BH;CWSTR清0
MOVP0,2FH;
SETBP2.0;
CLRP2.0;上升延锁存
CLRP2.2;设置8582为输出模式
MOVP0,#31H;
SETBP2.3;上升延锁存控制字低8位
CLRP2.3;
MOVP0,#0E0H;
SETBP2.1;上升延锁存控制字高8位
CLRP2.1;
SETB7BH;
MOVP0,2FH;
SETBP2.0;上升延锁存
CLRP2.0;
SETBP2.2;设置8582为输入模式
2.4HI-8582的数据发送过程
HI-8582发送数据时,首先应置ENTX引脚为低电平,再将PL1置低,将低16位数据写到16位数据总线上,之后,将PL1置高,再将PL2置低,将高16位数据写到16位数据总线上,数据写完之后,将ENTX置高。HI-8582的发送存储器最多可装载16个32位字长的数据,HI-8582采用的是先进先出的发送顺序。发送程序如下:
MOVR0,#0A0H;
CLR7CH;ENTX置低
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
CLR7EH;PL1置低
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
CLRP2.2;设置8582为输出模式
MOVA,@R0;读入8位数据
MOVP0,A;
SETBP2.3;
CLRP2.3;
INCR0;
MOVA,@R0;读入8位数据
MOVP0,A;
SETBP2.1;
CLRP2.1;
INCR0;
SETB7EH;PL1置高
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
SETBP2.2;
CLR7DH;PL2置低
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
CLRP2.2;
MOVA,@R0;读入8位数据
MOVP0,A;
SETBP2.3;
CLRP2.3;
INCR0;
MOVA,@R0;读入8位数据
MOVP0,A;
SETBP2.1;
CLRP2.1;
SETB7DH;PL2HIGH
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
SETB7CH;ENTX置高
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
SETBP2.2;
2.5HI-8582的数据接收过程
当接收器1接收到数据后,系统会置HF1低电平,而当接收器2接收到数据后,系统将置HF2为低电平。欲使接收器1将接收数据的字1送至16位数据总线上,应先置SEL为低电平,再置EN1为低电平,而后再置EN2为高电平,SEL为高电平,便可将字2送至16位数据总线。要使接收器2的数据送至位数据总线上,则置EN2为低电平,EN1为高电平即可。接收程序如下:
CLR7AH;从FIFO中读数据
MOVP0,2FH;SEL置低
SETBP2.0;
CLRP2.0;
CLR78H;EN2置低
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
SETBP3.3;
CLRP3.3;
CLRP2.6;设置8582低8位输入
SETBP2.7;
CLRP2.7;锁存8582低8位输入
MOVA,P0;读429第1字节(8位)
MOVR2,A;保存数据
SETBP2.6;设置第一字节输入为高阻
CLRP2.5;设置第二字节为输入
SETBP2.4;
CLRP2.4;锁存8582第二字节输入
MOVA,P0;读429第2字节(8位)
MOVR3,A;保存数据
SETBP2.5;高阻状态
SETB78H;EN2HIGH
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
SETB7AH;SEL置高
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
CLR78H;EN2置低
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
CLRP2.6;
SETBP2.7;
CLRP2.7;
MOVA,P0;读429第3字节(8位)
MOVR4,A;保存数据
SETBP2.6;高阻状态
CLRP2.5;设置低8位为输入
SETBP2.4;
CLRP2.4;
MOVA,P0;读429第4字节(8位)
MOVR5,A;保存数据
SETBP2.5;高阻状态
SETB78H;EN2置高
MOVP0,2FH;
SETBP2.0;
CLRP2.0;
以上程序采用中断接收数据,当HI-8582的FIFO满后,HF1或HF2将变为低电平,产生中断,按以上程序处理结束后,HF1或HF2将变为高电平,从而完成一次数据的接收流程。
3结束语
按照本文介绍的方法已成功实现HI-8582的ARINC429航空总线接口设计,设计的机载设备已批量装备现役飞机,效果良好。