【STM32のHAL库开发】使用CubeMX配置FMC来读取NADA Flash的ID
开发平台
cubemx V5.5.0 + MDK Keil V5.29.0.0 + STM32F429NIH
使用Samsung的K9LBG08U0E NADA Flash ,挂载在FMC Bank3上工作。
原理图和引脚映射如图。
CubeMX的配置(1/3)
选取FMC的Nada Flash1使能,配置好相应的IO;
需要配置的内容:
- 时序(重要)
- 查找数据手册中的tREH对应MEMxSET寄存器,即Cube界面中的setup time,单位是HCLK(180M主频时约5.5 ns);
- 同理, tRP、tWP对应MEMxWAIT寄存器,即wait time;
- hold time设为3,Hi-Z time设为2。
- Common与Attribute设置是相同的。
- ALE和CLE的延迟时间
- 同上,查阅数据手册有明确的时间特性表。
- NADA Flash的存储结构
- PageSize,指每个page中的字节数(包括Spare区)
- SpareAreaSize,指每个Spare区(即坏块备用区)中的字节数
- BlockSize,指每个Block中的Page数目
- BlockNumber,指Block的个数;
添加代码(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。
与数据手册中的ID一致。