STM32笔记--芯片Flash容量

STM32不仅有产品唯一身份标识寄存器可以读取身份证信息,还可以读取闪存容量寄存器获得芯片的存储容量

STM32芯片容量分类

  • 以F103系列为列,共区分为小容量、中容量、大容量三类产品

  • 小容量产品是指闪存存储器容量在16K至32K字节之间的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。
  • 中容量产品是指闪存存储器容量在64K至128K字节之间的STM32F101xx、 STM32F102xx和STM32F103xx微控制器。
  • 大容量产品是指闪存存储器容量在256K至512K字节之间的STM32F101xx和STM32F103xx微控制器。

根据名字识别Flash大小

  • 在芯片选型的时候,依据STM32官方的芯片命名来确定其Flash容量,已STM32F103C8T6为例,8 即代表芯片的Flash容量为64K,STM32官方的芯片命名通常以第11位做为Flash容量的标识符
4-----------表示flash为16K
6-----------表示flash为32K
8-----------表示flash为64K
B-----------表示flash为128K
C-----------表示flash为256K
D-----------表示flash为384K
E-----------表示flash为512K
F-----------表示flash为768K
G-----------表示flash为1M

读取闪存容量寄存器

  • 在STM32参考手册可查到芯片闪存容量寄存器基地址,通过读取该寄存器,即能得到芯片的Flash容量
//STM32各个系列芯片Flash容量的基地址
 #include STM32F0_FlashAddr   0x1FFFF7CC   //STM32F0 Flash容量基地址
 #include STM32F1_FlashAddr   0x1FFFF7E0   //STM32F1 Flash容量基地址
 #include STM32F2_FlashAddr   0x1FFF7A22   //STM32F2 Flash容量基地址
 #include STM32F3_FlashAddr   0x1FFFF7CC   //STM32F3 Flash容量基地址
 #include STM32F4_FlashAddr   0x1FFF7A22   //STM32F4 Flash容量基地址
 #include STM32F7_FlashAddr   0x1FF0F442   //STM32F7 Flash容量基地址
 #include STM32L0_FlashAddr   0x1FF8007C   //STM32L0 Flash容量基地址
 #include STM32L1_FlashAddr   0x1FF8004C   //STM32L1 Flash容量基地址
 #include STM32L4_FlashAddr   0x1FFF75E0   //STM32L4 Flash容量基地址
 #include STM32H7_FlashAddr   0x1FF0F442   //STM32H7 Flash容量基地址
  
 //获取MCU的Flash容量
 void GetSTM32_FlashSize(uint32_t STM32XX_FlashAddr)
 {
    
    
   uint16_t STM32_FlashSize;
   
   STM32_FlashSize=*(uint16_t*)(STM32XX_FlashAddr);    //读取对应芯片闪存容量寄存器,得到Flash大小
   printf("芯片的Flash容量为:%d\r\n",STM32_FlashSize);
 }

验证

  • 以原子的STM32开发板精英板做实验,精英板STM32芯片为 STM32F103ZET6,第11位为E,Flash大小则应为512K,我们通过读取芯片闪存容量寄存器做验证

  • 读取芯片闪存容量寄存器得到的值为0x0200,转换为10进制即为512,即该芯片的Flash容量为512K

好文分享:

本文参考STM32中文参考手册,若有错误地方欢迎批评指针,若本文对您有所帮助,转发、分享也是笔者坚持的动力

关注南风过境蜻蜓飞,开启物联网、嵌入式学习之旅

猜你喜欢

转载自blog.csdn.net/qq_42965739/article/details/105719999