STM32唯一身份识别ID(器件电子签名)的读取以及芯片Flash大小读取
每个STM32有一个独立的ID,这个ID可以用来:
产品唯一的身份标识的作用:
● 用来作为序列号(例如USB字符序列号或者其他的终端应用);
● 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性;
● 用来激活带安全机制的自举过程;
以STM32F103CBT6来说,使用四个寄存器来存储这个ID,读取方式为:
void GetChipUniqueID(void) { u32 chipUniqueID32[3]; chipUniqueID32[0] = *(__IO u32*)(0X1FFFF7F2);//ID地址的高32位寄存器地址 chipUniqueID32[1] = *(__IO u32*)(0X1FFFF7EE);//ID地址的中32位寄存器地址 chipUniqueID32[2] = *(__IO u32*)(0X1FFFF7E8);//ID地址的低32位寄存器地址 printf("此芯片的唯一ID为:%d-%d-%d\r\n",chipUniqueID32[0],chipUniqueID32[2],chipUniqueID32[2]); }
注意:在读取唯一身份识别ID的时候要注意存储方式是小端模式。
读取Flash大小的方式为:
void GetFlashSize(void) { u16 Stm32_Flash_Size; Stm32_Flash_Size = *(u16*)(0x1FFFF7E0);//闪存容量寄存器 printf("芯片闪存容量大小为%dK\r\n",Stm32_Flash_Size); }