FatFS在离线温度监控系统上的应用

2014-10-21 14:24王宁张雷张征
电子世界 2014年12期

王宁 张雷 张征

【摘要】本文设计了一种采用FatFS文件系统的环境温度监控系统。系统采用温度传感器采集环境温度,外置定时芯片确定采样间隔,SD卡存储温度数据,FatFS文件系统进行单片机数据存储任务的管理。

【关键词】FatFS;Freescale;SD

1.引言

发动机电控单元(ECU)是汽车的“神经中枢”,对环境可靠性有严格的要求[1],ECU环境实验设备承担振动、高低温、寿命等ECU可靠性能实验的任务。根据国际通行实验室认可准则ISO/IEC17025,实验室环境温度指标应满足实验要求[2]。为建立高标准的ECU环境实验室,需要对室内温度数据进行定期检测。传统的环境温度记录方法依靠实验人员实施,劳动强度大。本文设计了一种离线温度监控系统,采用温度传感器采集数据,SD卡存储温度数据,FatFS文件系统[3]管理SD卡的数据读写操作,实现对实验室环境温度定期记录。该系统能减轻实验人员的负担,提高工作效率。

2.系统结构

温度监控系统结构如图1所示。温度采集模块采用数字温度传感器DS18B20[4],其具有一线制数据传输结构,9~12位分辨率,测量范围为-55~125℃。数据存储模块采用Sandisk 2G SD卡[5],传输速度可达到100Mbit/s。SD卡模块工作电压为TTL电平,而MCU工作电压为CMOS电平,因此需要在二者间增加转换电路[6]。SD卡支持两种操作模式,SD模式和SPI模式,考虑到MCU的I/O口资源限制, SPI模式较为常用(如图2所示)。显示端采用7段数码管,显示当前的环境温度值。MCU采用Freescale推出的16位MC9S12XEP100单片机[7],其内部PLL超频能力能显著降低对外部频率源的主频的需求, XGATE核能协处理I/O中断需求,从而降低主核的任务量。另外,其具有EEPROM、FLASH以及丰富的I/O资源(例如SPI、ECT、CAN2.0等),增强的系统集成性和更好的功能性。定时模块采用DS1302芯片[8],可以对年、月、日、周日、时、分、秒进行计时,工作电压为2.5V~5.5V。采用三线接口与MCU通讯,通过外置晶振源和纽扣电池实现系统的RTC定时功能。

3.软件设计

温度监控系统软件流程图如图3所示,程序主要完成几个方面的任务:首先,周期中断任务,系统需要以30分钟为周期对环境温度采集任务进行定时中断;其次,温度采集任务,系统对DS18B20进行控制,读取环境温度;第三,数据存储任务,系统通过FatFS系统将温度数据存入SD卡中;最后,显示任务,系统将温度数据送入数码管实时显示。

系统上电后,进行板级初始化,配置MCU等工作。随后检测卡槽是否有SD卡,若检测到SD卡,则读取DS1302芯片预存的日期时间信息。此后,启动定时器并查询定时时间。若定时时间到,启动DS18B20采集温度数据,并进行ASCII码数据格式转换。随后查询SD卡存储状态,若未满,则将ASCII码数据存入SD卡,并显示当前温度值。

3.1 FatFS文件系统的移植

所设计的温度监控系统采用FatFS文件系统进行SD卡数据存储任务管理。目前FAT文件系统有FAT12、FAT16、FAT32三种格式,其中FAT16支持16MB~2GB,FAT32支持32MB~32GB,可根据需要灵活选择。FatF文件系统(Tiny版)是一种完全免费开源的FAT文件系统,专为小型嵌入式系统设计。FatFS文件系统遵守ANSI C标准,完全与磁盘I/O层分离,独立于硬件平台(FatFS文件系统的层次结构如图4所示)。FatFS文件系统具有小巧、读写简易、功能强大、易于移植等特点。

FatFS文件系统的移植需要修改ffconf.h,integer.h以及diskio.c中的六个底层接口函数(如表1所示)。其中integer.h涉及FatFS文件系统用到的数据类型,ffconf.h涉及FatFS文件系统的功能开关,可根据需要进行修改。

3.2 SD卡模块

由于FatFS文件系統的没有提供具体型号MCU的SD的底层操作函数,用户需要完成4个涉及SD卡的底层操作功能,分别是延时、初始化以及读/写字节功能。在本文中,延时功能由ECT定时器实现,读/写字节功能由MC9S12XEP100的SPI控制模块实现。SD卡初始化后,默认为SD模式,需要按照流程图5,进入SPI模式。

3.3 DS18B20读写控制模块

DS18B20读写流程如图6所示。对DS18B20读写前,MCU发出480us的低电平信号初始化芯片,延时60~240us,若得到响应,则完成初始化工作。写操作需要MCU拉低信号线,产生写时隙(>60us)。读操作需要MCU产生(>1us)负向脉冲,延时15us后读取数据。读取后的数据按照图7所示的数据格式提取温度值。

4.结语

本文采用FatFS文件系统在MC9S12XEP100硬件平台实现了对环境实验室温度的离线采集和数据存储,测试表明SD卡能正常读出环境温度数据。该系统能减轻实验人员的负担,提高工作效率。

参考文献

[1]余淼,刘胜龙,朱李晰.汽车发动机ECU的可靠性试验研究[J].内燃机工程,2010(03).

[2]吴跃锋,巩建厅.实验室内温湿度实时测控装置的设计[J].湖南林业科技,2008(05).

[3]崔鹏伟,闫学文.基于SD卡的FATFS文件系统的研究与应用[J].工业控制计算机,2013(11).

[4]Dallas Inc.DS18B20 User Manual[K].2005.

[5]SanDisk Secure Digital Card Product Manual[K].Version 2.2,San-Disk Corporation,September,2004.

[6]杨琛,张雷,寇伟.Freescale单片机的SD卡数据读写设计[J].电子世界,2014(05).

[7]孙同景.Freescale 9S12十六位单片机原理及嵌入式开发技术[M].北京:机械工业出版社,2008.

[8]Dallas Inc.DS1302 User Manual[K].2007.