您的位置 首页 制造

根据FAT16文件体系的嵌入式温度记录器设计方案

闪存技术的不断发展,使得闪存卡(如SD卡、MMC卡等)因其体积小、容量大、可靠性高等优点而在嵌入式存储领域得到越来越广泛的应用。FAT16文件系统具有出色的文件管理性能,能被大多数操作系统识别,因

  闪存技能的不断开展,使得闪存卡(如SD卡、MMC卡等)因其体积小、容量大、可靠性高级长处而在嵌入式存储范畴得到越来越广泛的运用。FAT16文件体系具有超卓的文件办理功用,能被大多数操作体系辨认,因而将闪存卡与FAT16文件体系相结合是嵌入式存储、记载体系中一个抱负的计划。温度收集与操控技能是现代丈量、操控体系的一个重要组成部分。因为传统的模仿传感丈量温度体系存在丈量精度低、易受搅扰、硬件杂乱、调试繁琐等不利因素,而新式单片数字式温度传感器具有丈量精度高、抗搅扰能力强、操作便利、功耗低一级长处,运用规划越来越广泛。本嵌入式数字温度记载器以ARM7微处理器LPC2148、数字温度传感器ADT75为根底,选用大容量SD卡作为存储介质,完结了FAT16文件体系,为温度收集与记载、嵌入式体系的数据存储供给了一个抱负的解决计划。

  1 硬件规划

  本温度记载器的硬件电路完结简略,首要包括2个部分:SD卡读/写单元电路、ADT75测温单元电路。如图1所示,LPC2148经过SPI总线读/写SD卡,经过I2C总线读/写ADT75完结温度的收集。

图1 温度收集器硬件电路

  1.1 SD卡与LPC2148的硬件接口规划

  SD卡是一种依据NAND Flash的存储卡。因为它具有安全性高、容量大、体积小、功耗低、非易失性等长处,现在在嵌入式体系中已获得越来越广泛的运用。

  SD卡支撑2种接口方式:SD卡方式、SPI方式[1]。SD卡方式选用4根数据线并行传输,速度快,但协议完结杂乱;SPI方式尽管速度功用与SD方式比较有所短缺,但协议完结简略,操作便利。

  SD卡共有9个引脚,在SD方式下与SPI方式下各引脚的界说不相同。在SPI方式下,SD卡1~7引脚依次为片选引脚CS、数据输入DI、电源地、电源VDD、时钟信号CLK、电源地、数据输出DO,8脚与9脚在SPI方式下保存未用。因为SPI总线通讯协议要求在闲暇时SPI总线应坚持高电平,因而CS、DI、DO、CLK应外接10kΩ左右的上拉电阻。

  1.2 ADT75测温作业原理

  ADT75ARZ是ADI公司推出的一款低功耗、高分辨率的温度传感器。它内含12位A/D转化器,具有SMBus/I2C兼容接口,有超温指示输出引脚,额外作业温度规划为-55~+125℃,分辨率可达0.062 5 ℃,功耗低,作业电压是3~5.5 V[2]。其典型运用电路如图1所示。

  ADT75的作业进程如下:ADT75经过内部的温度传感器将收集的温度转化为电压信号。此电压信号经过内部的∑Δ调节器后输入至12位A/D转化器,A/D转化后的12位温度数据存储于温度数据寄存器中,并将该温度数据与温度限制寄存器的值比较较,假如超越设定值,则引脚OS输出有用电平。OS引脚输出的有用电平可在装备寄存器中设定。

  ADT75内部有5个寄存器:4个数据寄存器,1个地址指针寄存器。4个数据寄存器分别为装备寄存器、温度数据寄存器、THYST定值寄存器、TOS定值寄存器。装备寄存器是8位可读/写寄存器,可将ADT75设为各种方式,如关断、超温中止、单步、SMBus报警使能、OS/ALERT引脚极性等;16位温度数据寄存器是只读寄存器,温度值在其间以二进制补码方式存储,读取时先读取高8位,再读取低8位;THYST定值寄存器与TOS定值寄存器均为16位可读/写寄存器,16位数据均以二进制补码方式存储,它们的默许极限温度分别为+75℃、+80℃(TOS存放了超温限制值,THYST存放了滞后温度限制值,当丈量温度≥TOS设定的温度值时,OS引脚输出有用电平,直到温度降至THYST以下时,OS引脚输出电平才变为无效电平)。地址寄存器是一个8位的寄存器,在读/写ADT75内部各寄存器时,需将该寄存器的地址写入地址寄存器中。例如,若要读取ADT75的温度数据值,则需将温度数据寄存器的地址0x00写入地址寄存器中。

  LPC2148具有两路规范I2C接口:P0.2与P0.3构成榜首路I2C接口,与其他I2C器材通讯时,需接上拉电阻;另一路I2C接口因为内部已装备上拉电阻,因而可不外接上拉电阻。

  1.3 32位微操控器LPC2148

  LPC2148是Philips公司推出的一款支撑实时仿真的32位/16位的具有ARM7TDMIS内核的微操控器,含有40KB片内RAM和512 KB片内Flash存储器,支撑ISP与IAP操作[3]。它接口资源丰厚,含有2路32位守时器,1个USB 2.0全速设备操控器,2个支撑16C550的串行UART接口,2路支撑高速总线的I2C接口,1路SPI接口及片上RTC实时时钟等。LPC2148内含PLL锁相环部件,可将主频提高到60MHz下运转。LPC2148支撑Thumb指令,在代码规划遭到束缚的场合,可在Thumb状况下运转。LPC2148选用超小LQFP64封装,作业电压为3.3V,适用于工业操控、医疗体系、拜访操控、 通讯网关、嵌入式软modem等场合。

  本记载器首要运用了它的SPI总线接口、I2C接口、RTC实时时钟及丰厚的RAM资源等功用单元。LPC2148的RTC实时时钟的时钟源可由独立的32.768kHz晶振供给,而且RTC部件还有专门的电源引脚VBAT,它可由外部电池供电。本收集器选用了32.768kHz外部晶振并运用电池供电,使得在收集器掉电后,RTC实时时钟能够继续运转。

  2 SD卡FAT16文件体系剖析

  FAT(File Allocation Table,文件分配表)文件办理体系[4]是由微软发布的由MSDOS支撑的一种文件办理体系。在FAT开展进程中,先后发布了FAT12、FAT16、FAT32三个版别。其间FAT16是指磁盘的一个分区最多含有2的16次方个簇,因为每个簇的最大存储空间只要32KB,因而磁盘的一个分区的存储容量最大为2 GB。因为一般SD卡的容量巨细不超越2 GB,所以SD卡一般只作为一个分区。

  SD卡支撑FAT12与FAT16文件体系[5]。表1描绘了本文中512 MB SD卡的文件体系结构。

表1 512 MB SD卡文件体系结构

  SD卡中的保存扇区,一般不应向该扇区写入数据。若写入不正确的数据,则会损坏SD卡的文件体系结构,导致SD卡在PC机上无法辨认。

  在FAT文件体系中,BPB(Bios Parameter Block,本分区参数记载表)是一个很重要的参数表。它标明晰该分区的一系列重要基本参数,例如总扇区数、每个簇的空间巨细、FAT表占用的扇区数等。在SD卡中,保存扇区的榜首个扇区(即分区记载扇区)的第12~36字节即为BPB。表2给出了BPB各字段的内容及阐明。

表2 512 MB SD卡BPB各字段内容

  因为FAT文件体系选用链式存储原理,因而FAT表格中记载了每个文件的开端簇号、后继簇号、停止簇号。本文中,用FAT[i]标明在FAT表中簇号为i的字段的内容,且每个FAT[i]占用2个字节。在FAT16文件体系中,因为FAT[0]与FAT[1]默许值为0xFFFF,因而FAT表从FAT[2]开端存储文件的开端簇号与停止簇号,所以文件的开端簇号为0x0002。在FAT表中,用0x0000标明该簇号对应的存储空间没有被文件占用,用0x0002~0xFFFE的值标明开端簇号与存储后继内容的下一个簇的簇号,若一个文件在簇号为i的存储空间停止,则应在FAT[i]中写入0xFFFF。在第2个FAT表格之后是DIR区,每个FAT16文件都对应一个目录,每个目录的巨细为32字节。因为DIR占用了32个扇区,所以在DIR中一共可有512个挂号项,这也可经过读取BPB表中的字段BPB_RootEntCnt得到。

  如在SD卡上新建FAT文件,应首先在FAT表中查找尚未被运用的簇号,确认文件的开端簇号,并依据文件的巨细,确认文件在FAT表格中的停止簇号,在相应的FAT[i]中写入开端与停止簇号。之后应在DIR区请求一个挂号项,实践上便是在DIR区中树立一个32字节的文件目录。最终在数据区对应该文件的扇区上写入文件数据。

  3 软件规划

  3.1 SD卡与LPC2148的底层软件接口规划

  SD卡在上电复位后,主动进入SD方式,因而本规划中SD卡与LPC2148的底层软件接口规划首要是指怎么使得SD卡进入SPI方式,并在SPI方式下对SD卡的内存单元完结读/写操作。

图2 SD卡初始化流程

  图2描绘了SD卡在上电复位后的初始化流程。在SD卡上电复位后,SD卡操控器在向SD卡发送任何指令之前,应向SD卡发送至少74个时钟周期,以等候SD卡完结上电复位进程,而且此刻操控器应将片选信号线置高。在上电复位完结后,将片选信号线CS置低,即选中SD卡,且发送软件复位指令(CMD0),SD卡即可进入SPI方式,而且处于闲暇状况。之后若要对SD卡完结读写操作,主机端LPC2148应继续发送激活指令(CMD1),直到收到SD卡正确的呼应数据0x00,标明SD卡现已退出闲暇状况,能够对SD卡寄存器进行读/写以及完结数据的传输操作。

  在完结上述操作后,应设置一次性写入或许读取SD卡的数据的长度,这可经过发送设置块长度指令(CMD16)来完结。本规划中设定一次读/写的数据块长度为512字节。当要读取、写入SD卡某一数据块的内容时,可经过发送读取数据指令(CMD17)、写数据块指令(CMD24)来完结。

 3.2 读取温度值

  当LPC2148要读取ADT75各寄存器的内容时,都需求经过先写入再读取的过程。在写ADT75时,需由地址指针寄存器指出将读取的寄存器地址。图3描绘了读取ADT75温度数据的时序。

图3 读取ADT75温度数据的时序

  因为温度数据寄存器的地址值为0x0,因而写入地址寄存器的内容为0。在ADT75给出应对信号后,LPC2148给出读信号,即在第9个时钟周期将数据线SDA置为高电平,标明是读取数据。之后LPC2148读取温度数据的高8位,再读取数据的低8位,且LPC2148应在每个字节数据读取完毕后,给出低电平的应对信号。当温度数据完结后,LPC2148传送完毕时序,完毕数据读操作。在12位温度数据格式下,读取的16位温度数据低4位为0,将其取补码后,再除上16(浮点除法),便是实测的温度。

  3.3 软件主流程

  在本温度记载器的规划中,运用LPC2148片上RTC实时时钟供给的秒中止、分中止、天中止功用完结ADT75温度数据的守时收集、存储和文件的树立。

  当RTC的秒中止时,LPC2148经过I2C总线在400kHz的速率下读取ADT75的温度数据,并将温度数据存于LPC2148内部RAM中。为了便于用户运用读卡器在PC机上读取存入的温度数据,每秒钟存入RAM中的数据为22字节,且均为ASCII字符,数据格式如表3所列。

表3 存储数据格式

  其间前4个字节为温度的实时收集时刻,存储的时刻内容为时、分、秒。第1个温度数据选用十六进制表明;第2个8字节的温度数据为转化后的实践温度值,每条记载均以回车(ASCII码为0x0D)、换行(ASCII码为0x0A)完毕。例如,在12时0分59秒收集的温度数据为0x1910,则存入RAM中的数据为“1200591910+025.625”。

  当RTC的分中止时,LPC2148将暂时存于RAM中的数据存入SD卡中。这样可削减对SD卡的写操作次数,延伸SD卡的运用寿命。

  当RTC的天中止时,LPC2148将在SD卡上新建一个新的记事本文件(.txt文件),文件名即为当天的日期,例如2007年10月6日树立的文件名为“071006.txt”。因为每分钟写入SD卡的数据为22×60=1320字节,因而每个文件的最大容量是1 856 KB。关于一张512 MB的SD卡,可保存约1年的温度数据。

  图4描绘了本规划的软件主流程。在完结温度数据的收集与存储之前,需正确装备LPC2148的SPI总线操控寄存器、I2C操控寄存器及RTC实时时钟寄存器。

图4 软件主流程

  结语

  ADT75是一款完善的数字温度传感器,具有I2C总线接口;LPC2148功用强大,外设接口资源丰厚。将LPC2148与ADT75经过I2C总线相结合,即可完结散布式多点温度收集。SD卡FAT16文件体系的完结便利了用户读取与剖析收集的温度数据。本文为嵌入式体系数据的存储、温度数据的散布收集与记载供给了一个切实可行的解决计划。

  参考文献

  [1] 2000 SD Group.SD Memory Card Specifications Physical Layer Specification.Part 1. Version 1.0,March 2000.

  [2] Analog Devices. ±1°C Accurate, 12Bit Digital,Temperature Sensor.Rev.0.2005.

  [3] 周建功, 张华. 浅显易懂ARM7——LPC213x/LPC214x(下册)[M]. 北京:北京航空航天大学出版社,2006.

  [4] Microsoft Corporation. FAT: General Overview of OnDisk Format. Version 1.02. May 5, 1999.

  [5] 2000 SD Group. SD Memory Card Specifications Physical Layer Specification. Part 2. Version 1.0. Februay 2000.

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/zhizao/198970.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部