STM32唯一身份识别ID(器件电子签名)的读取以及芯片Flash大小读取

时间:2024-02-23 22:44:52

每个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);

}