余晖冬 陈 鑫 王书磊
(1.中国人民解放军92145部队,上海 200080 2.海军工程大学导航工程教研室,湖北 武汉 430033)
捷联式惯性导航系统(Strapdown Inertial Navigation System,SINS)将惯性器件直接固连在运载体上,惯性器件可以感应出运载体的加速度和姿态等信息,而且不受任何外部因素的影响,可以实现真正意义上的自主式导航[1-3]。捷联惯导系统具有成本较低、体积更小、可靠性更高等优点,因此已成为惯性导航技术的重要发展方向之一。相对于传统平台式惯性导航系统,捷联惯导数字化程度更高,因此数字信号的传输与通信是导航实现的前提和基础。目前,捷联惯导与上位机或导航解算计算机的通信主要采用串行通信。通信数据主要包含陀螺仪输出的角速度数据和加速度计输出的加速度数据等,用于后续导航解算和数据处理分析。为保证导航解算对于惯性器件数据更新率的要求,惯导串行通信通常具有数据量大、波特率高、更新率高等特点。在通用计算机上实现惯导高速串行通信相对简单,文献[4][5]介绍了在VC++开发平台下,基于MSComm进行串口编程的方法。文献[6][7]阐述了在VC++开发平台下基于MOXA多串口卡的多串口实时通信的实现方法。但是在嵌入式计算机上,由于要兼顾成本和性能,需要对系统资源进行优化配置,对程序进行合理设计。本文基于低成本的DSP 28335硬件架构,设计了捷联惯导高速串行通信模块,以较低的硬件成本,构建了惯性导航实现平台。
DSP(Digital Signal Processer)即数字信号处理器,是美国德州仪器公司(Texas Instruments,简称TI)研发生产的专用于数字信号处理的芯片,其强大的浮点型计算能力是目前市面上其他CPU无法比拟的,集成有专用数学计算指令集以及对内存优化能力使这款专用CPU 在数字信号处理领域表现优异。
由于是专用CPU,因此DSP 只能用TI 公司专用的软件开发工具设计软件,TI 公司将这款软件命名为CCS(Code Composer Studio,CCS 集成代码开发环境)。DSP 系统软件开发工具CCS编辑、编译、连接、软件仿真以及硬件调试等功能于一体,操作简单,拥有良好的人机交互界面,并支持C语言标准,编程简单易于开发[8]。它不仅提供了配置、建立、调试、跟踪和分析程序的工具,而且便于实时、嵌入式信号处理程序的编制和测试,能够加速程序开发进程,提高设计工作效率。
惯性导航设备陀螺仪和加速度计数据采用IEEE标准浮点型数据格式输出,每个浮点型数占4个字节外加协议头和协议尾以及自定义信息共62字节。由于惯性导航解算要求陀螺仪和加速度计数据更新率不低于100Hz,为保证信息的有效传输以及为后续导航解算预留硬件资源,设定通信波特率为1843200bit/s。
串口接收数据以及发送数据都设置为中断模式,利用中断模式接收数据可以有效节省CPU资源,避免主程序实时查询带来不必要的浪费,当串口完整接收一个字节时将数据存储在预先定义的串口接收缓存区中,缓存区至少能缓存3条最大协议内容的长度。这种设计方式能够保证即使主程序不能及时处理串口数据也不会造成数据丢失的问题。
主程序遍历串口接收数据缓存区,如果协议缓存区字节数超过最大协议长度字节数62字节依然没有收到协议头或者协议尾,或者校验失败则丢弃这条协议,清除协议解析缓冲区。这种串口接收数据处理方式称之为双缓存区模式。这种处理方式可以很轻松处理高速数据通信问题而且不容易丢失数据。串口数据接收协议解析流程如图1所示。
图1 串口数据接收处理流程图
串口接收数据中断函数流程如图2所示。
图2 串口接收中断函数流程图
串口发送函数流程处理如图3所示。
图3 串口发送函数流程图
串口发送中断函数处理过程如图4所示。
图4 串口发送中断函数流程图
DSP 28335芯片初始化阶段,主要对系统时钟频率、串行通信SCI模块、芯片引脚、中断向量等进行初始化设置,其主要代码及其功能如下:
串口接收中断服务程序主要将输入缓冲区的数据读入到存储器中,同时将数据按照协议进行解析,将其转换成计算机能处理的数据形式,便于后续进行惯性导航解算,其主要代码及功能如下:
捷联惯性导航系统在军、民用领域都有重要应用,而嵌入式惯性导航解算计算机是捷联惯导的重要组成部分。陀螺仪和加速度计等惯性器件与嵌入式计算机的通信是实现惯性导航的前提和基础。为了兼顾惯性导航串行通信的高更新率、高波特率、大数据量等特性,以及嵌入式计算机成本等需求,本文基于DSP 28335硬件架构设计了捷联惯导通信模块,从而实现了捷联惯导高速、稳定、可靠的数据通信。