在STM32的全系列MCU中均有一个96位的唯一设备标识符。在ST的相关资料中,对其功能的描述有3各方面:
用作序列号(例如 USB 字符串序列号或其它终端应用程序)
在对内部 Flash 进行编程前将唯一 ID 与软件加密原语和协议结合使用时用作安全密钥以提高 Flash 中代码的安全性
激活安全自举过程等
在资料中对其特性的描述是:96 位的唯一设备标识符提供了一个对于任何设备和任何上下文都唯一的参考号码。用户永远不能改变这些位。96 位的唯一设备标识符也可以以单字节/半字/字等不同方式读取,然后使用自定义算法连接起来。
想要读取唯一ID,就需要知道它的存储地址,在不同系列的MCU中地址是有差别的,我们查询了部分MCU的资料并将其总结如下:
20190323134230206_.png G4 0x1fff7590
STM32G030利用UID和OTP区域
https://blog.csdn.net/qq_43448742/article/details/106917836
void Get_CPU_ID(void)
{
//read CPU ID,stm32lxx,add+4
CpuID[0] = *(__IO u32 *)(0X1FF80058);
CpuID[1] = *(__IO u32 *)(0X1FF80054);
CpuID[2] = *(__IO u32 *)(0X1FF80050);
}
int main(void)
{
…
printf(“rn###########CPU ID:%X-%X-%X\r\n”,CpuID[0],CpuID[1],CpuID[2]);
网友评论