单片机是如何对AT24C512中的数据进行系统化管理的?

控制/MCU

1879人已加入

描述

ATMEL在系统级集成方面所拥有的世界级专业知识和丰富的经验使其产品可以在现有模块的基础上进行开发,保证最小的开发延期和风险。凭借业界最广泛的知识产权(IP)组合,Atmel提供电子系统完整的系统解决方案的厂商。 这使客户能够带领他们与市场的电子产品的体积更小,更聪明,更符合成本效益比以往任何时候都通用的服务。 Atmel集成电路的主要集中在消费,工业,安全,通信,计算和汽车市场。

ATMEL公司是世界上高级半导体产品设计、制造和行销的领先者,产品包括了微处理器、可编程逻辑器件、非易失性存储器、安全芯片、混合信号及RF射频集成电路。通过这些核心技术的组合,ATMEL生产出了各种通用目的及特定应用的系统级芯片,以满足当今电子系统设计工程师不断增长和演进的需求。ATMEL在系统级集成方面所拥有的世界级专业知识和丰富的经验使其产品可以在现有模块的基础上进行开发,保证最小的开发延期和风险。

在由单片机构成的数据采集系统及智能仪器仪表当中,往往有大量数据要保存。随着测控系统数字化的发展,人们对数据存储提出了更高的要求,因而用于存储数据的存储器容量也越来越大。但是,在增大数据存储量的同时,人们也希望能更便捷高效地操作其中的数据(包括浏览、添加和删除等),即像PC机上管理数据一样简单易行。然而,单片机以及用于保存数据的芯片本身并没有提供这种功能,为此,需要开发一种用于管理单片机数据的有效方法。本文在吸取PC机文件管理思想的基础上,以AT24C512为例,构造了一种类似于文件系统的用于管理单片机数据的方法,大大提高了数据操作的效率。

1 AT24C512介绍

AT24C512是Atmel公司生产的64KB串行电可擦的可编程存储器,内部有512页,每一页为128字节,任一单元的地址为16位,地址范围为0000~0FFFFH。它采用8引脚封装,具有结构紧凑、存储容量大等特点,可以在2线总线上并接4片芯片,特别适用于具有大容量数据存储要求的数据采集系统,因此在测控系统中被大量采用。

AT24C512的封装如图1所示,各引脚的功能如下:

①A0、A1——地址选择输入端。在串行总线结构中,如需连接4个AT24C512芯片,则可用A0、A1来区分各芯片。A0、A1悬空时为0。

②SDA——双向串行数据输入输出口。用于存储器与单片机之间的数据交换。

③SCL——串行时钟输入。通常在其上升沿将SDA上的数据写入存储器,而在下降沿从存储器读出数据并送往SDA。

④WP——写保护输入。此引脚与地相连时,允许写操作;与VCC相连时,所有的写存储器操作被禁止。如果不连,该脚将在芯片内部下拉到地。

⑤VCC——电源。

GND接地。NC悬空。

AT24C512

GND

(1)与单片机接口

接口技术:接口技术可极大地提高硬盘的最大外部数据传输率,现在普遍使用的ULTRAATA/66已大幅提高了E-IDE接口的性能,所谓UltraDMA66是指一种由Intel及Quantum公司设计的同步DMA协议。使用该技术的硬盘并配合相应的芯片组,最大传输速度可以由16MB/s提高到66MS/s。它的最大优点在于把CPU从大量的数据传输中解放出来了,可以把数据从HDD直接传输到主存而不占用更多的CPU资源,从而在一定程度上提高了整个系统的性能。由于采用ULTRAATA技术的硬盘整体性能比普通硬盘可提高20%~60%,所以已成为目前E-IDE硬盘事实上的标准。

由于AT24C512沿袭了AT24C系列的接口特性,因此与单片机的连接也可沿袭传统方法。一般A0、A1、WP接VCC或GND,SCL、SDA接地单片机的P1口,即可实现单片机对AT24C512的操作。

接口有存储器接口和 I/O接口。习惯上常指I/O接口。

I/O接口的功能是负责实现CPU通过系统总线把I/O电路和 外围设备联系在一起。具体是设置数据的寄存、缓冲逻辑,以适应CPU与外设之间的速度差异,接口通常由一些寄存器或RAM芯片组成,如果芯片足够大还可以实现批量数据的传输;   能够进行信息格式的转换,例如串行和并行的转换;

能够协调CPU和外设两者在信息的类型和电平的差异,如电平转换驱动器、数/模或模/数转换器等;

协调时序差异;

地址译码和设备选择功能;

设置中断和DMA控制逻辑,以保证在中断和DMA允许的情况下产生中断和DMA请求信号,并在接受到中断和DMA应答之后完成中断处理和DMA传输。

按照电路和设备的复杂程度,I/O接口的硬件主要分为两大类: (1)I/O接口芯片 (2)I/O接口控制卡   CPU通过接口对外设进行控制的方式有以下几种: (1)程序查询方式 (2)中断处理方式 3)DMA(直接存储器存取)传送方式

(2)设备选址

在对AT24C512开始操作前,需要先发一个8位的地址字来选择芯片以进行读写。设备地址字格式如图2所示。其中“10100”为固定的5位二进制;A0、A1用于对多个AT24C512加以区分;R/W为读写操作位,为1时表示读操作,为0时表示写操作。

(3)写操作

AT24C512的写操作有写字节和写页两种方式。写字节时通常在向AT24C512发送设备地址字并接到应答信号后,还需要发送2个8位地址来选择要写数据的地址。AT24C512接收到这个地址后会应答一个零信号,然后接收8位数据进来,并再返回一个零应答信号。

(4)读操作

读操作有当前地址读、随机读、读串三种方式。其初始化过程基本与写操作相同,只是在设备选择字中的最低位要改成读而已。在当前地址读操作方式时,内部数据的地址将保持在最后的读写操作地址加1上,读串操作既可以是当前地址读,也可以是随机地址读。当单片机接收到数据但不送应答信号时,读过程结束。

2 文件系统构成

为了有效地管理AT24C512中的数据,笔者仿效PC机中的文件管理机制,为AT24C512构造了一个简单的文件系统。考虑到测控系统的实时性要求和硬件资源的有限性,采用了二级树形目录组织。

(1) 数据区

AT24C512最后面的960页作为数据区,其序号从0开始编号。该区作为文件数据的存储区域,在存放文件数据时,从该区内分配若干页,每次存储一页。

(2)页面分配区

页面分配区记录了数据区每一页的分配情况。该区中每2字节组成一个记录项,共有960个记录项(30×64/2)。记录项从0开始编号,每一个记录项对应着数据区相应页的使用情况。

AT24C512

另外,如果记录项的内容为0EEEEH,表示其对应的数据页未分配。

(3)目录区

目录区用来存储文件的主要信息。根据这些信息可以知道文件名、文件生成的日期以及文件的数据在数据区中的存储首地址。文件目录项的结构如下:

①文件名。文件名由4字节双BCD码构成,在生成该文件时由键盘输入数字(硬件上键盘只提供了数字键)作为文件名,并由程序自动把它们转换成双BCD码。在需要显示时,再把它们分解成8字节单BCD码供显示。

②文件生成日期。占用4字节,按照双BCD码的格式存储,如20H、04H,03H、20H则表示2004年3月20日。日期可由键盘输入或通过时钟芯片获取。

③文件首地址。指示在给该文件分配空间进,分配给它的第一个数据页的序号,即它对应的链表的第一个记录项的编号。

目录区共占用24页。由于每个文件信息只占用10字节,则在此文件系统中,最多可存储153(24×64/10)个文件。目录区、页面分配区和数据区的逻辑关系如图3所示。

以图3为例,说明该文件系统如何获取文件数据:

①在目录区中根据文件名找到包含该文件名的目录项,从而获取该文件的属性及其首地址。如文件“00000103”的日期为2003年11月24日,其首地址为0005H。

②根据文件的首地址,在页面分配区中找到该记录项0005H。在该记录项中存储的值为0007H,可知该文件的下一记录项为0007H。

③同理,可得到文件的后续记录项为0008H、0009H、000BH,直到从000BH记录项中读到0FFFFH。此时表示这是最后一项,不需再继续找后继项了。

④至此,可知文件“00000103”的数据分为5部分存储在数据区中,分别存储在0005H、0007H、0008H、0009H、000BH页中。只要按序到数据中读取这些中的数据,并连接起来,就形成了该文件的全部数据。

⑤同理,文件“00000001”在数据区中使用了0002H和0003H两页,文件“00015671”只使用了数据区第000AH页。

3 系统程序设计

按照上述的文件系统结构,系统可通过目录区和页面分配区对AT24C512的全部数据实时文件化管理。在管理过程中,最主要的操作是添加文件和删除文件。

(1)添加文件

添加文件的主要工作是为新文件寻找存储空间,其寻找步骤如下:

①在目录区中寻找空位置。若目录区已经存满(最多存153个文件),则向用户报告并中止程序;否则,记录该位置(记为MyFile)。

②计算文件数据需占用的页面数,记为My Page。

③在页面分配区中寻找并统计标志为空的记录项,其内容为0EEEEH。若其数目小于MyPage,则向用户报告,并中止程序。

④在MyFileA位置填写文件名和日期,并把找到的第一个空记录项的序号填入,作为该文件的首地址。

⑤依次在找到的空记录项内填入下一空记录项的序号,最后一个空记录项填入0FFFFH。

⑥从文件首地址开始,按照文件链表依次把数据写入数据区相应的页。

(2)删除文件

删除文件的主要工作是回收该文件所占用的空间,以便将来分配给其它文件。

①在目录区中寻找到该文件,提取出其首地址,记录First。随后,把该文件所占用的目录区的首字节清为0FFH,表示该目录项空闲。

②在页面分配区中找到First记录项,撮出其内容,记为Next。随后,把First记录项的内容改写为0EEEEH。

由添加文件可以看出,在搜索空间时,只对目录区和页面分配区操作,因此,删除文件时,只需要释放目录和页面分配区即可,而不需要修改数据区。这大大提高了删除的效率。

AT24C512

(3)系统格式化

系统格式化的目的是把AT24C512按照前面所述的格式进行初始化,以正确反映目前的使用状况。格式化的主要工作包括:

①把目录区全部写为0FFH,以清空目录区中所有数据;

②把页面分配区的所有记录项写为0EEEEH,标志它们全部未使用。

4 性能比较

在大多数系统中,AT24C512中的数据存储都是要用顺序存储法:每次存储数据时都是按照先后顺序依次写入数据空间。本文所述方法与顺序存储法相比,具有下列优点:

①存储时操作简单。在顺序存储中,寻找空闲空间需要逐次读出已经存储的数据,直到找到空闲空间为止,数据操作量大。本文所述方法只需要读取目录区和页面分配区即可,搜索空闲空间的效率高。

②删除数据简单。在顺序存储中,为了定位到需要删除的数据,必须逐次读出存储的数据,直到找到需要删除物数据,再把该空闲改写为未用状态。本文所述方法只需要修改目录区和页面分配区即可,不仅定位数据快,而且修改的工作量很小。

③实现了数据空间的回收。顺序存储法中,在删除的某次数据后,该数据所占用的空间可能无法回收使用。因为回收的空间会形成碎片:该空间前后都存储有数据,回收的空间可以自由使用。

④通过读取目录区,用户可以大致知道该文件中存储的是什么数据,而顺序存储法却无法提供这些信息。

5 结论

为了实现实时测控系统数据的高效管理,按照PC机文件系统的思想,对测控系统中的AT24C512设计了一个简单的文件系统,包括系统格式化、添加文件、删除文件等功能,在大数据量的测控系统中得到了成功应用。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分