基于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);
  }
 
}

如果串口打印出数据就是成功。

这也是我现学现教,有讲的不是很透彻的可以私信或者评论区问我,我看到肯定会回复的,最后,创作不易,如果感觉有帮助就点个赞吧!

 

 

 

 

 

 

  • 12
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: STM32F767IGT6和STM32F429IGT6是STMicroelectronics推出的两款32位ARM Cortex-M微控制器。下面是两者的比较: 1. 处理器性能:STM32F767IGT6采用了ARM Cortex-M7内核,主频可达216 MHz,提供了更高的处理能力和更快的执行速度。而STM32F429IGT6使用了ARM Cortex-M4内核,主频为180 MHz。 2. 存储容量:STM32F767IGT6具有1MB的闪存和320KB的SRAM,而STM32F429IGT6则仅有1MB的闪存和256KB的SRAM。因此,前者提供了更大的存储容量,可以用于存储更多的程序和数据。 3. 外设和接口:两者均具有丰富的外设和接口,如多个USART、SPI、I2C、USB等。然而,STM32F767IGT6还拥有更多的接口和外设,如以太网MAC、SDIO、SDMMC、QSPI等,可以提供更多的连接和扩展选项。 4. 电源管理:STM32F767IGT6支持更多的低功耗模式,包括多个待机模式和休眠模式。这样可以进一步降低功耗,延长电池寿命。 5. 其他特性:STM32F767IGT6在外设和性能方面拥有一些额外的特性,如更多的定时器、DMA通道和ADC转换通道。同时,它还提供了更多的扩展功能,如温度传感器和自检。 综上所述,STM32F767IGT6在处理能力、存储容量、外设和接口等方面都更为强大,适用于对性能要求较高的应用场景。而STM32F429IGT6则适用于对功耗和成本有更高要求的应用。选择适合的芯片需根据具体应用需求来决定。 ### 回答2: STM32F767IGT6和STM32F429IGT6是两种不同型号的STM32单片机。它们在处理器核心、性能、外设等方面存在一些不同。 首先,STM32F767IGT6采用了ARM Cortex-M7内核,而STM32F429IGT6采用了ARM Cortex-M4内核。相对于Cortex-M4内核,Cortex-M7内核具有更强大的计算性能和更高的操作速度。 其次,STM32F767IGT6拥有更大的闪存和SRAM容量。它有2MB的闪存和512KB的SRAM,而STM32F429IGT6只有1MB的闪存和256KB的SRAM。更大的存储容量使得STM32F767IGT6能够运行更复杂的应用程序和存储更多的数据。 此外,STM32F767IGT6和STM32F429IGT6在外设方面也有一些差异。两者都配备了通用I/O端口、定时器、串行通信接口、USB接口等常见外设,但STM32F767IGT6还集成了以太网控制器、SDIO接口、CAN接口等更多功能。 总体上看,STM32F767IGT6相对于STM32F429IGT6具有更强大的处理器和更大的存储空间,可以支持更复杂的应用程序,并且集成了更多的外设功能。然而,选择适合的型号还要根据具体的应用需求和成本考虑。 ### 回答3: STM32F767IGT6和STM32F429IGT6STM32系列微控制器的两个不同型号。以下是它们之间的比较: 处理器性能:STM32F767IGT6采用Cortex-M7内核,主频为216 MHz,而STM32F429IGT6采用Cortex-M4内核,主频为180 MHz。因此,STM32F767IGT6具有更高的处理性能和更快的时钟速度。 存储容量:STM32F767IGT6具有更大的Flash存储器,容量为2 MB,而STM32F429IGT6Flash容量为1 MB。此外,STM32F767IGT6还具有更大的RAM容量,为512 KB,而STM32F429IGT6的RAM容量为256 KB。 外设功能:STM32F767IGT6和STM32F429IGT6都具有许多通用和专用外设,如UART、SPI、I2C、ADC和定时器等。然而,STM32F767IGT6具有更多的GPIO脚,为216个,比STM32F429IGT6的112个更多。此外,STM32F767IGT6还具有更多的专用外设,如以太网MAC、USB OTG等。 功耗:由于采用了不同的内核和处理器架构,STM32F767IGT6在性能方面可能会更耗电。对于更低功耗要求的应用,STM32F429IGT6可能是更好的选择。 总结:STM32F767IGT6和STM32F429IGT6在处理器性能、存储容量、外设功能和功耗方面有所区别。选择哪个型号主要取决于具体的应用需求和性能要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值