STM32笔记--芯片电子签名

人有身份证,芯片也一样,用在证明自己的身份且是唯一的,每一颗芯片也有属于自己的身份证,即电子签名,STM32用一个96位的产品唯一身份标识寄存器来存放自己的电子签名

用途说明

  • 用来作为序列号(例如USB字符序列号或者其他的终端应用)
  • 用来作为密码,在编写闪存时,将此唯一标识与软件加解密算法结合使用,提高代码在闪存存储器内的安全性。
  • 用来激活带安全机制的自举过程

应用举例

  • 根据官方参考手册,该寄存器可读,但不可写,即用户不能进行更改,96 位的唯一设备标识符可以以单字节/半字/字等不同方式读取
  • 网上查询资料得到STM32各个系列芯片电子签名的基地址,如下所示
  • 采取按字读取,应用举例如下:
//STM32各个系列芯片电子签名的基地址
 #include STM32F0_BaseAddr   0x1FFFF7AC  //STM32F0唯一ID起始地址
 #include STM32F1_BaseAddr   0x1FFFF7E8  //STM32F1唯一ID起始地址
 #include STM32F2_BaseAddr   0x1FFF7A10  //STM32F2唯一ID起始地址
 #include STM32F3_BaseAddr   0x1FFFF7AC  //STM32F3唯一ID起始地址
 #include STM32F4_BaseAddr   0x1FFF7A10  //STM32F4唯一ID起始地址
 #include STM32F7_BaseAddr   0x1FF0F420  //STM32F7唯一ID起始地址
 #include STM32L0_BaseAddr   0x1FF80050  //STM32L0唯一ID起始地址
 #include STM32L1_BaseAddr   0x1FF80050  //STM32L1唯一ID起始地址
 #include STM32L4_BaseAddr   0x1FFF7590  //STM32L4唯一ID起始地址
 #include STM32H7_BaseAddr   0x1FF0F420  //STM32H7唯一ID起始地址
  
 //获取MCU的电子签名
 //读取唯一身份识别ID的时候要注意存储方式是小端模式
 void GetSTM32MCUID(uint32_t STM32XX_BaseAddr)
 {
    
    
   uint32_t STM32_MCUID[3];
   
   STM32_MCUID[0]=*(uint32_t*)(STM32XX_BaseAddr+8);    //ID地址的高32位寄存器地址
   STM32_MCUID[1]=*(uint32_t*)(STM32XX_BaseAddr+4);    //ID地址的中32位寄存器地址
   STM32_MCUID[2]=*(uint32_t*)(STM32XX_BaseAddr);      //ID地址的低32位寄存器地址
   printf("此芯片的唯一ID为:%d-%d-%d\r\n",STM32_MCUID[0],STM32_MCUID[1],STM32_MCUID[2]);
 }

好文分享:

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

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

猜你喜欢

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