基于STM32F429IGT6的NAND FLASH读写测试(CUBEMX)
本文基于W29N01HV这款NAND FLASH芯片进行讲解,这款芯片的讲解在网上的资料真的很少,关于这款flash的datasheet我会免费共享出来。(如果觉得本文对你没什么帮助可参考:NAND FLASH文章)
NAND FLASH是一个静态存储设备,所以用STM32上的FSMC功能,具体功能可以看STM32公司发的(也可以是经过行业的大佬翻译过的中文版本)1-STM32F4xx中文参考手册,在手册中
可以同时使用两块NAND FLASH,由下图可见,NAND信号有FSMC_NCE[3:2],FSMC_INT[3:2]着两个寄存器。
这两个寄存器用来确定你的NAND FLASH连接着F429的那块区域(Bank2 or Bank3)。
接着看原理图,由原理图可知片选引脚CE连接F429的PG9引脚, 在从cubemx上查看PG9引脚复用功能,由下图可知,PG9可复用为FMC_NCE3。NCE3对应着Bank3
在从数据手册中查看NAND FLASH是多少位
由图可知8bit,接下来进行cubemx配置
以上这些数据都可从数据手册中查看到
Ready or busy那一栏本人现在没搞懂怎么配,如果有懂得大佬麻烦在评论区教我一下,万分感谢!!
接着是本文重点:配置wait,setup,hold,Hi-z time
在sudaroot大佬的文章中给出了这四个时间的计算公式
thclk是系统时钟,为5.5ns(具体时间要看你配置的时钟,这里为180MHZ,具体计算公式为1/时钟频率)
先算SET: 先在数据手册中找出tcs,tcls等时间
由上图数据手册可知时间最大为15ns,twp=12ns代入公式(SET+1)*tHCLK>=15-12=3
可计算出SET>=0这里取1
同理的HIZ,HOLD,WAIT与SET算法一样,篇幅有限,有兴趣的读者可以自行去计算(WAIT的满足条件较多容易计算出错)。在sudaroot大佬的文章中有全部都进行计算感兴趣的请到文章开头的连接可直接跳转。
算出HIZ=4,HOLD=2,WAIT=5;
接下来就是计算
这里需要参考STM32F4XX和NAND FLASH的数据手册
由前面计算可知SET我们取1;带入公式(TAR+1+2)*5.5>10,可得TAR>=0这里取1,同理TCLR=1
接着就是配置cubemx了
最后就差配置 就配置完成了。查看需要配置哪些:
这几个参数可参考NAND FLASH
照着填就行
最后打开串口即可生成工程了;
测试代码:
int main()
{uint32_t i = 0;NAND_IDTypeDef NAND2;NAND_AddressTypeDef temp;temp.Plane = 0;temp.Block = 0;temp.Page = 0;if( HAL_NAND_Read_ID(&hnand2,&NAND2)==HAL_OK){printf("ID:NAND2\r\n");}if(HAL_NAND_Write_Page(&hnand2,&temp,buf,1)==HAL_OK){printf("NAND写入成功\r\n");}if(HAL_NAND_Read_Page(&hnand2,&temp,read,1)==HAL_OK){printf("读取成功!\r\n");printf("%s",read);}}
如果串口打印出数据就是成功。
这也是我现学现教,有讲的不是很透彻的可以私信或者评论区问我,我看到肯定会回复的,最后,创作不易,如果感觉有帮助就点个赞吧!
基于STM32F429IGT6的NAND FLASH读写测试(CUBEMX)相关推荐
- NAND FLASH 读写操作 简介
NAND FLASH 内存详解与读写寻址方式 一.内存详解 NAND闪存阵列分为一系列128kB的区块(block),这些区块是 NAND器件中最小的可擦除实体.擦除一个区块就是把所有的位(bit)设 ...
- 模拟NAND FLASH 读写BCH ECC校验
一.模拟NAND FLASH 读写BCH ECC校验 将内核源码里的bch校验程序分离出来,从而可以手动修改原始数据和bch校验码,达到模拟出错纠正过程. 源码 bch.c.bch.h.types.h ...
- uboot研读笔记 | 05 - 移植uboot 2012.04到JZ2440(支持Nand Flash读写)
项目开源地址:https://github.com/Mculover666/uboot-jz2440 0. 教程完整目录 00 - 嵌入式Linux系统中Bootloader的作用和基本运行原理 01 ...
- 基于VXWORKS的NAND FLASH驱动程序设计
基于VXWORKS的NAND FLASH驱动程序设计 3162412793@qq.com 技术交流QQ群: 691976956 目前,随着电子技术的不断发展,计算机技术也得到飞速的发展,产生了很多新技 ...
- NAND FLASH读写原理
NAND FLASH读写原理 一.结构分析 S3C2410处理器集成了8位Nand Flash控制器.目前市场上常见的8位NandFlash有三星公司的k9f1208.k9f1g08.k9f2g08 ...
- 文件系统加密 嵌入式Linux,基于Linux的NAND Flash加密文件系统的设计与实现
摘要: NAND Flash以其大容量,低成本,低功耗,抗震荡在非易失存储介质中占据重要地位,已经被广泛应用于消费型电子,航空设备等领域.但是由于NANDFlash的物理特性不同于磁盘存储设备,需要为 ...
- FPGA 控制 nand flash读写
最近 项目上用FPGA 去操作nand flash.终于实现 了.其实主要把 NAND FLASH接口时序搞定,就没有问题. 首先要做的是擦除操作,只要按着状态机去实现以下步骤就行. 写时序: 读时序 ...
- ESP32入门-NVS的flash读写测试
硬件 ① 开发板型号:ESP32-WROOM-32 2.软件设计 2.1代码逻辑 ①初始化NVS -> ②创建数据表 -> ③ 读写对应数据表中数据 2.1 软件应用说明 1.NVS使用说 ...
- uboot下nand flash读写方法_鸿蒙HarmonyOS烧录方法总结
1.烧录工具 理解HarmonyOS驱动框架,用户态APP和内核态驱动之间的通信机制. HarmonyOS烧录使用的海思自研的烧录工具Hitool,使用起来相对来说比较简单.整体界面如图所示: 2. ...
最新文章
- STM32 基础系列教程 24 - USB_HID_key
- 《Note --- Unreal 4 --- Sample analyze --- StrategyGame(continue...)》
- Python开发工程师常用开发工具
- 洛谷 1776 宝物筛选 【多重背包+二进制拆分】
- i386 Linux 系统调用
- RNA_seq(1)植物转录组实战(下)之DESeq2进行差异基因分析
- cleverhans库——FGSM代码实战
- python训练神经网络模型_bp神经网络python 训练
- linux-磁盘管理
- 关于本公众号科研交流群(微信群)的说明
- JAVA SSM毕业设计——基于SSM的校园二手交易平台的设计与实现
- python 读取outlook邮箱邮件小记
- 科技驰援 攻坚战疫 | 用友助力武汉协和医院部署捐赠物资管理系统,保证“物尽其用”...
- 体感互动虚拟试衣系统
- 牛客动态规划习题:Min酱要旅行(背包变种)
- Red Hat Enterprise Linux 5.1 Server(正式版)各版本下载2011-04-17 22:21
- 华云大咖说 | 安超ArSDN云安全场景方案
- 实用国际(XX)计量单位表
- 培训网站比较-CSDN-51CTO-慕课网
- 泡面吧” “计蒜客” 挑战难题 第16题:爬楼梯