NANDFlash(贴片式TF卡)存储新突破,基础示例
(2024-05-21 16:40:20)
标签:
nand贴片式sd卡闪存卡内存卡存储芯片 |
分类: SDNAND |
目录
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;
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)
{
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;
if (HAL_SD_Init(&hsd) !=
HAL_OK)
{
Error_Handler();
}
if
(HAL_SD_ConfigWideBusOperation(&hsd, SDIO_BUS_WIDE_4B) !=
HAL_OK)
{
Error_Handler();
}
}
例程结果
新建了一个 STM32cube.txt 文件
写入内容如下图所示。
Keil 调试
:成功读取文件内容,暂存至数组中。内容如下
代码解释
对比市场现有产品
目前再嵌入式中使用最多的存储情况:
EEPROM:
只能存放字节类型的数据:芯片为AT24CXX;采用IIC通信,存储内容类型,大小有限。
U盘 :
存放文件格式多样;采用USB接口;占用空间大;可以热拔插;
关于MCU的存储方面,以前基本上用内置的E2PROM,或者是外置的NOR
Flash
就可以了。但随着物联网的兴起,MCU的应用越来越广泛了,逐渐的MCU会涉及到大容量的存储需求,用来存储音频,图片(GUI)、视频缓存、协议栈等等。
那传统的E2PROM和NOR
Flash就不够用了。这个时候MCU可能就需要用到NAND Flash了。但MCU采用大容量存储芯片NAND
Flash,面临着新的挑战。
每个产品都有自己的优缺点。再存储器件选取上,都是考虑项目本身的需求,个产品性能综合考虑最优存储产品。