存储技术
如今随着信息产业的飞速发展,以微处理器为核心的嵌入式系统正在智能化仪表、实时控制系统等方面发挥着巨大的作用。在许多实际应用中经常面临的问题是需要支持大容量的数据存储功能。
但是采用常规扩展外部数据存储器的方法,需要大量的地址总线和数据总线引脚,因而在访问外部数据存储器时,其容量受到微处理器地址总线和数据总线数量的极大限制。由于单片机的引脚数都相对较少,没有足够多的引脚用作外部数据存储器的地址总线,为了解决这一矛盾,本文以MSP430F12X2[1]单片机和AT45DB081[2]芯片为例,介绍了一种利用串行外设接口(SPI)扩展大容量数据存储器的方法。并给出初始化以及数据读写操作子程序
MSP43 F12X20是一款超低功耗的混合信号控制器,具有16位RISC结构,有着丰富的片内外设,主要包括有看门狗、定时器、比较器、硬件乘法器、液晶驱动器、ADC、I/O端口、串口(USART)等,还集成有64 kB的FLASHROM和2 kB的RAM。其功能强大,应用场合广泛。特别适合应用于智能仪表、智能化家用电器、电池供电的便携式设备等产品中。相对于其他单片机MSP430 F12X2还具有以下特点:
(1)MSP430F12X2内部预设了JTAG模块,他使得每一个单片机芯片都具有完整的在线调试功能,而不必使用较复杂的仿真调试工具;
(2)MSP430F12X2中的FLASH在线编程技术可以完成除了采用外部编程器进行烧写外,用户可以利用自己的程序修改FLASH内容,且不需要外加编程电压;
(3)MSP430F12X2中的BOOTSTRAP技术使芯片具有片内的BOOT ROM,可以实现程序代码的下载和上载。
AT45DB081是Atreel公司推出的工作电压为2.7~3.6 v,可在系统可重复擦写并兼容SPI的FLASH数据存储器。内部有4 096页、每页264个字节,共计8 MB的主存储器容量以及2个264字节的SRAM数据缓存器。支持在系统重复编程,不需要较高的编程电压,只需要芯片的工作电压2.7~3.6 V就可以完成对FLASH的读写操作。AT45DB081通过一个三线接口(包含串行输入SI、串行输出SO、串行时钟SCK)在片选信号的配合下进行访问。这种串行接口FLAS[{存储器十分适用于要求存储量大而引脚资源较少、电源电压低和低功耗的应用领域。
MSP430F12X2与AT45DB081的硬件连接原理图如图1所示。
图1中将MSP430F12X2的P3.1,P3.2和P3.3引脚配置为SPI的MOSI(主出从人)、MISO(主出从入)CLK(串行时钟)和信号线,分别与AT、45DB081的串行输入、串行输出和时钟引脚相连。将P2.0,P2.1,P2.2与AT45DB081的芯片片选、复位和忙闲状态引脚相连。由于RDY/BUSY为漏极开路,因而需加上拉电阻输出[2]。
对AT45DB021B的操作是由主机发出的指令控制,一个有效的指令在 的下降沿开始,包括一个8位的操作码和要进行操作的页地址和缓冲区地址的位置。表1列出了AT45DB021B的主要的操作方式和对应的操作码。
(1) 状态存储器
他是AT45DB021B内的一个8位的只读存储器,用于指示其工作状况,如表2所示,BIT7用于显示AT45DB021B的状态,BIT7位=1时,说明AT45DB021B不忙,可以对其进行指令操作,BIT7位=0时,指示AT45DB021B忙,可以通过检测BIT7位实时了解AT45DB021B的状态。BIT6 COMP用于显示主存储器页面与缓存器进行数据比较的结果,当比较结果匹配COMP=0,否则COMP=1。
(2) 通过缓冲存储器对主存储器写操作
命令码为:操作码5位保留码10位页地址码9位页内起始地址码,其中操作码为82H时,数据通过缓冲存储器1向主存储器写,为85H时,数据通过缓冲存储器2向主存储器写操作。
(3) 主存储器页读
主存储器页读指令可以对1024页中的任意页进行读操作,命令码为:8位操作码,5位保留码,10位页地址码,9位页内起始地址码,32位无关码;操作码为52H或D2H,5位保留码用于对片子的上下兼容,10位页地址码用于确定对主存储器的哪一页进行操作,9位页内起始地址码来确定页内操作的起始地址,后32为无关码用来配合时序。当 为0时,主机向器件的SCK引脚发送时钟信号,引导操作码和地址从SI引脚写入器件,当最后一位写入后的下一个时钟周期,页内数据将从SO引脚输出。
MSP430F12X2单片机对AT45DB081进行初始化以及数据读写操作的软件流程图如图2所示。图2中系统初始化包括系统时钟初始化、将P3.1,P3.2和P3.3引脚配置为SPI接口,设置SPI特殊状态寄存器和复位数据存储器。
单片机通过P2.2读取AT45DB081的忙闲状态引脚来判断存储器是否空闲,若P2.2为“1”表示存储器空闲,否则表示存储器忙。当存储器空闲时通过P2.0引脚输出“0”作为存储器的片选信号。选中存储器后可以参照表1,通过SPI发送命令字完成对AT45DB081的相应读写操作。对AT45DB081进行初始化以及数据读写操作的子程序[3]如下。
本文的创新意义在于在占用:MSP430F12X2单片机引脚数极少的情况下实现了大容量外部存储器的扩展方法,使得单片机在扩展外部数据存储器中改并行访问为串行访问,不再需要大量的地址和数据总线引脚。这种方法同样可推广到其他带有SPI接口的微处理器。在数据采集,智能仪表中都具有很强的实用意义。
全部0条评论
快来发表一下你的评论吧 !