基于LPC2210的ARINIC429总线测试装置研究
ARINIC429总线是上个世纪80年代商务飞机所广泛使用的一种航空总线。其信息内容综合了200多种航空参数,主要是为了解决航空设备中点对点的数据交互。
ARINIC429总线数据编码方式可以划分为二进制位数据编码(BNR)和二到十进制8421编码(BCD),使用32位的双极性非递归“1”“0”组成,其中最高32位为奇偶校验位,每一帧的尾部加上4位静寂间隔位,码速率分为100Kbps和12.5Kbps两种。一般正常情况下接收端电平为+6V。+5V~+13V被认为是逻辑“高”;-6.5V~-13V被认为是逻辑“低”;-2.5V~+2.5V被认为是逻辑“空”,为数据无效状态。
每一帧ARINIC429数据都由五个部分组成,分别为:标号(LABEL)、识别符(SDI)、数据域(DATA)、符号矩阵状态位(SSM)和奇偶校验位(P)。具体意义为:
标号(LABEL): ARINIC429总线数据对每一个航空参数都规定了一成不变的标号,如真空速度标号永远是230。
识别符(SDI):标识数据来自什么数据源,发往哪个目的设备。
数据域(DATA):用于具体说明参数值,使用BCD或BNR编码填充。
符号矩阵状态位(SSM):说明数据属性和发送装置的工作状态。
奇偶校验位(P):ARINIC429数据的奇数校验。
硬件设计说明
如图1所示为ARINIC429总线接收测试装置原理框图,整个设备设计了两路ARINIC429总线收发通道。可以同时发送2路ARINIC429信号,中断接收4路ARINIC429信号。
图1 接收测试装置原理框图
装置核心处理器采用了ARM7T内核的LPC2210。LPC2210具有开放式外部总线结构和JTAG下载调试仿真功能,支持ADS1.2开发环境仿真下载,这些都极大地方便了用户对于实际产品的开发。芯片内部集成16K的RAM,144引脚LQPF封装。外围3.3V供电,核电压1.8V。外部还集成了I2C、PWM、UART等接口总线。
如图2所示,LPC2210使用了11.0592MHz晶振,经过内部PLL控制寄存器,倍频成为60MHz以上的时钟主频。外部存储总线上配置了一片4Mb的SRAM(IS61VL25616编址Ox80000000- Ox8007ffff)和1片16Mb的FLASH(SST39VF160编址Ox81000000- Ox811fffff)。为了方便调试,LPC2210的CE0和CE1片选都加了跳针。如图3所示。调试时程序代码映射到片外SRAM中运行,产品定型后,将程序固化到片外的FLASH运行。系统的总线宽度BOOT[1:0]由跳线控制。
图2 LPC2210处理器部分原理框图
图3 外部存储器件原理图
整个ARINIC429发送环节由HS3182和HS3282器件组成一个ARINIC429收发通道。HS3282是ARINIC429的协议芯片,HS3182是ARINIC429物理层的驱动芯片,工作时需要±15V的差动电压。LPC2210通过一片可编程逻辑器件EPM3064ATC100-6对处理器的数据线、地址线进行编址,并访问外部HS3282芯片。由于LPC2210引脚接口电压为+3.3V,而可编程逻辑器件等其它外围器件I/O引脚电压是+5V,因此每一个引脚串接了一个470W电阻,进行电路保护。EPM3064ATC100-6具体逻辑设计如图4描述。
图4 HS3282逻辑控制框图
LPC2210片选CE3用作地址的锁存控制信号,地址通过锁存器后开始进行逻辑译码。分别使HS3282的CWSTR(命令字读写)、LD1、LD2(发送使能)等关键控制信号有效,完成对ARINIC429收发的时序使能操作。LPC2210数据总线直接连接HS3282的数据线。此外,EPM3064ATC100-6还将外部一个4MHz的时钟源分频成为两路1MHz的时钟供HS3282芯片使用。HS3282发送出TTL电平的信号驱动HS3182,将信号电压抬升至符合ARINIC429总线要求的标准。HS3182工作时需要+15V、-15V电压。
为了便于同用户的交互测试,装置设计了LCD显示屏和操纵键盘。LPC2210的片选CE2编址控制一块240×128点阵T6963控制器的单色液晶显示屏,其接口原理如图5所示,命令字和数据字编址分别为0x82000002、0x82000000。LPC2210操纵T6963控制器进行点阵式的图形显示。
图5 LCD显示器接口原理图
软件设计
本测试装置的软件设计主要流程图如图6所示。
图6 软件流程图
一些主要环节的代码如下:
#include "config.h"
#define t6963COM (*((volatile uint8 *)0x82000002))
#define t6963DAT (*((volatile uint8 *)0x82000000))
#define CHA_ld1 (*((volatile uint8 *)0x83000000))
#define CHA_ld2 (*((volatile uint8 *)0x83000002))
#define CHA_cwstr (*((volatile uint16 *)0x83000004))
#define CHA_oe1 (*((volatile uint8 *)0x83000006))
#define CHA_oe2 (*((volatile uint8 *)0x83000008))
#define CHB_ld1 (*((volatile uint8 *)0x8300000A))
#define CHB_ld2 (*((volatile uint8 *)0x8300000C))
#define CHB_cwstr (*(
LPC2210ARINIC429总线测试装 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)