1.UID的介绍
STM32微控制器(MCU)的唯一UID(Unique ID)是一个独特的标识符,用于区分不同的芯片。每个STM32芯片都有一个唯一的UID,由96位的数据组成。这个唯一UID不是由用户编程设置的,而是在制造过程中由芯片上的专用电路生成的。
STM32 MCU的唯一UID通常由三个32位的数据组成:X、Y和W。这些数据可以通过MCU的FLASH寄存器访问。以下是各个部分的简要介绍:
-
X部分(32位):它包含制造商标识和系列号。其中包含了制造商ID、产品系列ID和产品版本ID等信息。
-
Y部分(32位):它包含制造日期和批次号。其中包含了制造日期、批次号和一些其它相关信息。
-
W部分(32位):这是Firmware Revision ID(固件版本标识符),用于描述芯片的固件版本信息。
通过读取这些UID部分的数值,您可以获得用于区分不同STM32芯片的独特ID。可以使用芯片厂商提供的驱动库或固件库中的API来读取UID,以便在应用程序中使用这些ID进行唯一性标识或安全验证等操作。
需要注意的是,UID是在芯片制造过程中生成的,因此在同一型号的芯片中是唯一的。但是,在不同的STM32芯片型号之间,UID可能会有所不同。因此,在处理UID时应该小心,避免将它用于跨型号或不适当的用途。
2.部分MCU的资料:
3.获取UID的代码
void Secrecy_GetUID(uint32_t * pBuf)
{
pBuf[0] = *(uint32_t*)(0x1FFF7A10);
pBuf[1] = *(uint32_t*)(0x1FFF7A14);
pBuf[2] = *(uint32_t*)(0x1FFF7A18);
printf("pBuf[0]=%#x\n",pBuf[0]);
printf("pBuf[1]=%#x\n",pBuf[1]);
printf("pBuf[2]=%#x\n",pBuf[2]);
}
这是F407的UID地址,不同型号的更改地址就可以了
4.运行结果
用串口助手打印的结果如下: