APP下载

基于FatFS的无外部电源串口记录器设计

2016-04-01张生文

铁路通信信号工程技术 2016年1期

张生文

(北京全路通信信号研究设计院集团有限公司,北京 100073)



基于FatFS的无外部电源串口记录器设计

张生文

(北京全路通信信号研究设计院集团有限公司,北京 100073)

摘要:描述了一种无电源串口记录器的设计,可以连接到常见的RS-232接口上,从总线上获取工作电源,将RS-232接口数据以文件的形式记录到本地存储芯片中。数据维护时,该设备可被PC机识别为大容量存储器,可直接对数据文件进行转存等操作。该设备的文件系统基于FatFS,对其进行改进以降低运行时的功耗,降低了开发难度并保证了良好的兼容性。

关键词:FatFS;串口记录器;无外部电源

Abstract:The paper describes the design of a RS232 data recorder without external power. The recorder connects with RS232 connector getting work power from data bus and saves bus data to the local chips in fi le type. It is identi fi ed as mass storage as maintenance. Its fi les can be copied directly to other equipment, and the file system is developed based on modified FatFS for reducing the operation power and the developing dif fi culty and ensuring the good compatibility.

Keywords:FatFS; RS232 data recorder; no external power

1 概述

串口是一种非常通用的设备通信总线,在设备调试,维护接口等领域获得了广泛的应用。在轨道交通等行业中,受限于供电条件,运行时间较长等原因的限制,给串口数据的记录带来了困难。本文设计了一种串口记录器,连接使用RS-232接口的设备,采集其串口输出的数据并保存在存储芯片中,可通过USB接口连接至PC机后将数据转存到其他设备。

1.1功能描述

串口记录器可根据当前串口的设备连接情况更改记录下载器的工作模式,即分别工作在串口记录工作模式或大容量存储器模式。

串口记录工作模式下,该设备自动将串口输出的数据记录在本地存储芯片中,也可根据被连接设备的需要输出指令与被连接设备交互,对其进行配置或获取部分数据。当设备中存储的数据量达到设备容量限制时,设备自动删除较老的数据,保证记录器中存储较新的数据。

大容量存储器模式下,该设备与PC机通过USB接口连接,PC机将该设备识别为大容量存储器,可将数据直接拷贝到其他存储设备中。USB模式下也可通过上位机软件对记录下载器进行实时时钟等配置。

1.2创新性优点

设备上电时,根据配置情况自动进入固件更新程序或正常程序,固件更新程序可使用官方提供的上位机升级程序更新设备的程序,可用于bug修复等,既不需要打开设备,也不需要专用的工具,使用的便利性得到改善;该设备不使用外部电源,直接对串口总线的电压差进行电压转换操作,获取芯片的工作电源;设计有实时时钟芯片和充放电电池,可用于给记录的数据标记时间信息等,同时该模块可在较长时间内保证稳定工作。

2 硬件设计

为降低设备的总体功耗,硬件设计中使用了较多的低功耗芯片,并对电阻、电容的取值进行优化,以使设备工作稳定可靠。

2.1 总体框架

因串口记录器在对串口数据进行记录时无外部电源,因此设备设计取电模块从RS-232串口总线上取电。RS-232是负逻辑电平,它定义+5~+12 V为低电平,而-12~-5 V为高电平。被连接设备的发送线与地之间无论空闲与否,均有电压差,该电压差可被取电模块使用获取设备的工作电源。被连接设备通常使用的RS-232收发器的驱动能力一般可以达到20 mA,而在串口记录器的设计中,可使系统的总体平均功耗降低至3~4 mA,根据电压转换效率计算后,RS-232收发器亦完全可以驱动串口记录器,记录器的总体框架如图1所示。

2.2取电模块

当串口接收线为正电压时,线性降压电路工作,将接收线的正电压变换为工作电源;当串口接收线为负电压时,负压变换电路工作,将负电压变换为工作电源,由于负压变换电路可视为升压电路,所以该电路提供的输出电流约为输入电流的一半。根据串口的设计原理,当串口上没有数据传输时,串口接收线将保持负电压,所以负压变换电路是串口记录器的主要供电电路,如图2、3所示。

2.3存储模块

目前,常用的存储芯片类型为E2PROM、NOR FLASH和NAND FLASH。E2PROM芯片的读写功耗低,但是存储容量往往限制在数兆字节,用作存储芯片将对设备的容量带来限制;NAND FLASH的存储容量大,使用范围广,在U盘等领域获得了广泛的应用,但是其功耗大、接口特殊的特性使其无法应用在该设备中;NOR FLASH的容量一般小于NAND FLASH,但随着芯片集成工艺的提升,其容量也达到了百兆级别,可以满足串口记录器的需求。

串口记录器数据的存储使用了NOR FLASH芯片,芯片接口为SPI总线,单片容量为数十兆字节,低速率下读写功耗约为5~10 mA。若在设备中配备两片存储芯片,容量可达百兆字节,也可根据项目需要选择低容量的芯片以降低设备成本。

可惜我无能用后续的写作告慰这种鼓励。一个月很快过去。我写出的文字连我自己都羞于出手。看过稿子的王朝垠对我说,别灰心,慢慢来。大约是看我过于沮丧,他邀我去他家喝酒。

2.4实时时钟模块

为获得串口数据的接收时间,串口记录器中需具有实时时钟模块,若直接采用主控芯片自带的实时时钟模块,系统断电后的最低功耗往往为微安级别,若采用外置的实时时钟芯片,系统断电后的最低功耗可降至数百纳安,可将实时时钟的保持时间延长数倍。因此串口记录器中设计了主控实时时钟模块和外置实时时钟模块,可根据被连接设备的需要进行选择。外置芯片若集成了充电电路,可用于给充放电电池充电。系统断电后,由充放电电池为实时时钟模块提供电源。

3 软件的低功耗设计

为尽可能降低记录器运行时功耗,针对该设备的特点在软件设计中做了多处优化,带来了功耗的降低和使用的便利性。

3.1工作模式

串口记录器有3种工作模式,如图4所示。

因串口记录器的功能需求差异较大,软件设计中对设备的功能进行了划分,分别为固件更新模式和正常工作模式。固件更新模式下的程序,可移植主芯片厂商的Bootloader程序[1],移植的程序可选择USB接口的工作模式,同时根据需要对进入该工作模式的判定方法进行适应性修改,满足设备的实际情况;若判定不需要固件更新,则进入正常工作模式,分别为串口记录模式和大容量存储器模式。

串口记录模式下,要求设备具有较低的功耗。因此,在软件设计中,需要从以下几个方面降低设备功耗。

*关闭主控芯片不需要的外设模块。

*降低晶振等时钟频率。

*使各类芯片工作在低功耗模式或睡眠模式下。

*数据记录时,通过RAM进行缓冲,达到一定字节后再写入存储芯片,如图5所示。

3.2FatFS的优化

FatFS是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统[2]。具有兼容Windows,易于移植,适应性广有优点。但是,软件为了接口的简洁和移植的方便性,仅为使用者提供了数据较为统一的接口函数。在串口记录器的设计中,若直接使用FatFS文件系统,将会因为FLASH芯片不能单字节擦除的特性造成对扇区的频繁读写,因此,在软件设计中,需要对FatFS优化,以减少对扇区的操作。

FAT文件系统包括4个部分,分别为引导区、文件分配表区域、根目录区域和数据区域。引导区保存了基本输入输出参数,其内容在磁盘格式化时被写入,平时亦只有获取文件系统信息时被使用。因此该区域的操作可以简化;文件分配表区域保存了各扇区的使用和连接关系,当文件的容量每增加一个扇区大小时,该区域的内容将会被更新一次,因此在FatFS文件系统中对该区域的更新十分频繁;根目录区用于保存文件名、创建时间、大小等信息,因此创建文件或文件更新时该区域将会被更新;数据区记录了文件的具体内容,当文件的内容增减时,该区的特定扇区内容将会被改写。

根据FAT文件系统的特点,软件分别针对各部分的操作进行优化。

*引导区操作中对保留或未使用部分的操作进行移除,减少无用的FLASH读写操作。

*文件分配表区从FLASH芯片挪至E2PROM区域,更新时可实现单字节的更新。

*根目录区的更新以文件为单位,可将其变动依次写入保留的FLASH扇区中,设备启动时统一对根目录区进行更新。

*数据区写入时优化为按实际字节进行改写,更改时的操作保持不变。

4 结论

本文所设计的串口记录器可用于长时间对被连接设备的串口数据进行记录,使用方便,维护简单快捷。被连接设备的故障诊断和分析可使用该记录器中的原始数据,故障定位更加准确和快捷。

参考文献

[1]杜春雷.ARM体系结构与编程[M].北京:清华大学出版社,2003.

[2]洪岳炜,王百鸣,谢超英.一种易于移植和使用的文件系统FatFs Module[J].单片机与嵌入式系统应用,2008(5):29-31.

收稿日期:(2015-03-30)

DOI:10.3969/j.issn.1673-4440.2016.01.021