“Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南

news2024/11/27 2:39:08

目录

  • “Flash 闪存”基础知识及 “SD NAND Flash”产品测试指南
    • 一、“FLASH闪存”是什么?
      • 1. 简介
      • 2. 分类
      • 3. 特点
      • 4. 虚拟化
    • 二、SD NAND Flash
      • 1. 概述
      • 2. 特点
      • 3. 引脚分配
      • 4. 数据传输模式
      • 5. SD NAND寄存器
      • 6. 通电图
      • 7. 参考设计
    • 三、STM32测试例程
      • 1. STM32F103读写代码

“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”型号为例介绍。

SD NAND

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
    CID register

  • SCR register
    SCR register

6. 通电图

通电图

通电时间
通电时间

7. 参考设计

参考设计1

参考设计2

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有所帮助。

============>认准这里哦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2204692.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CorelDRAW中绘制居民地街道区道路网的绘制

居民地街区道路网的绘制 1.打开软件&#xff0c;点击【文件】→【新建】&#xff0c;建立实验。并导入底图&#xff0c;结果如图1所示&#xff1a; 图1 2.点击【手绘工具】&#xff0c;利用贝塞尔曲线绘制主干道&#xff0c;结果如下图2所示 图2 3.点击【手绘工具】&#xf…

【北京迅为】《STM32MP157开发板嵌入式开发指南》- 第二十七章 交叉编译器的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器&#xff0c;既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构&#xff0c;主频650M、1G内存、8G存储&#xff0c;核心板采用工业级板对板连接器&#xff0c;高可靠&#xff0c;牢固耐…

前后端分离开发YApid

开头先声明以下&#xff0c;这篇主要用于概念的介绍…… 在当今的互联网应用开发中&#xff0c;前后端分离逐渐成为主流的开发模式。相比于传统的前后端混合开发&#xff0c;这种新模式在灵活性、可维护性和团队协作等方面具有显著优势。 前后端混合开发 在前后端混合开发模式…

浏览器内置文字转语音,播报功能Web Speech API - SpeechSynthesisUtterance

SpeechSynthesisUtterance: 让网页说话的艺术 在现代Web开发中&#xff0c;让网页具有语音功能可以极大提升用户体验&#xff0c;特别是对于视障用户或需要多任务处理的场景。SpeechSynthesisUtterance 是 Web Speech API 中的一个接口&#xff0c;它允许开发者创建一个语音合…

初学java练习题【1】

import java.util.Scanner;public class HelloWorld{public static void main(String[] args){Scanner scannernew Scanner(System.in);//输入工资System.out.println("请输入您的工资&#xff1a;");double d1scanner.nextDouble();System.out.println("请输入…

Word 批注如何添加及删除?只需这样就行

在使用 Word 编写文档之后我们可能会将其发送给其他伙伴查看&#xff0c;当其看见文档中有错误的时候可能需要加以标记&#xff0c;这样你才能知道哪里有错误。Word 批注功能就是这样的一种工具&#xff0c;它允许用户在文档中标记特定文字或段落&#xff0c;并添加相关评论或建…

【论文阅读】Semi-Supervised Few-shot Learning via Multi-Factor Clustering

通过多因素聚类的半监督小样本学习 引用&#xff1a;Ling J, Liao L, Yang M, et al. Semi-supervised few-shot learning via multi-factor clustering[C]//Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition. 2022: 14564-14573. 论文地址…

微软已解决Word自动删除文件问题 重启或使用命令行可修复

早前作为办公软件主力产品的 Microsoft Word 出现某个错误&#xff0c;该错误会导致用户在保存文件后或者关闭 Word 时自动删除文件&#xff0c;好在文件只是被移动到回收站中而不是永久删除。 该问题主要影响以下行为&#xff1a; 文件名中包含 # 号 文件后缀为全大写的.DOC…

应对网络安全挑战:App等保测评的重要性与策略

在全球数字化转型的大潮中&#xff0c;移动应用(App)作为连接人们日常生活与互联网世界的桥梁&#xff0c;其数量与日俱增&#xff0c;功能日趋多样化。与此同时&#xff0c;App背后潜藏的网络安全风险也随之上升&#xff0c;数据泄露、隐私侵犯、恶意软件植入等问题频发&#…

访问控制列表(课内实验)

实验2&#xff1a;访问控制列表 实验目的及要求&#xff1a; 通过实验&#xff0c;进一步的理解标准ACL与扩展ACL的工作原理及执行过程。理解通配符的概念&#xff0c;熟练掌握标准ACL与扩展ACL的配置指令&#xff0c;掌握将访问控制列表应用VTY线路上&#xff0c;并且能够判断…

C++网络编程之套接字基础

概述 在网络编程中&#xff0c;套接字&#xff08;Socket&#xff09;是一种用于进程间通信的接口。套接字是操作系统提供的一种抽象层&#xff0c;它允许不同计算机之间的进程通过网络进行通信。套接字实际上并不神秘&#xff0c;简单来说&#xff0c;套接字是连接网络中不同主…

【射频通信电子线路第七讲】射频收发信机结构及具体的实例应用

一、射频收发器 &#xff08;一&#xff09;功能与需求 &#xff08;1&#xff09;频率变换&#xff1a;调制解调、混频、不同于信息变换 电平变换&#xff1a;放大、衰减 干扰抑制&#xff1a;滤波、抵消 &#xff08;2&#xff09;发射出的信号&#xff1a;高频、一定功…

【动态规划】状态 dp

动态规划步骤&#xff1a; 状态表示。所谓状态表示就是 dp 表里的值表示什么含义&#xff0c;那么状态表示怎么找呢&#xff1f; a. 题目要求 b. 经验&#xff08;以某一个位置为结尾 / 起点&#xff09; 题目要求 c. 分析问题的过程中发现重复子问题状态转移方程。dp[ i ] 等…

<Project-8.1 pdf2tx-MM> Python Flask 用浏览器翻译PDF内容 2个翻译引擎 繁简中文结果 从P8更改

更新 Project Name&#xff1a;pdf2tx (P6) Date: 5oct.24 Function: 在浏览器中翻译PDF文件 Code:https://blog.csdn.net/davenian/article/details/142723144 升级 Project Name: pdf2tx-mm (P8) 7oct.24 加入多线程&#xff0c;分页OCR识别&#xff0c;提高性能与速度 使…

美发店管理革新:SpringBoot系统的应用

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的管理显得特别重要。因此&#xff0c;使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

3D生成基础模型来了!只需5秒,高质量3D资产规模化生成!南洋理工等重磅开源3DTopia-XL

文章链接&#xff1a;https://arxiv.org/pdf/2409.12957 项目链接&#xff1a;https://3dtopia.github.io/3DTopia-XL/ 今天AI生成未来和大家分享的是南洋理工、北大、上海AI Lab和港中文联合发布的3D PBR资产生成最新工作3DTopia-XL。通过基于高效且表达力强的3D表示方法Pri…

Vue3 集成Monaco Editor编辑器

Vue3 集成Monaco Editor编辑器 1. 安装依赖2. 使用3. 效果 Monaco Editor &#xff08;官方链接 https://microsoft.github.io/monaco-editor/&#xff09;是一个由微软开发的功能强大的在线代码编辑器&#xff0c;被广泛应用于各种 Web 开发场景中。以下是对 Monaco Editor 的…

【linux 多进程并发】0201 Linux进程fork内存空间,父子进程变量内存地址居然是一样的

0201 Linux进程fork方式详解 ​专栏内容&#xff1a; postgresql使用入门基础手写数据库toadb并发编程 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物. 文章…

学习记录:js算法(五十七):二叉树中所有距离为 K 的结点

文章目录 二叉树中所有距离为 K 的结点思路一思路二 二叉树中所有距离为 K 的结点 给定一个二叉树&#xff08;具有根结点 root&#xff09;&#xff0c; 一个目标结点 target &#xff0c;和一个整数值 k &#xff0c;返回到目标结点 target 距离为 k 的所有结点的值的数组。&…

matlab002

新建工程test001 例如&#xff1a; 脚本&#xff08;Script&#xff09; 概念 脚本是一系列按顺序执行的 MATLAB 命令的集合。它就像是一个记录了你在命令行中输入的一系列指令的文件。用途 适用于简单的任务&#xff0c;例如数据处理、可视化等一次性的操作。例如&#xff0c…