基于HI-8582的ARINC429总线设计
要:简要介绍了ARINC429总线和HI-8582芯片的特点,给出了基于HI-8582的ARINC429总线设计思路和方法。最后结合工程实际给出了单片机AT89C52的数据收、发程序实例。
关键词:HI-8582,ARINC429接收,ARINC429发送,AT89C52
1 ARINC429总线及协议芯片HI-8582简介
1.1 ARINC429航空总线简介
ARINC429总线是美国航空无线电公司制定的民用航空数字总线传输标准,它规定了使用该总线的航空电子设备的信息流向和ARINC429基本数据字的格式。ARINC429为单向传输总线,信息只能从通信设备的发送口输出,经传输总线传至与它相连的需要该信息的其他设备的接收口。在需要两个通信设备间双向传输时,则在每个方向各用一根独立的传输总线。ARINC429通信采用带有奇数奇偶校验的32位信息字,信息字通过标牌识别,最多具备256个标牌。采用双极性归零制的三态码调制方式,即调制信号由“高”、“零”和“低”状态组成的三电平状态调制。
1.2 HI-8582简介
目前在机载设备中使用的ARINC429总线协议芯片较多,相比之下,HOLT INTEGRATED CIRCUITS公司生产的HI-8582是一款性能价格比较高的ARINC429协议芯片。该器件的主要功能如下:
●符合ARINC429总线协议;
●具有独立的双向接收和发送接口;
●无需驱动,可直接上ARINC429总线;
●标牌可程序化识别;
●串行数据速率可设位为100kbps或12.5kbps;
●对接收的数据可进行奇偶状态校验;并可对发送数据奇偶状态进行设置;
●可自动产生字与字之间的间隔;
●52脚PQFP封装,节省印制板空间。
2 AT89C52与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.2 CPLD的控制逻辑
图2 接口电路的CPLD控制逻辑
图2 接口电路的CPLD控制逻辑
CPLD的控制逻辑见图2。U12为反向器,单片机的复位信号反向后送HI-8582的MR管脚,复位HI-8582中的寄存器。U6~U11构成了分频电路,将12MHz的时钟频率分为1MHz,作为HI-8582的时钟信号。U1~U5为三态8D触发器,由OE控制输出,CLK为时钟控制,上升沿锁存数据,低电平保持,当OE为高电平时输出为高阻状态。2.3 HI-8582的复位及初始化
电路上电后,单片机首先复位RST管脚(高电平有效),同时RST反向后复位HI-8582,然后把控制字写到16位数据总线上,此后便可接收和发送数据。一般情况下,当既不能接收又不能发送数据时,应怀疑初始化过程。初始化程序如下:
CLR 7BH;CWSTR清0
MOV P0,2FH;
SETB P2.0;
CLR P2.0;上升延锁存
CLR P2.2;设置8582为输出模式
MOV P0,#31H;
SETB P2.3;上升延锁存控制字低8位
CLR P2.3;
MOV P0,#0E0H;
SETB P2.1;上升延锁存控制字高8位
CLR P2.1;
SETB 7BH;
MOV P0,2FH ;
SETB P2.0;上升延锁存
CLR P2.0;
SETB P2.2;设置8582为输入模式 2.4 HI-8582的数据发送过程
HI-8582发送数据时,首先应置ENTX引脚为低电平,再将PL1置低,将低16位数据写到16位数据总线上,之后,将PL1置高,再将PL2置低,将高16位数据写到16位数据总线上,数据写完之后,将ENTX置高。HI-8582的发送存储器最多可装载16个32位字长的数据,HI-8582采用的是先进先出的发送顺序。发送程序如下:
MOV R0,#0A0H;
CLR 7CH;ENTX置低
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
CLR 7EH;PL1置低
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
CLR P2.2;设置8582为输出模式
MOV A,@R0;读入8位数据
MOV P0,A;
SETB P2.3;
CLR P2.3;
INC R0;
MOV A,@R0; 读入8位数据
MOV P0,A;
SETB P2.1;
CLR P2.1;
INC R0;
SETB 7EH;PL1置高
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
SETB P2.2;
CLR 7DH;PL2置低
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
CLR P2.2;
MOV A,@R0;读入8位数据
MOV P0,A;
SETB P2.3;
CLR P2.3;
INC R0;
MOV A,@R0; 读入8位数据
MOV P0,A;
SETB P2.1;
CLR P2.1;
SETB 7DH;PL2 HIGH
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
SETB 7CH;ENTX置高
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
SETB P2.2;
2.5 HI-8582的数据接收过程
当接收器1接收到数据后,系统会置HF1低电平,而当接收器2接收到数据后,系统将置HF2为低电平。欲使接收器1将接收数据的字1送至16位数据总线上,应先置SEL为低电平,再置EN1为低电平,而后再置EN2为高电平,SEL为高电平,便可将字2送至16位数据总线。要使接收器2的数据送至位数据总线上,则置EN2为低电平,EN1为高电平即可。接收程序如下:
CLR 7AH;从FIFO中读数据
MOV P0,2FH;SEL置低
SETB P2.0;
CLR P2.0;
CLR 78H;EN2置低
MOV P0,2FH;
SETB P2.0;
CLR P2.0 ;
SETB P3.3 ;
CLR P3.3 ;
CLR P2.6;设置8582低8位输入
SETB P2.7 ;
CLR P2.7;锁存8582低8位输入
MOV A,P0;读429第1字节(8位)
MOV R2,A;保存数据
SETB P2.6;设置第一字节输入为高阻
CLR P2.5;设置第二字节为输入
SETB P2.4;
CLR P2.4;锁存8582第二字节输入
MOV A,P0;读429第2字节(8位)
MOV R3,A; 保存数据
SETB P2.5;高阻状态
SETB 78H;EN2 HIGH
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
SETB 7AH;SEL置高
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
CLR 78H;EN2置低
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
CLR P2.6;
SETB P2.7;
CLR P2.7;
MOV A,P0;读429第3字节(8位)
MOV R4,A;保存数据
SETB P2.6;高阻状态
CLR P2.5;设置低8位为输入
SETB P2.4;
CLR P2.4;
MOV A,P0;读429第4字节(8位)
MOV R5,A;保存数据
SETB P2.5;高阻状态
SETB 78H;EN2置高
MOV P0,2FH;
SETB P2.0;
CLR P2.0;
以上程序采用中断接收数据,当HI-8582的FIFO满后,HF1或HF2将变为低电平,产生中断,按以上程序处理结束后,HF1或HF2将变为高电平,从而完成一次数据的接收流程。
3 结束语
按照本文介绍的方法已成功实现HI-8582的ARINC429航空总线接口设计,设计的机载设备已批量装备现役飞机,效果良好。
评论
查看更多