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航空总线接口设计,设计的机载设备已批量装备现役飞机,效果良好。

  • HI-8582的ARINC429已关闭评论
    A+
发布日期:2019年07月02日  所属分类:参考设计