STM32
直播中

硬件工程师1

9年用户 1561经验值
擅长:可编程逻辑
私信 关注
[问答]

如何根据STM32官方的芯片命名来识别Flash的大小呢

STM32芯片容量可分为哪几类呢?
如何根据STM32官方的芯片命名来识别Flash的大小呢?



回帖(1)

臧超楠

2021-12-2 09:30:52
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容量的基地址
#define STM32F0_FlashAddr   0x1FFFF7CC   //STM32F0 Flash容量基地址
#define STM32F1_FlashAddr   0x1FFFF7E0   //STM32F1 Flash容量基地址
#define STM32F2_FlashAddr   0x1FFF7A22   //STM32F2 Flash容量基地址
#define STM32F3_FlashAddr   0x1FFFF7CC   //STM32F3 Flash容量基地址
#define STM32F4_FlashAddr   0x1FFF7A22   //STM32F4 Flash容量基地址
#define STM32F7_FlashAddr   0x1FF0F442   //STM32F7 Flash容量基地址
#define STM32L0_FlashAddr   0x1FF8007C   //STM32L0 Flash容量基地址
#define STM32L1_FlashAddr   0x1FF8004C   //STM32L1 Flash容量基地址
#define STM32L4_FlashAddr   0x1FFF75E0   //STM32L4 Flash容量基地址
#define 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容量为:%drn",STM32_FlashSize);
}
验证




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









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

举报

更多回帖

发帖
×
20
完善资料,
赚取积分