中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 存储设计 >>电子行业新闻正文

串行DataFlash存储器及其与单片机的接口

时间:2007/3/27 9:46:00  作者:  来源:ic72  浏览人数:1327
 
 

      摘要:DataFlash是Atmel公司新推出的大容量串行Flash存储器产品,具有体积小、容量大、功耗低和硬件接口简单的特点,非常易于构成微型测量系统。本文重点介绍此类存储器与单片机的接口,并给出实际的电路设计和软件代码示例。

      关键词:串行Flash存储器 接口 AT45DB161B

      1 概述

      Flash存储器按其接口可分为串行和并行两大类。串行Flash存储器大多采用I2C接口或SPI接口进行读写;与并行Flash存储器相比,所需引脚少、体积小、易于扩展、与单片机或控制器连接简单、工作可靠,所以串行Flash存储器越来越多地用在各类电子产品和工业测控系统中。

      DataFlash是美国Atmel公司新推出的大容量串行Flash存储器产品,采用NOR技术制造,可用于存储数据或程序代码,其产品型号为AT45DBxxxx。此系列存储器容量较大,从1Mb~256Mb;封装尺寸小,最小封装型式(CBGA)尺寸为6mm×8mm;采用SPI接口进行读写,硬件连线少;内部页面尺寸较小,8Mb容量的页面尺寸为264字节,16Mb和32Mb容量的页面尺寸为512字节,64Mb容量的页面尺寸为1056字节,128Mb容量和256Mb容量的页面尺寸为2112字节。另外,AT45DBxxxx系列存储器内部集成了两个与主存页面相同大小的SRAM缓存,极大地提高了整个系统的灵活性,简化了数据的读写过程。此外,AT45DBxxxx系列存储器工作电压较低,只需2.7~3.6V;整个芯片的功耗也较小,典型的读取电流为4mA,待机电流仅为2μA。所有这些特点使得此系列存储器非常适合于构成微型、低功耗的测控系统。笔者就使用AT45DB161B存储器和PIC16LC73B单片机及微型压力传感器构成了用两片纽扣电池驱动的微型压力测量装置,其外形尺寸仅为φ10mm×20mm。

      2 芯片简介

      2.1 引脚排列和功能

      AT45DB161B为DataFlash系列中的中档产品,单片容量为16Mb。其引脚排列如图1所示,引脚功能如表1所列。

      表1 AT45DB161B引脚功能

引脚名称 功能描述
CS 片选
SCK 串行时钟
SI 串行输入
SO 串行输出
WP 页面写保护
RESET 复位
RDY/BUSY 准备好/忙
NC 未使用

      2.2 芯片内部逻辑结构

      AT45DB161B的内部逻辑结构分为三个部分:存储器页阵列(主存)、缓存与I/O接口。AT45DB161B的存储页面大小为528字节,整个存储器共分为4096页,片内集成了两个528字节的SRAM缓存。

      3 存储器读写接口

      3.1 SPI接口及操作模式

      AT45DB161B存储器采用SPI接口进行读写。SPI接口是一种通用串行接口总线,字长为8位,用来与外部设备(例如EEPROM、A/D转换器等)进行通信。SPI接口利用SCK、SI和SO三根线进行数据的读/写。其中,SCK为时钟信号,SI和SO为数据输入和输出线。AT45DB161B的SCK引脚的时钟信号必须由外部单片机或控制器输入,读/写命令字由SI引脚输入,数据由SO引脚输出。

      SPI接口共有四种操作模式,分别为0、1、2和3。SPI操作模式决定了设备接收和发送数据时的时钟相位和极性,即决定了时钟信号的上升和下降沿与数据流行方向之间的关系。

      DataFlash系列存储器仅支持使用得最为广泛的SPI模式0和3。在这两种模式下,SCK信号的上升沿触发数据输入,下降沿触发数据输出。二者的区别是SCK信号的起始电平不同。

      3.2 存储器命令接口与状态机

      除了基本存储单元外,DataFlash系列存储器内部还包括命令用户接口CUI(Command User Interface)和状态机。CUI接收用户软件的操作命令,将其翻译成状态机内部操作码并进行命令的有效性检验。状态机控制存储器所有的内部操作,包含一个8位的状态寄存器(status register),用来指示设备的操作状态。向存储器输入读状态寄存器命令可将状态寄存器的数据从最高位开始依次读出。状态寄存器各位的意义如表2所列。

      表2 状态寄存器各位定义

位7 位6 位5 位4 位3
准备好/忙 比较 容    量
位2 位1 位0  
将来使用

      3.3 存储器操作命令及其模式

      为了使存储器进行所需的操作,例如读、写、擦除等,必须从SI引脚输入相应的操作命令,然后从SO或SI引脚读取或写入数据。除读状态寄存器命令外,所有的命令格式为:1字节操作码+3字节地址码。操作码指示所需的操作,DataFlash系列节地址码用来寻址存储器页阵列或缓存。图4为AT45DB161B的读/写命令格式。

      4 存储器与单片机接口实例

      4.1 硬件电路

      DataFlash系列存储器几乎可以和任何类型的单片机接口,无论单片机是否有SPI接口。当然,如果单片机有SPI接口,那么存储器读/写程序就相对简单些;如果单片机没有SPI接口,则可以用软件仿真SPI接口与存储器通信。

      存储器采用AT45DB161B-TC,TSOD封装;单片机为美国Microchip公司的PIC16LC73B-04/SS,SSOP封装。单片机采用软件仿真SPI接口的方式与存储器通信,存储器工作于SPI模式0。

      4.2 AT45DB161B存储器读/写子程序

      DataFlash系列存储器可以按地址从低到高顺序读写,也可以随机读写任一字节的数据。对于顺序读数据,可以使用连续读主存页阵列命令(操作码68H或E8H)从给定的起始地址开始连续读出,中间不需用户干预,也可使用读单页主存命令(操作码52H或D2H),自行提供页地址读取数据。对于顺序写数据,可以使用通过缓存写主存页命令(操作码82H或85H),直接将数据写入主存;也可以先使用写缓存命令(操作码84H或87H),将数据写入缓存,在适当的时刻再使用缓存写主存页命令(操作码83H或86H),将缓存中的数据写入主存,如图6所示。使用何种方式读写取决于特定的应用场合与要求。

      下面的子程序为顺序读/写存储器的例子。子程序spiwt采用了通过缓存写主存页的方法,向存储器写入1字节数据。顺序读存储器子程序spicrd采用了边疆读主存页阵列命令。从给定地址处连续读出数据,用图5所示的PIC16LC73B单片机汇编语言编写,使用MPLAB5.4.00编译器编译通过并烧写入单片机,按图5所示系统实测通过。

      顺序写子程序,用spiwt名称调用

      spiwt bcf STATUS,RP0

      bcf PORTB,SCK ;模式0

      bcf PORTB,cs ;片选

      movlw 82H ;加载操作码

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出操作码

      movf PA1,w ;加载第一字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf BA1,w

      xorwf PA2,w ;获得第二字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf BA2,w ;加载第三字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf spi_wt,w ;加载待写数据

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      bsf PORTB,cs ;触发写入操作

      nop ;延时

      retlw 0 ;从子程序返回

      ;输出子程序,用spiout名称调用

      spiout movlw 0x08 ;加载输出位数

      movwf spi_cnt ;置入寄存器

      nspiout rlf spi_out ;先输出最高位

      btfsc STATUS,C ;是否为1

      bsf PORTB,SDO ;输出1

      btfss STATUS,C ;是否为0

      bcf PORTB,SDO ;输出0

      nop ;延时

      bsf PORTB,SCK ;时钟信号上升沿

      nop ;延时

      bcf PORTB,SCK ;时钟信号下降沿

      decfsz spi_cnt ;检查输出位数

      goto nspiout ;输出下一位

      retlw 0 ;从子程序返回

      ;顺序读子程序,用名称spicrd调用

      spicrd bcf STATUS,RP0

      bcf PORTB,cs ;片选

      bcf PORTB,SCK ;模式0

      movlw E8H ;加载操作码

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf PA1,w ;加载第一字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf BA1,w

      xorwf PA2,w ;获得第二字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf BA2,w ;加载第三字节地址

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf DCRE,w ;加载任意位字节

      movwf spi_out ;置入寄存器

      call spiout ;调用子程序输出

      movf DCRE,w ;共需4个任意位字节

      movwf spi_out

      call spiout

      movf DCRE,w

      movwf spi_out

      call spiout

      movf DCRE,w

      movwf spi_out

      call spiout

      retlw 0 ;从子程序返回

 
【相关文章】
·带RTC的I2C总线铁电存储器FM31256
·基于C8051F320USB接口的数据采集存储电路的设计
·基于PS501的智能电池系统
·传富士康拟收购商丞品安涉足内存业
·基于EP9315的附网络存储NAS系统设计
·串行DataFlash存储器及其与单片机的接口
·嵌入式系统中的Flash存储管理
·铁电存储器在仪表中的应用
·Flash存储器在TMS320C3x系统中的应用
·针对共模雷电冲击试验的开关电源设计
·Ramtron 推出汽车级16Kb SPI接口FRAM器件
·虚拟技术助存储网络实现三大目标
·串行存储器AT45DB161B在车辆行驶记录仪中的应用
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9