CS创世SD NAND与MicroSD谁更快?
开篇说明
在嵌入式开发与应用过程中,总是会涉及到数据存储的问题,例如以下几个场景:
用于设备开机参数配置的数十个Byte的配置数据,这些数据可以存储在MCU内部的Flash或者EEPROM中,也可以存储在片外,诸如AT24Cxx,BL24Cxx这类EEPROM芯片中。
系统显示设备所需要的字库,图片,或者设备在运行过程中产生的数据记录文件,这些文件通常是以MB为单位计算的,这些数据一般存储在片外,诸如W25Qxx这类NOR Flash芯片中,也有可能会存储在直插SD卡,贴片SD 卡这类 NAND Flash中。如果记录的是图像或者音频数据的话,本地存储的最佳选择,就是直插SD卡,SD NAND这类 NAND Flash。
上述几类存储芯片根据各种容量的不同,定位和功能特点都有差异,这里做一个简单的讨论。
(1)常见的外部存储芯片介绍(1.1)EEPROM芯片
EEPROM芯片相对于其他储存器件,具有以下几个特点。
可编程性:EEPROM芯片可以通过编程,将数据写入指定的地址,这使得EEPROM芯片在应用中非常灵活。
易擦除性:EEPROM芯片可以通过高压擦除操作,将存储的数据擦除,并重置EEPROM芯片。
低功耗性:EEPROM芯片仅在写和擦除操作时需要大量的能量,而在读取过程中仅需极小的能量,这使得EEPROM芯片节省了许多电能。
高可靠性:EEPROM芯片的数据存储在非挥发性存储介质中,即使在断电或者掉电的情况下,数据仍然可以得到保存。
常用的EEPROM芯片如下图所示:
(1.2)NOR Flash芯片
NOR Flash(也称为NOR型闪存)是一种非易失性存储器,常用于嵌入式系统和存储设备中。NOR Flash是一种闪存类型,可以用于存储程序代码、固件、操作系统以及其他数据。
与NAND Flash相比,NOR Flash具有较低的存储密度和较高的成本,但具有较快的读取速度、较低的读取延迟和较好的随机访问性能。这使得NOR Flash适合用作执行代码和存储需要低延迟和高可靠性的关键数据的应用程序,所以常在需要片外储存代码的应用场景中,见到NOR Flash芯片。
市面上常见的NOR FLASH芯片如下所示:
(1.3)3.SD NAND芯片
事实上,我们常见的SD卡,也属于一种芯片,它和贴片SD卡一样,都使用SD 协议,SD NAND是储存卡的延伸及强化版本,使用的标准芯片封装工艺使其可以轻松过回流焊,可直接贴片,又名贴片式TF卡、SD Flash,除此之外其他物理抗性也比普通SD卡强得多,其内部集成高性能的闪存控制器及SLC架构的闪存,兼容 SD 协议,满足客户小型化、差异化、高可靠性的设计需求。
对于一些要求严苛的场景,比如要求小尺寸存储,IP6xf防水,数据自纠错,温度范围宽等参数,贴片式SD卡比直插SD卡更能胜任这个角色,目前,基于ST、TI、NXP、MTK、RK、芯唐、全志 等平台,贴片SD卡已经覆盖了工业、车载、医疗、电力、通信和消费类领域的诸多产品之中。
市面上常见的SD NAND芯片,主要是雷龙代理的CS创世 SD NAND应用最广泛,如下图所示:
(2)存储芯片性能的评估标准读取速度:指的是从存储器中读取数据所需的时间。通常以延迟(访问时间)来衡量,延迟越低,读取速度越快。
写入速度:指的是将数据写入存储器的速度。与读取速度类似,写入速度也可以通过延迟来衡量。
存储容量:表示存储器能够存储的数据量。通常以位、字节、千字节(KB)、兆字节(MB)、千兆字节(GB)或更大单位来衡量。
数据可靠性:指存储器中数据的稳定性和可靠性。一个良好的存储器应该能够正确地保存和检索数据,避免数据丢失或损坏。
能耗效率:衡量存储器在执行读写操作时的能耗。较低的能耗可以帮助节省能源和延长设备电池寿命。
接下来我们用MicroSD卡和CS创世 SD NAND做对比,基于公司开发的工业模拟量参数采集器的数字主板,来测试双方的相关性能,设备图片如下:
MicroSD卡采用金士顿的32GB卡,贴片SD卡采用CS创世 512MB容量的SD NAND,如下图所示:
为了适配SD卡槽,所以雷龙会为样品免费提供转接板,更为方便地插入SD卡槽,可在不改变原有PCB布局的情况下进行调试。
(3)CS 创世SD NAND的产品介绍深圳市雷龙发展有限公司创立于2008年,专注NAND Flash 市场13年,其代理的 CS创世 SD NAND产品,具有以下特点:
CS创世为全球首家推出SD NAND产品的公司。
尺寸小巧,简单易用,兼容性强,稳定可靠,固件可定制,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便宜,样品免费试用。
如果需要过IPvx防水,又因为开口式的SD卡槽,无法达到指定防水指标的产品,可以考虑采用CS创世 SD NAND。
可以直接采用回流焊,贴片在PCB上,传统的MisroSD卡因为要和卡槽进行机械接触,卡槽容易老化,触点也容易氧化变形,无法长时间在户外以及暴露环境使用,基于这项优势,CS创世 SD NAND涉及的应用领域广泛,比如:医疗设备,粉尘以及高温下的工业控制,户外安防,户外通信,网络设备,IPC,执法记录仪,可视对讲,门禁考勤,平板电脑,汽车电子,电力设备等。
雷龙发展有限公司官网为:雷龙发展有限公司
(4)SD NAND对比和测试项目基于STM32L4R5的某政府项目产品(无外壳)平台上,利用虚拟U盘功能,在没有DMA和FIFO优化的前提下,分别测试MicroSD卡和CS创世 SD NAND的读写速度。
(4.1)基于STM32L4R5的产品平台测试
平台如下所示:
插入MicroSD卡时(背面)
插入贴片SD卡+转接板时
然后使用TypeC数据线将设备与电脑连接,由于产品实现了虚拟U盘的功能,所以会在电脑上识别出对应存储器容量大小的U盘,虚拟U盘的具体实现程序可以参考网络上的相关例程,这里不赘述。
测试CS创世 SD NAND的数据读写功能
这里采用PC端文件传输的功能,来测试其数据读写速度,插入转接板后,PC端识别出如下U盘信息
这里我们传输30MB字节的数据包,来查看STM32L4R5对SD NAND的数据读写能力。
向SD NAND传输30MB数据包:
可以观察到,STM32L4R5写SD NAND的速度在350~785KB/s之间。
测试MicroSD卡的数据读写功能
这里采用PC端文件传输的功能,来测试其数据读写速度,插入MicroSD卡后,PC端识别出如下U盘信息
这里我们传输30MB字节的数据包,来查看STM32L4R5对MicroSD的数据读写能力。向 MicroSD传输30MB数据包:
可以观察到,同一平台下,MicroSD卡的写速度在355~446KB/s之间,低于CS创世SD NAND的350~785KB/s范围。
(5)结尾总结总体上而言,除了在容量上有些许劣势之外,CS创世 SD NAND在安装方式上,具有传统SD卡所没有的抗腐蚀,抗干扰能力,在读写速度上,比传统SD卡快50%左右。SD NAND存储芯片的应用还有很多,这里只是作以简单的介绍,希望它对您在这方面的应用能带来一些帮助。
贴片SD卡移植FATFS文件系统
一、前言
手头有一块深圳雷龙提供的贴片 CS 创世 SD NAND Flash,挂载个文件系统把玩一下。首先介绍一下使用的贴片 SD 卡,以前使用的都是拔插式的 SD 卡,下面这个样子:
深圳雷龙提供的CS创世 SD NAND Flash 如下图:
二、贴片 SD 卡介绍
深圳雷龙提供的 CS 创世 SD NAND 属于 LGA-8 封装,标准 SDIO 接口,兼容SPI/SD/eMMC接口,兼容各大MCU平台,可替代普通TF卡/SD卡,尺寸6x8mm毫米,内置SLC晶圆擦写寿命10万次,通过1万次随机调电测试耐高低温,支持工业级温度-40°~+85°,机贴手贴都非常方便,速度级别Class10(读取速度23.5MB/S写入速度12.3MB/S)标准的SD2.0协议普通的SD卡可直接驱动。
贴片 SD 卡的使用很简单,管脚的连接方式和普通拔插的 SD 卡一致,所以我们设计硬件时按照普通 SD 的接线方式设计就行,以小熊派开发板为例子,单线 SDIO 硬件接线如下:
我使用小熊派开发板来挂载 FATFS 到雷龙这块 SD 卡上
三、配置 CubeMX 底层接口
首先使用 CubeMX 配置底层 SD 卡接口,选择单线模式,分频设置高一点,其他参数保持默认
配置完 SD 卡后开启 FATFS 的文件系统,选择挂载到 SD 卡,文件名选择 US ,buff 放到 STACK 上(注意调大栈空间)
配置完成后生成代码,cubemx 主要是以下两个初始化函数:
四、编写命令行测试代码
使用我之前移植的命令行框架,编写测试函数
void mount(char argc, char *argv)
{
if (argc > 1)
{
if (!strcmp("init", &argv[argv[1]]))
{
FRESULT ret = FR_INT_ERR;
ret = f_mount(&SDFatFS, SDPath, 1);
if (ret != FR_OK) {
shell_printf("mount init failed! %d\r\n", ret);
} else {
shell_printf("mount init succ!\r\n");
}
} else if (!strcmp("deinit", &argv[argv[1]])) {
FRESULT ret = FR_INT_ERR;
ret = f_mount(NULL, "", 1);
if (ret != FR_OK) {
shell_printf("mount deinit failed!\r\n");
} else {
shell_printf("mount deinit succ!\r\n");
}
}
}
else
{
shell_printf("mount need more arguments!\r\n");
}
};
void open(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
ret = f_open(&SDFile, &argv[argv[1]], FA_READ | FA_WRITE | FA_CREATE_NEW);
if (ret != FR_OK) {
shell_printf("open %s failed! code: %d \r\n ", &argv[argv[1]], ret);
} else {
shell_printf("open %s succ!\r\n", &argv[argv[1]]);
}
}
else
{
shell_printf("mount need more arguments!\r\n");
}
};
void close(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
ret = f_close(&SDFile);
if (ret != FR_OK) {
shell_printf("close %s failed!\r\n", &argv[argv[1]]);
} else {
shell_printf("close %s succ!\r\n", &argv[argv[1]]);
}
}
else
{
shell_printf("mount need more arguments!\r\n");
}
};
void write(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
uint32_t write_num = 0;
ret = f_write(&SDFile, &argv[argv[1]], strlen(&argv[argv[1]]), &write_num);
if (ret != FR_OK) {
shell_printf("write file failed!\r\n");
} else {
shell_printf("write file succ!\r\n");
}
}
else
{
shell_printf("mount need more arguments!\r\n");
}
};
void read(char argc, char *argv)
{
if (argc > 1)
{
FRESULT ret = FR_INT_ERR;
uint32_t read_num = 0;
uint8_t read_buff[100];
ret = f_read(&SDFile, read_buff, 50, &read_num);
if (ret != FR_OK) {
shell_printf("read file failed! %d\r\n", ret);
} else {
shell_printf("read file succ!\r\n");
shell_printf("read dat: %s, read num %d\r\n", read_buff, read_num);
}
}
else
{
shell_printf("mount need more arguments!\r\n");
}
};
将测试函数挂到命令行中:
const static_cmd_st static_cmd[] = {
{"ls", shell_ls_cmd},
{"mount", mount},
{"open", open},
{"close", close},
{"read", read},
{"write", write},
{"\0", NULL, NULL},
};
下载代码,在命令行测试挂载以及读写函数:
读的数据有些乱码,用读卡器读出来看看:
可以看到成功写入,SD 卡挂载 FATFS 成功,命令行操作文件系统功能正常
————————————————
【本文转载自CSDN,作者:Top嵌入式】
深圳市雷龙发展 专注存储行业13年,专业提供小容量存储解决方案。
相关问答
4399出品的游戏?《创世兵魂》《创世兵魂》是首款网页无插件的flash3D第一人称FPS射击网页游戏,无需安装任何插件,只需在上网情况下即可在线与其他玩家对战。打开浏览器,轻松...
现在玩页游戏的人还多吗?都玩什么游戏?4399主要还是以小游戏为主。淘米网,一开始旗下的游戏是个个都能在同类榜里面排得上No.1的,《摩尔庄园》是先驱,淘米的第一款游戏。《赛尔号》是继摩尔庄园出来...
神奇宝贝漆黑的魅影闪光术谁可以学?可以使用闪光术的口袋妖怪:喵喵,凯西,巴大蝴,皮卡丘,胖丁等等。学习面:1.在第一世代的游戏中,闪光是秘传学习器05,共有27只宝可梦可以学会闪光。2.在...《...