1 概述
行驶记录仪的主要数据包括事故疑点和行驶状态数据。其中,事故疑点数据是记录仪以不大于0.2s的时间间隔持续记录并存储停车前20 s实时时间所对应的车辆行驶速度及车辆制动状态信号,记录次数至少为1o次:行驶状态数据是无论车辆在行驶状态还是停止状态,记录仪提供的与实时时间对应的车辆行驶速度信息。记录仪应能以不大于1 min的时间间隔持续记录并存储车辆在最近360 h内的行驶状态数据,该行驶状态数据主要是车辆在行驶过程中与实时时间相对应的每分钟间隔内的平均行驶速度值[1]。
该记录仪需要采用大容量的数据存储器。以往的设计均采用并行存储器或铁电存储器。其中并行存储器存储容量大,读写速度快。但是抗干扰能力差,而汽车上的干扰较强.虽然可以通过其它软、硬件措施来避免。但是在设计时一般都需要选择抗干扰能力强的芯片;铁电存储器采用串行接口,抗干扰能力强,也具有很高的灵活性,可以单字节读写(不需要擦除,可直接改写数据),但其存储密度小,单位成本高,读写速度较慢,由于行驶记录仪要求每0.2 s采样一次速度和状态,因此读写存储器的速度会影响采样的精度和程序的运行。
现在的eeprom闪速存储阵列flash memory有atmel、sst的小扇区结构闪速存储器(small sector flash memory)和atmel的海量存储器(data-flash memory)。这类器件具有eeprom与nor技术flash memory的综合优势,主要表现为:
(1)读写灵活性比eeprom差,不能直接改写数据。在编程之前需先进行页擦除,与nor技术flash memory的块结构相比,其页尺寸小,因而具有快速随机读取和快编程、快擦除的特点:
(2)与eeprom相比,这种存储器具有明显的成本优势;
(3)存储密度比eeprom大,但比nor技术flash memory小[2]。
因此,该dataflash存储容量大,读写速度快,抗干扰能力强,在行驶记录仪中作存储器是较好的选择。本文给出了采用atmel的at45db161b来存储数据的记录仪设计方案。
2 at45db161b串行存储器
atmel公司的data-flash产品的代表型号为at45dbxxxx。此系列存储器容量较大(从1~256mb);封装尺寸小,最小封装型式(cbga)的尺寸为6 mm×8 mm:可采用spi接口进行读写;硬件连线少;内部页面尺寸较小,8 mb容量的页面尺寸为264字节,16 mb和32 mb容量的页面尺寸为512字节,64 mb容量的页面尺寸为1056字节,128 mb容量和256 mb容量的页面尺寸为2112字节。另外,at45dbxxxx系列存储器内部有两个与主存页面大小相同的sram缓存,可提高系统的灵活性,简化数据的读写过程。at45dbxxxx系列存储器的工作电压只需2.7~3.6 v;整个芯片的功耗也较小;典型读取电流为4 ma,待机电流仅为2 μa:读写的速度最大为20 mbps。
at45db161b的容量为16 mb。分成4096页,每页有528个字节[3]。另外还有两个528字节的数据缓冲器sram。在对主存储器进行操作时,这两个sram也可以接收数据。因此,和串行eep-rom相比。该器件可大大缩短读写时间。而采用spi总线接口和并行的flash相比.其速度并不慢,而且抗干扰能力也比较强。
2.1 at45db161b引脚接口定义
表1所列是at45db161b的部分接口引脚定义。其中cs为片选信号,reset为复位端,sck、si、so为spi总线,rdy/busy为忙信号,wp为前256页的写保护。
spi接口是一种通用串行接口总线,利用sck、si和so三根线可进行数据的读/写控制。数据以字节(8 bit)为单位。其中,sck为时钟信号,si和so为数据输人和输出线。
at45db161b仅支持spi模式0和3。在这两种模式下。sck信号的上升沿触发数据输入,下降沿触发数据输出,二者的区别是sck的起始电平不同。at45db161b复位时,默认为spi模式3。
2.2 指令
除了存储单元外,at45db161b内部还包括命令用户接口cui(command user interface)和状态机。cui接收用户的软件指令,以将其翻译成状态机内部操作码并进行命令的有效性检验。状态机则可控制存储器所有的内部操作。器件内部包含一个8位的状态寄存器,可用来指示设备的操作状态。向存储器输入读状态寄存器命令可将状态寄存器的数据读出。下面简单介绍模式spi0和模式spi3的读写存储单元和状态寄存器指令。
(1)读状态寄存器
发送命令字0xd7。可以直接得到状态字(一个字节),其格式如下:
其中rdy/busy为1时表示不忙,可以接收下一条指令;为0则表示忙。
设计时可通过读状态寄存器或so端口来判断前一条指令是否读写完毕。当存储器不忙时,so端口从