如何读取STM32唯一设备标识符UID

1.UID的介绍

STM32微控制器(MCU)的唯一UID(Unique ID)是一个独特的标识符,用于区分不同的芯片。每个STM32芯片都有一个唯一的UID,由96位的数据组成。这个唯一UID不是由用户编程设置的,而是在制造过程中由芯片上的专用电路生成的。

STM32 MCU的唯一UID通常由三个32位的数据组成:X、Y和W。这些数据可以通过MCU的FLASH寄存器访问。以下是各个部分的简要介绍:

  1. X部分(32位):它包含制造商标识和系列号。其中包含了制造商ID、产品系列ID和产品版本ID等信息。

  2. Y部分(32位):它包含制造日期和批次号。其中包含了制造日期、批次号和一些其它相关信息。

  3. 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.运行结果

用串口助手打印的结果如下:

物联沃分享整理
物联沃-IOTWORD物联网 » 如何读取STM32唯一设备标识符UID

发表评论