《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > 基于RTOS的飞行数据采集系统

基于RTOS的飞行数据采集系统

2008-07-10
作者:陈 杰, 蒋玉峰

    摘 要: 介绍一种飞行数据采集" title="数据采集">数据采集系统的设计与实现。该系统基于LPC2138 ARM7和USOS II嵌入式实时操作系统,具有实时、高频率的飞行数据采集功能;提供的USB HST接口,可使用普通U盘读取数据,同时系统提供了仿DOS的人机接口" title="人机接口">人机接口命令,方便用户对系统内数据的管理。该系统为小型无人机建模提供了技术支持。
    关键词: LPC2138  USOS II  无人机

 

    近年来,无人机的发展已经突破了军用限制,开始向民用化发展。小型、结构简单、成本低的无人机市场极为广大。
无人机气动布局的参数通常采用风洞试验获得。为降低成本,在小型无人机的设计中,采用实际遥控飞行并记录飞行参数进而推算获得飞机气动布局。为此,设计了基于PhilipARM7以及RTOS的数据采集系统" title="数据采集系统">数据采集系统。
1 系统总体设计
    根据实际设计情况,提出数据采集系统的主要需求为:
    (1)采集模拟格式的高度表、航向数据、姿态数据、飞行速度等信号;
    (2)采集脉冲模式的油门控制信号;
    (3)采集串行数据的GPS定位信号;
    (4)具有存储30分钟飞行数据的能力;
    (5)可快速通过U盘将飞行数据导出,并立刻进行第二次记录飞行数据的能力;
    (6)用户可使用PC查看数据采集系统内部数据存储" title="数据存储">数据存储情况;
    (7)体积小、重量轻、便于安装、可靠性强、抗震及抗抖动性能强、抗干扰能力较强、接口可靠。
    综合考虑以上所列的设计需求,设计了如图1所示的系统总体结构。系统以PhilipARM7系列的LPC2138[1]为核心,完成了所要求的数种格式的飞行信号数据。考虑到数据传输的速度问题,外扩了USB-HST控制器芯片,具备了通过插入U盘并配合按键快速将飞行数据读出的功能。

                       
2 硬件设计
2.1 LPC2138简介
    LPC2138是基于一个支持实时仿真和嵌入式跟踪的32/16位ARM7TDMI-STM CPU微控制器,并带有512KB的嵌入高速Flash存储器。128位宽度的存储器接口和独特的加速结构,使32位代码能够在最大时钟速率下运行。其具有如下特性:
    (1)小型LQFP64封装的16/32位ARM7TDMI-S微控制器,32KB片内静态RAM。
    (2)2个8路10位A/D转换器,共包含16个模拟输入,每个通道的转换时间低至2.44μs。
    (3)2个32位定时器/计数器(带4路捕获和4路比较通道)、PWM单元(6路输出)和看门狗。
    (4)实时时钟具有独立的电源和时钟源,在节电模式下极大地降低了功耗。
    (5)多个串行接口,包括2个16C550工业标准UART、2个高速I2C接口(400 kbps)、SPITM和SSP(具有缓冲功能,数据长度可变)。
    (6)多达47个5V的通用I/O口(LQFP64封装)。
    (7)9个边沿或电平触发的外部中断引脚。
    (8)通过片内PLL可实现最大为60MHz的 CPU操作频率,PLL的稳定时间为100μs。
2.2 数据存储扩展
    大容量数据存储是单片机应用系统的瓶颈,受到容量、功耗、寻址方式的约束。突破容量限制,可以在很大程度上扩展和提高应用系统的总体功能。Sumsung公司的NAND结构Flash存储器件是一款性价比很高的超大容量数据存储器件,在MP3、U盘、数码相机和PDA中有广泛应用,且市场占有份额逐年加大。将该器件作为各种单片机尤其是嵌入式系统的数据存储器,可以完美地解决容量限制,实现灵活操作,势必成为数据存储的主流方向。
    按照50Hz的采样速率,每秒有800×8bit的数据量,系统要求至少存储30分钟的飞行数据。使用K9F2808扩展16M×8bit的外部存储空间,用来存储从发动机控制器中传来的发动机数据,经过计算其至少可以存储500分钟的数据,能够满足无人机飞行数据的要求。
    K9F2808电源电压1.7~3.6V,体积小,功耗低,容量最大可达1GB,按页进行读写,按块擦除,通过I/O口分时复用作为命令/地址/数据。为防止启动或复位时电压不稳的误擦除操作,K9F2808的WP接了10kΩ的上拉电阻,同时与地之间连接滤波电容。其余控制引脚直接与ARM的普通I/O口相连。
2.3 扩展USB Host
    USB技术规范将使用USB进行数据传输的双方划分为Host和Slave,并且规定,数据传输只能发生在Host和Slave之间。目前,绝大多数Host功能角色被集成在各种类型的PC机上,如笔记本电脑、台式机、Mac机及服务器等;而各种各样的基本USB移动设备都集成了USB Slave功能角色,例如U盘、带USB接口的数码相机等。这样,就导致这些作为USB Slave的USB接口的数字设备中的数据离开PC机将无法读写。解决这一问题的根本办法就是在需要使用USB设备的系统中集成USB Host功能模块,使之具有与USB Slave设备进行数据传输的能力。
    本设计利用SL811HS和8位单片机实现的系统完成了USB Host功能,并且提供了USB总线的接口方式。将其作为一个数据接口模块集成到嵌入式系统中,使得用户系统能够读/写作为Slave的USB移动存储器,从而完成数据存储和交换功能,其硬件原理如图2所示。

                  
    SL811HST的主从选择M/S接低电平,用来选择USB的主模式;其中断输出INT_U经下拉接ARM的外部中断。SL811HST外接12MHz的有源晶振,同时将CM接高电平激活内部的时钟4倍频,既可以使芯片内部时钟频率达到48MΩ,又可以降低外部线路频率,提高电路的抗干扰能力。
2.4 复位电路
    ARM系统需要两个复位源,其中一个RST是系统复位源,TRST是JTAG接口的调试复位源。如果两个复位源都使用MAX811的输出,则可能驱动能力不够。因此使用一片高速CMOS三态缓冲器74HC125,以增强输出能力,其原理如图3所示。

                      
3 软件设计
    为确保程序的可靠及编程的简便,本方案中采用了嵌入式操作系统USOS II[2]。USOS II是针对中低档单片机而设计的嵌入式实时操作系统内核,同时支持按时间片轮转、按优先级抢占、二者结合共三种调度策略。其具有完善的任务管理功能,提供定时、延时服务,支持消息、信号(signal)通讯机制,支持临界代码段保护,提供二进制、计数型信号量(semaphore)同步对象等,支持Bottom-half中断管理机制[3]
    本设计创建了人机接口、数据采集二个任务。人机接口主要完成通过串口" title="串口">串口与计算机相连接时对存储在Nand Flash中的数据的整理、备份、删除等功能,数据存储任务负责将各次采样获得的数据打包后存储进入Nand Flash。AD采样中断完成对高度、速度、航向、姿态、舵机位置的数据采集;比较器中断完成对油门控制信号的数据采集;Uart中断完成对GPS定位信号的数据采集。其软件结构如图4所示。

                        
3.1 主程序设计
    主程序主要完成硬件的初始化、操作系统的初始化以及文件系统的初始化。由于USOS II已经提供了比较完善的文件系统管理,因此可采用类似于PC机DOS系统对文件的管理模式。本设计中,将Nand Flash存储设定为C盘,而将临时插入用来读取当次飞行数据的U盘设定为D盘。在Flash初始化成功后,将以Flash为存储媒介的C盘添加到文件系统,并创建数据存储和人机接口任务。如果Flash未初始化成功,则系统报错,并只创建人机接口任务,使用者可以通过PC机对系统进行状态查询。主程序的软件流程如图5(a)所示。

                           
3.2 数据采集任务设计
    数据采集任务主要用来将AD中断、Uart中断、比较器中断采集到的各种飞行数据计算、打包。为提高写Nand Flash的效率,在内存中开辟了两个与Flash页面大小相同、长度为512bit的缓冲区,打包完毕的数据先存入其中一个缓冲区内。当缓冲区存满后,将缓冲区满标志置位,并向人机接口任务发送消息;人机接口任务接收到缓冲区满的消息后,会将对应的缓冲区中的数据写入Flash,并将缓冲区满的标志清空。
    人机接口任务在向Flash中写数据的同时,数据采集任务仍实时采集飞行数据,并将采集到的数据存入另外一个缓冲区,由于采用了操作系统的双任务设计,保证了采集到的数据不会丢失,并提高了采样频率。数据采集任务流程如图5(b)所示。
3.3 人机接口任务设计
    人机接口任务主要用来管理U盘的插拔以及响应用户输入的类DOS命令。如判断出U盘插入,并枚举成功,则在文件系统中添加D盘;如判断出U盘被拔出,则在文件系统中删除D盘。人机接口任务流程如图5(c)所示。
3.4 Nand Flash驱动程序设计
    系统的数据存储期间选用K9F2808,其存储结构示意图如图6所示。该器件由1K个块(block)组成,每个块有32页,每页有528B,这528B分成A、B、C三个区。对每一页的寻址需要通过I/O口送出三个地址,第二、三行地址(A9~A23)指明寻址到某一页,第一列地址指明寻址到页的指定区中某一字节。对页的分区命令如表1所列。

                          
    由表1可以看出,00H、01H、50H只是选区指针。选定区的内部寻址是由第一个列地址完成的,A0~A7可以最大寻址256B。

                            
    Flash的驱动程序按照结构化层次设计方法设计。将Flash的总线数据读写、对控制总线的操作及延时操作封装成底层函数,中层函数由对Flash读、写、擦除、查空等函数组成,顶层函数由USOS II中的文件系统组成,其示意图如图7所示。

                           

                             
3.5 USB HOST驱动程序设计
    本设计主要使用USOS II操作系统中可选配的USB HST驱动软件包,只要将控制SL811HS的I/O口在软件包的底层进行相应定义[4],则对U盘的操作即可实现对用户透明。用户只需调用软件包中的顶层fWrite( )和fRead( )等函数,即可实现USB主口对存储介质的数据读写操作。
    与Nand Flash相似,SL811HST的驱动程序设计也遵循了结构化层次设计,底层是对SL811HST数据及控制线的操作,中层是对SL811HST的读、写以及缓冲区读、写等函数,顶层为文件系统。
3.6 串口驱动程序设计
    设计中采用LPC2138中的两个标准Uart口,其中一个串口用来接收发动机控制器传送的发动机参数,另外一个串口用来与通用PC连接,进行人机交互。
    串口接收、发送数据都采用中断方式。为了方便程序使用,为每个串口都划分了专门的接收、发送缓冲区。当需要发送数据时,将待发送数据存储在对应串口的发送缓冲区中,并置位串口发送中断标志位,启动发送过程。接收数据时,中断程序自动将接收来的数据存放在对应的串口接收缓冲区内,用户可以通过查询接收缓冲区的头尾指针来判断该串口是否接收到数据。
    为方便程序调用,仿照C语言中屏幕显示函数,构造了Putch()、Puts()、Getch()、Gets()等函数,通过串口接收、发送数据。
4 系统联调 
    实际使用中,每次飞行结束后,直接使用普通U盘插入数据采集系统,按下组合键后,可自动将上次记录的飞行数据传送到U盘中。待数次飞行以后,可将数据采集系统通过串口与PC机相连接,使用串口调试助手与采集系统中的仿DOS的指令软件Shell进行通讯。对数据采集系统进行人机交互的界面如图8所示[5]

                      
    上面的操作步骤为:查阅C盘(片上Flash)内容→删除C上一个文件→插入U盘→显示U盘目录→将C盘上数据记录文件拷贝到D盘→显示D盘文件,文件已经拷贝成功。
    通过测试可以看出,数据采集系统具有良好的用户界面,可以通过防DOS命令进行数据读取。
    目前该飞行系统已经安装到试验的小型无人机上进行多次试飞。经过检测,该系统运行稳定、可靠,采集数据没有错误现象,使用U盘读取数据,以及使用PC机进行交互时方便快捷。系统为小型无人机的建模提供了极大的技术支持。
参考文献
[1] Philips Semiconductors Preliminary User Manual.LPC2131/2132/2138 User Manual[EB/OL],Rev.1.4,2004,4.
[2] 嵌入式软件网.USOS II嵌入式操作系统使用手册[EB/OL].http://www.mcu-soft.com,2006,6.
[3] 郑玉全.微型抢占式实时操作系统的设计与实现.单片机与嵌入式系统,2004,(1).
[4] Silicon Laboratories.Usb firmware programmer′s Guide[EB/OL],Rev1.3,2003,12.
[5] 郑玉全,陈杰,沈为群,等.基于RTOS的涡喷发动机数字控制系统[J].电子技术应用,2005,31(06):34-37.

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。