采用W77E58和AT45DB161B实现行驶记录仪的设计

1 概述
行驶记录仪的主要数据包括事故疑点和行驶状态数据。其中,事故疑点数据是记录仪以不大于0.2s的时间间隔持续记录并存储停车前20 s实时时间所对应的车辆行驶速度及车辆制动状态信号,记录次数至少为1o次:行驶状态数据是无论车辆在行驶状态还是停止状态,记录仪提供的与实时时间对应的车辆行驶速度信息。记录仪应能以不大于1 min的时间间隔持续记录并存储车辆在最近360 h内的行驶状态数据,该行驶状态数据主要是车辆在行驶过程中与实时时间相对应的每分钟间隔内的平均行驶速度值。
该记录仪需要采用大容量的数据存储器。以往的设计均采用并行存储器或铁电存储器。其中并行存储器存储容量大,读写速度快。但是抗干扰能力差,而汽车上的干扰较强.虽然可以通过其它软、硬件措施来避免。但是在设计时一般都需要选择抗干扰能力强的芯片;铁电存储器采用串行接口,抗干扰能力强,也具有很高的灵活性,可以单字节读写(不需要擦除,可直接改写数据),但其存储密度小,单位成本高,读写速度较慢,由于行驶记录仪要求每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小。
因此,该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个字节。另外还有两个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端口从o变到1。此外,rdy/busy端口也可以用来判断前一条指令是否读写完毕。
comp用来指示主存储单元数据和缓冲器中数据的比较结果:comp为0表示相等。comp为1表示不同。
bit5一bit2可表示存储器的容量大小。
(2)读存储器指令
读存储器的数据有两种方式,具体如图1所示。其中一种是直接读存储器任意地址的数据,这可用指令d2h加3个字节的dataflash地址再加上四个字节的空数据来实现,以spi模式3为例,其工作时序如图2所示。
另一种是通过缓冲器1(2)来读存储器上某一页的数据。该方式可分两个步骤:一是将数据读到数据缓冲器1(2),即指令53h(55h)+3个字节的dataflash中的页地址(在任意sck的模式下);二是读数据缓冲器1(2),这可用指令d4h(d6h)+3个字节地址(主要表示从数据缓冲器的哪个地址开始读)+1个字节空数据来实现。以spi模式3为例的读数据缓冲器时序如图3所示。
(3)向存储器写数据
写存储器也有两种模式,具体如图4所示。其中一种是通过缓冲器1(2)直接写到存储器中;另一种是先写到缓冲器,再将缓冲器的数据写到存储器中。具体的命令过程如图5所示。
上述几个命令的格式都是一个字节的命令+3个字节的地址。
3 w77e58和at45db161b的接口电路
w77e58是华邦电子公司(winbond)推出的高速增强型:mcs-51系列单片机。使用w77e58的系统速度要比传统51系列单片机快2.5倍。工作频率为40 mhz的w77e58相当于100 mhz的8051,加上其内置32 kb可重复编程的flash eprom和1kb用mov指令访问的内部sram(节省了16条数据/地址i/o口线),以及2个增强型全双工串行口和较低的价格,w77e58无疑是一款高性能、多功能、的高集成度8位微控制器,非常适合高速、双串口、外围简捷、低成本系统。其抗干扰性能和加密性能相对也是比较好的。
采用w77e58和at45db161b进行接口的汽车行驶记录仪的电路连接如图6所示。
4 软件实现
由于w77e58没有spi总线,因而需要用软件来实现,下面给出spi总线模拟程序和对at45db161b的读写程序。
该软件采用keil c编程,其源程序代码如下:
4.1 spi总线的模拟
(1)从spi上读一个字节
4.2 对at45db161b的读写
(2)写datanash中的数据
下面的程序采用先写到缓冲器,再将缓冲器的数据写到存储器中的方式存储数据:


智能手机变存量竞争血海市场,5G将为国产手机分水岭
SP6168构成的1GHz前置分频器
WebGL城市地下管网三维可视化监控平台
小米CC系列三款新品在北京发布
NVIDIA发布高性能感知技术的最新项目
采用W77E58和AT45DB161B实现行驶记录仪的设计
中国联通首款5G手机代号U-MAGIC 手机新品发布会将于1月25日举行
UCIe如何推动Multi-Die系统一路“狂飙”?
三星公布第2/3代10nm制程量产时间 呛声台积电
未来手机摄像头将会向着更优化的拍照模式而发展
电子式时间继电器销售市场竞争关键点是什么
股民炸锅 宁德时代用230亿买理财 这笔资金从哪里来的?
离心泵的密封方式_离心泵的主要参数
元宇宙是个慢风口,想做一家慢下来反而更快更好的公司
人工智能的机器学习到底是什么
多种热管理材料组合使用,解决LED驱动电源散热问题
什么是MEMS陀螺仪?
STM32入门编程总结(时钟+GPIO)
物联网HMI与防火墙的安全协作
智能家居团体标准及NB-IoT智能物联解决方案解读