【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID

【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID

  • 开发平台
  • CubeMX的配置(1/3)
    • 添加代码(2/3)
    • 读取ID(3/3)

开发平台

cubemx V5.5.0 + MDK Keil V5.29.0.0 + STM32F429NIH
使用Samsung的K9LBG08U0E NADA Flash ,挂载在FMC Bank3上工作。
原理图和引脚映射如图。
【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID_第1张图片

CubeMX的配置(1/3)

选取FMC的Nada Flash1使能,配置好相应的IO;
【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID_第2张图片
需要配置的内容:

  • 时序(重要
    • 查找数据手册中的tREH对应MEMxSET寄存器,即Cube界面中的setup time,单位是HCLK(180M主频时约5.5 ns);
    • 同理, tRP、tWP对应MEMxWAIT寄存器,即wait time;
    • hold time设为3Hi-Z time设为2
    • CommonAttribute设置是相同的。
  • ALE和CLE的延迟时间
    • 同上,查阅数据手册有明确的时间特性表。
  • NADA Flash的存储结构
    • PageSize,指每个page中的字节数(包括Spare区)
    • SpareAreaSize,指每个Spare区(即坏块备用区)中的字节数
    • BlockSize,指每个Block中的Page数目
    • BlockNumber,指Block的个数;
      【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID_第3张图片

添加代码(2/3)

在MX_FMC_Init();后添加

	FMC_Bank2_3->PCR3 &= 0xfffffffd; //disable PWAITEN

用于将PWAITEN位清零,否则将引起AHB总线错误。

读取ID(3/3)

位于stm32f4xx_hal_nand.c中:

		NAND_IDTypeDef info;
		HAL_NAND_Reset(&hnand1);
		delay_ms(500);
		HAL_NAND_Read_ID(&hnand1, &info);

读取到info结构体中,包括4个32位ID。
【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID_第4张图片
与数据手册中的ID一致。

你可能感兴趣的:(【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID)