目录
“Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南
一、“FLASH闪存”是什么?
1. 简介
FLASH闪存是属于内存器件的一种,“Flash”。闪存则是一种非易失性(Non-Volatile)内存,在没有电流供应的条件下也能够长久地保持数据,其存储特性相当于硬盘,这项特性正是闪存得以成为各类便携型数字设备的存储介质的基础。
各类 DDR、SDRAM 或者 RDRAM 都属于挥发性内存,只要停止电流供应内存中的数据便无法保持,因此每次电脑开机都需要把数据重新载入内存。
2. 分类
NOR和NAND是市场上两种主要的非易失闪存技术。
在1984年,东芝公司的发明人舛冈富士雄首先提出了快速闪存存储器(此处简称闪存)的概念。与传统电脑内存不同,闪存的特点是NVM,其记录速度也非常快。
Intel是世界上第一个生产闪存并将其投放市场的公司。1988年,公司推出了一款256K bit闪存芯片。它如同鞋盒一样大小,并被内嵌于一个录音机里。后来的这种闪存被统称为NOR闪存。它结合EPROM和EEPROM两项技术,并拥有一个SRAM接口。
第二种闪存称为NAND闪存。它由日立公司于1989年研制,并被认为是NOR闪存的理想替代者。NAND闪存的写周期比NOR闪存短90%,它的保存与删除处理的速度也相对较快。NAND的存储单元只有NOR的一半,在更小的存储空间中NAND获得了更好的性能。
3. 特点
性能方面,flash闪存是非易失存储器,可以对称为块的存储器单元块进行擦写和再编程。任何flash器件的写入操作只能在空或已擦除的单元内进行,所以大多数情况下,在进行写入操作之前必须先执行擦除。NAND器件执行擦除操作是十分简单的,而NOR则要求在进行擦除前先要将目标块内所有的位都写为1。
由于擦除NOR器件时是以64~128KB的块进行的,执行一个写入/擦除操作的时间为5s,而擦除NAND器件是以8~32KB的块进行的,执行相同的操作最多只需要4ms。
执行擦除时块尺寸的不同进一步拉大了NOR和NAND之间的性能差距。统计表明,选择存储解决方案时,设计师必须权衡以下的各项因素:
- NOR的读速度比NAND稍快一些。
- NAND的写入速度比NOR快很多。
- NAND的4ms擦除速度远比NOR的5s快。
- 大多数写入操作需要先进行擦除操作。
- NAND的擦除单元更小,相应的擦除电路更少。
可靠性方面,采用flash介质时一个需要重点考虑的问题是可靠性。对于需要扩展MTBF的系统来说,Flash是非常合适的存储方案。可以从寿命(耐用性)、位交换和坏块处理三个方面来比较NOR和NAND的可靠性。
耐用性方面,NAND闪存中每个块的最大擦写次数是一百万次,而NOR的擦写次数是十万次。
易于使用方面,NOR的闪存可以像其他存储器那样直接连接并运行代码,而NAND需要复杂的I/O接口,使用NAND器件时,必须先写入驱动程序。
4. 虚拟化
FLASH闪存是一种内存技术,与RAM不同,在断电时它仍旧可以保留所存储的信息。虽然FLASH闪存的读写操作速度不如RAM,但性能远高于典型的硬盘。FLASH闪存技术非常适合随机I/O,适用于虚拟服务器环境中存在的大量随机I/O。
目前有三种类型的FLASH闪存,耐久性各不相同:
- 单阶存储单元(SLC)FLASH闪存在每个单元写一位数据,耐久性最好。
- 多阶存储单元(MLC)FLASH闪存在每个单元写多位数据,耐久性排名第二。
- 三阶存储单元(TLC)在每个单元写三位数据,耐久性最差。
二、SD NAND Flash
这里我以贴片式TF卡“CSNP32GCR01-AOW”型号为例介绍。
1. 概述
CSNP32GCR01-AOW是基于NAND闪存和SD控制器的32Gb密度嵌入式存储。该产品与原始NAND相比,有许多优点,包括嵌入式坏块管理和更强的嵌入式ECC。即使在异常断电的情况下,它仍然可以安全地保存数据。
2. 特点
- 接口:标准SD规范2.0版,带有1-I/O和4-I/O。
- 电源:Vcc=2.7V-3.6V。
- 默认模式:可变时钟频率0-25 MHz,最高12.5 MB/秒接口速度(使用4条并行数据线)。
- 高速模式:可变时钟频率0-50 MHz,最高25 MB/秒接口速度(使用4条并行数据线)。
- 工作温度:-25°C至+85°C。
- 储存温度:-40°C至+85°C。
- 备用电流:<250uA。
- 开关功能命令:支持高速、电子商务和未来功能。
- 内容保护机制:符合SDMI标准的最高安全性。
- 内置写保护功能:永久和临时。
3. 引脚分配
4. 数据传输模式
5. SD NAND寄存器
SDNAND接口中定义了六个寄存器:OCR、CID、CSD、RCA、DSR和SCR。这些信息只能通过相应的命令访问。
-
CID register
-
SCR register
6. 通电图
通电时间
7. 参考设计
Tips:RDAT和RCMD(10K~100 kΩ)是上拉电阻器,当SDNAND处于状态时,保护CMD和DAT线路不受总线浮动的影响;在高阻抗模式下,即
使上拉电阻未使用,它们也会影响数据传输。
三、STM32测试例程
下面是STM32读写SD NAND的简单测试代码,包含基本的初始化、读取数据和写入数据。
1. STM32F103读写代码
#include "stm32f10x.h"
// SD NAND flash commands
#define CMD_READ 0x00
#define CMD_WRITE 0x01
#define CMD_ERASE 0x02
void SD_Init(void) {
// Initialization code for SD NAND
}
void SD_Write(uint32_t address, uint8_t* data, uint32_t length) {
// Write data to SD NAND
}
void SD_Read(uint32_t address, uint8_t* buffer, uint32_t length) {
// Read data from SD NAND
}
int main(void) {
uint8_t data[512];
uint8_t readBuffer[512];
SD_Init();
// Write data
SD_Write(0x0000, data, sizeof(data));
// Read data
SD_Read(0x0000, readBuffer, sizeof(readBuffer));
while (1) {
// Main loop
}
}
以上示例代码仅供参考,具体实现需要根据具体的SD NAND Flash模块和STM32开发板来调整。希望本篇能够对读者了解和使用SD NAND Flash有所帮助。
============>认准这里哦