NAND Flash(贴片式TF卡)存储新突破,基础示例

2024-01-11 09:50

本文主要是介绍NAND Flash(贴片式TF卡)存储新突破,基础示例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

引言

SD卡的发展

SD NAND卡的特性与优势

 二代SD NAND五大优点

SD NAND六大主要优势

现有产品分类

实际应用场景

 SD NAND芯片推荐线路连接:

​编辑

CSNP4GCR01-AMW的介绍

基础使用例程

例程环境简介

硬件设备及电路

项目创建流程

代码

例程结果

对比市场现有产品


创世半导体(CS)是全球首家推出SD NAND FLASH产品的厂商,SD NAND的出现大大降低了使用 NAND FLASH 的技术难度。

引言

随着科技的发展,数据的存储需求也在日益增长。在这个信息爆炸的时代,一款高效、稳定、便携的存储设备显得尤为重要。新品SD卡——SD NAND,应运而生,为我们的数据存储带来了新的革命。

SD卡的发展

SD卡自问世以来,其体积不断缩小,容量逐步增大,速度也在不断提升。

开始。

1997年11月,闪迪和英飞凌联合推出了MMC(MultiMediaCard)存储卡。

1999年8月,闪迪又联合松下、东芝推出了SD(Secure Digital)存储卡。SD卡拥有与MMC卡相同的长宽尺寸,略厚一些(2.1mm VS. 1.4mm)。早期SD卡设备/读卡器都能同时兼容MMC卡。

2000年1月,SD卡协会正式成立,当年推出了最大容量64MB、传输速度约12.5MB/s的产品。

2003年3月,闪迪展示了面向手机等移动设备的miniSD卡(目前已退出市场)。

2004年2月,闪迪又和摩托罗拉发布了更小巧的microSD卡(也称为TransFlash或TF卡)。

2005年7月,SD卡协会确认了microSD卡规范,传输速度也提升到了约25MB/s。

2006年1月,SD 2.0带来了采用FAT32文件系统、最大容量32GB的SDHC(包括miniSDHC、microSDHC)卡。而最初版本的SD卡采用FAT12/FAT16文件系统,最大容量为2GB。

2010年5月,SD 3.01带来了采用exFAT文件系统、最大容量提升到2TB的SDXC(包括microSDXC)卡;以及UHS-I高速总线,最大传输速度为104MB/s。

2011年6月,SD 4.0带来了UHS-II总线。这种SD卡(包括microSD卡)具有两排触点,可以实现全双工156MB/s、半双工312MB/s的传输速度。

2016年2月,SD 5.0带来了视频速度等级规范,包括V30、V60、V90。

2016年11月,SD 5.1增加了针对App运行性能的A1标准。在满足10MB/s持续读写的基础上,增加了随机读取1500IOPS、随机写入500IOPS的要求。

2017年2月,SD 6.0带来了全双工312MB/s、全双工624MB/s的UHS-III总线以及随机读取4000IOPS、随机写入2000IOPS的A2标准。UHS-III向下兼容UHS-II,但到目前为止都没有看到任何样品。

2016年11月,SD 5.1增加了针对App运行性能的A1标准。在满足10MB/s持续读写的基础上,增加了随机读取1500IOPS、随机写入500IOPS的要求。

2017年2月,SD 6.0带来了全双工312MB/s、全双工624MB/s的UHS-III总线以及随机读取4000IOPS、随机写入2000IOPS的A2标准。UHS-III向下兼容UHS-II,但到目前为止都没有看到任何样品。

2019年初,闪迪推出“UHS-I超频卡”,突破了104MB/s的速度瓶颈。之后,金士顿、雷克沙等厂商也追加了类似规格的产品。

2020年5月,SD 8.0引入了PCIe 3.0×2、PCIe 4.0×1和PCIe 4.0×2,将最高速度提升至接近4GB/s(3938MB/s)。

2022年5月,SD 9.0增加了快速启动和安全启动特性,为SD卡创造了半嵌入式应用场景。

内存卡在近年来的发展主要集中在提高容量和读写速度上。例如,现在市场上已经出现了容量达到1TB的MicroSD卡,读写速度也不断提高,以满足用户对存储容量和速度的需求。

同时,一些新型内存卡如CFexpress和SD Express也正在逐渐普及,它们支持更快的数据传输速度和更大的容量。随着手机互联网的发展,云存储也逐渐在吞食存储卡的市场。过去需要通过内存卡扩展手机存储空间,现在则可以通过云服务,把数据存储在云端。

SD NAND的特性与优势

以CSNP4GCR01-AMW为例。

不用写驱动程序自带坏块管理的NAND Flash(贴片式TF卡),

尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装,

标准SDIO接口,兼容SPI/SD接口,兼容各大MCU平台,可替代普通TF卡/SD卡,

尺寸6x8mm毫米,机贴手贴都非常方便,

内置SLC晶圆擦写寿命10万次,通过1万次随机掉电测试耐高低温,

支持工业级温度-40°~+85°,

速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)

标准的SD 2.0协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。

支持TF卡启动的SOC都可以用SD NAND,

提供STM32参考例程及原厂技术支持,

主流容量:128MB/512MB/2GB/4GB/8GB,

比TF卡稳定,比eMMC便宜。

 二代SD NAND五大优点

•尺寸小巧

•简单易用

•兼容性强

•稳定可靠

•固件可定制

SD NAND六大主要优势

•LGA-8封装,机贴手贴都方便。

•尺寸小巧5(6*8mm),助力产品颜值提升。

•容量适宜(1Gb/4Gb/32Gb)帮助客户降低成本。

•擦写寿命长(内置SLC晶圆,擦写寿命可达5-10万次,专为嵌式而生)。

•免驱动(即贴即用)直连SD/SPI接口即可使用,已内置Flash管理程序。  

•稳定可靠:已通过10k次随机掉电高低温冲击测试。内置FW包含平均读写,坏块管理,垃圾回收等处理机制。

 SD NAND 与 TF卡的区别:(看图表) 

现有产品分类

本篇示例代码采用工业级CSNP4GCR01-AMW。容量为512MB。

实际应用场景

新一代SD NAND主要应用领域

•5G

•机器人

•智能音箱

•智能面板(HMI)

•移动支付

•智能眼镜(AR)

•智能家居

•医疗设备

•轨道交通

•人脸识别

•3D打印机

 SD NAND芯片推荐线路连接:

CSNP4GCR01-AMW的介绍

不用写驱动程序自带坏块管理的NAND Flash(贴片式TF卡),

尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,LGA-8封装,

标准SDIO接口,兼容SPI/SD接口,兼容各大MCU平台,可替代普通TF卡/SD卡,

尺寸6x8mm毫米,机贴手贴都非常方便,

内置SLC晶圆擦写寿命10万次,通过1万次随机掉电测试耐高低温,

支持工业级温度-40°~+85°,

速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)

标准的SD 2.0协议使得用户可以直接移植标准驱动代码,省去了驱动代码编程环节。

支持TF卡启动的SOC都可以用SD NAND,

提供STM32参考例程及原厂技术支持,

主流容量:128MB/512MB/2GB/4GB/8GB,

比TF卡稳定,比eMMC便宜。

基础使用例程

例程环境简介

项目环境:

使用开发板为正点原子探索者STM32F407ZG;

STM32CubeMX;

Keil;

SD NAND:芯片型号 CSNP4GCR01-AMW;芯片转接板(将芯片引脚引出为TF 卡)

                

硬件设备及电路

SD NAND原理图:

探索者TF 卡槽:

STM32线路连接

使用SDIO模式,

D0接PC8;        D1接PC9;        D2接PC10;        D3接PC11;

信号

SDIO信号“4线模式”

CLK:HOST给DEVICE的时钟信号。

VDD:电源信号。

VSS:Ground信号。

DAT0-DAT3:4条数据线

CMD:用于HOST发送命令和DEVICE回复响应。

项目创建流程

基础时钟配置:

SDIO模式配置:

FATFS配置:

更改缓存区大小:

完成项目其他基础配置。

代码

while(1)之前:

	FATFS fs;                       /* FatFs 文件系统对象 */FIL file;                       /* 文件对象 */FRESULT f_res;                  /* 文件操作结果 */UINT fnum;                      /* 文件成功读写数量 */BYTE ReadBuffer[512] = {0};    /* 读缓冲区 */BYTE WriteBuffer[] =            /* 写缓冲区 */"This is STM32 working with FatFs \r\n  STM32的FATFS文件系统测试  \r\n ";// 在外部 SD 卡挂载文件系统,文件系统挂载时会对 SD 卡初始化// note:必须先要保证SD卡正常拥有FAT文件系统,如果没有会失败。f_res = f_mount(&fs, "0:", 1);/*----------------------- 文件系统测试:写测试 -----------------------------*//* 打开文件,如果文件不存在则创建它 */f_res = f_open(&file, "0:FatFs STM32cube.txt", FA_CREATE_ALWAYS | FA_WRITE);if(f_res == FR_OK){/* 将指定存储区内容写入到文件内 */f_res = f_write(&file, WriteBuffer, sizeof(WriteBuffer), &fnum);/* 不再读写,关闭文件 */f_close(&file);}/*------------------- 文件系统测试:读测试 ------------------------------------*/f_res = f_open(&file, "0:FatFs STM32cube.txt", FA_OPEN_EXISTING | FA_READ);if(f_res == FR_OK){f_res = f_read(&file, ReadBuffer, sizeof(ReadBuffer), &fnum);}/* 不再读写,关闭文件 */f_close(&file);/* 不再使用文件系统,取消挂载文件系统 */f_mount(NULL, "0:", 1);/* 操作完成,停机 */

MX_SDIO_SD_Init()函数中加入

  if (HAL_SD_Init(&hsd) != HAL_OK){Error_Handler();}if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK){Error_Handler();}

void MX_SDIO_SD_Init(void)
{/* USER CODE BEGIN SDIO_Init 0 *//* USER CODE END SDIO_Init 0 *//* USER CODE BEGIN SDIO_Init 1 *//* USER CODE END SDIO_Init 1 */hsd.Instance = SDIO;hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;hsd.Init.BusWide = SDIO_BUS_WIDE_1B;hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_ENABLE;hsd.Init.ClockDiv = 34;/* USER CODE BEGIN SDIO_Init 2 */if (HAL_SD_Init(&hsd) != HAL_OK){Error_Handler();}if (HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) != HAL_OK){Error_Handler();}/* USER CODE END SDIO_Init 2 */}

例程结果

新建了一个 STM32cube.txt 文件

写入内容如下图所示。

Keil 调试 :成功读取文件内容,暂存至数组中。内容如下

代码解释

对比市场现有产品

目前再嵌入式中使用最多的存储情况:

EEPROM:

        只能存放字节类型的数据:芯片为AT24CXX;采用IIC通信,存储内容类型,大小有限。

U盘 :

        存放文件格式多样;采用USB接口;占用空间大;可以热拔插;

   关于MCU的存储方面,以前基本上用内置的E2PROM,或者是外置的NOR Flash 就可以了。但随着物联网的兴起,MCU的应用越来越广泛了,逐渐的MCU会涉及到大容量的存储需求,用来存储音频,图片(GUI)、视频缓存、协议栈等等。

      那传统的E2PROM和NOR Flash就不够用了。这个时候MCU可能就需要用到NAND Flash了。但MCU采用大容量存储芯片NAND Flash,面临着新的挑战。

每个产品都有自己的优缺点。再存储器件选取上,都是考虑项目本身的需求,个产品性能综合考虑最优存储产品。

这篇关于NAND Flash(贴片式TF卡)存储新突破,基础示例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/593978

相关文章

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Android 悬浮窗开发示例((动态权限请求 | 前台服务和通知 | 悬浮窗创建 )

《Android悬浮窗开发示例((动态权限请求|前台服务和通知|悬浮窗创建)》本文介绍了Android悬浮窗的实现效果,包括动态权限请求、前台服务和通知的使用,悬浮窗权限需要动态申请并引导... 目录一、悬浮窗 动态权限请求1、动态请求权限2、悬浮窗权限说明3、检查动态权限4、申请动态权限5、权限设置完毕后

在 Spring Boot 中使用 @Autowired和 @Bean注解的示例详解

《在SpringBoot中使用@Autowired和@Bean注解的示例详解》本文通过一个示例演示了如何在SpringBoot中使用@Autowired和@Bean注解进行依赖注入和Bean... 目录在 Spring Boot 中使用 @Autowired 和 @Bean 注解示例背景1. 定义 Stud

oracle DBMS_SQL.PARSE的使用方法和示例

《oracleDBMS_SQL.PARSE的使用方法和示例》DBMS_SQL是Oracle数据库中的一个强大包,用于动态构建和执行SQL语句,DBMS_SQL.PARSE过程解析SQL语句或PL/S... 目录语法示例注意事项DBMS_SQL 是 oracle 数据库中的一个强大包,它允许动态地构建和执行

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python中Markdown库的使用示例详解

《Python中Markdown库的使用示例详解》Markdown库是一个用于处理Markdown文本的Python工具,这篇文章主要为大家详细介绍了Markdown库的具体使用,感兴趣的... 目录一、背景二、什么是 Markdown 库三、如何安装这个库四、库函数使用方法1. markdown.mark

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

css渐变色背景|<gradient示例详解

《css渐变色背景|<gradient示例详解》CSS渐变是一种从一种颜色平滑过渡到另一种颜色的效果,可以作为元素的背景,它包括线性渐变、径向渐变和锥形渐变,本文介绍css渐变色背景|<gradien... 使用渐变色作为背景可以直接将渐China编程变色用作元素的背景,可以看做是一种特殊的背景图片。(是作为背