读取STM32芯片的唯一ID和MAC地址

您所在的位置:网站首页 mac怎么查芯片 读取STM32芯片的唯一ID和MAC地址

读取STM32芯片的唯一ID和MAC地址

2024-02-19 20:01| 来源: 网络整理| 查看: 265

每个STM32微控制器都自带一个96位的唯一ID,这个ID在任何情况下都是唯一且不允许修改的,这96位的ID可以以字节(8位)为单位读取,也可以以半字(16位)或全字(32位)读取。不同型号的STM32芯片首地址不同,UID首地址也不同。

F1系列UID首地址——0x1ffff7e8F2和F4系列 ——0x1fff7a10F3和F0系列 ——0x1ffff7acF7系列 ——0x1ff0f420L0和L1系列 ——0x1ff80050L4系列 ——0x1fff7590H7系列 ——0x1ff0f420 获取MCU的唯一ID: /******************************************************************************* * Function Name : Get_MCU_ID * Description : 读取MCU的唯一ID * Input : pMcuID -- ID存放区指针 * Output : McuID * Return : 全字UID * Attention : STM32 96位(12字节)的产品唯一身份标识 基地址:0x1FFF F7E8 *******************/ uint32 Get_MCU_ID(uint8_t* pMcuID) { uint32 CpuID[3] = {0}; //获取CPU唯一ID #if 0//STM32F1系列 CpuID[0] =*(vu32*)(0x1ffff7e8); //按全字(32位)读取 CpuID[1] =*(vu32*)(0x1ffff7ec); CpuID[2] =*(vu32*)(0x1ffff7f0); #endif #if 1//STM32F4系列 CpuID[0]=*(vu32*)(0x1fff7a10); CpuID[1]=*(vu32*)(0x1fff7a14); CpuID[2]=*(vu32*)(0x1fff7a18); // /* printf the chipid */ // rt_kprintf("\r\n芯片的唯一ID为: %X-%X-%X\r\n", // CpuID[0],CpuID[1],CpuID[2]); // rt_kprintf("\r\n芯片flash的容量为: %dK \r\n", *(rt_uint16_t *)(0X1FFF7a22)); #endif //按字节(8位)读取 pMcuID[0] = (uint8_t)(CpuID[0] & 0x000000FF); pMcuID[1] = (uint8_t)((CpuID[0] & 0xFF00) >>8); pMcuID[2] = (uint8_t)((CpuID[0] & 0xFF0000) >>16); pMcuID[3] = (uint8_t)((CpuID[0] & 0xFF000000) >>24); pMcuID[4] = (uint8_t)(CpuID[1] & 0xFF); pMcuID[5] = (uint8_t)((CpuID[1] & 0xFF00) >>8); pMcuID[6] = (uint8_t)((CpuID[1] & 0xFF0000) >>16); pMcuID[7] = (uint8_t)((CpuID[1] & 0xFF000000) >>24); pMcuID[8] = (uint8_t)(CpuID[2] & 0xFF); pMcuID[9] = (uint8_t)((CpuID[2] & 0xFF00) >>8); pMcuID[10] = (uint8_t)((CpuID[2] & 0xFF0000) >>16); pMcuID[11] = (uint8_t)((CpuID[2] & 0xFF000000) >>24); return (CpuID[0]>>1)+(CpuID[1]>>2)+(CpuID[2]>>3); }

可根据MCU的唯一ID读取出MCU的MAC地址。

读取MCU的MAC地址: /*********************************************************************************************** * Function Name : CreateSysMAC * Description : 读取MCU的MAC地址 * Input : None * Output : MAC * Return : None ***********************************************************************************************/ void CreateSysMAC(uint8_t Key, uint8_t* pMacBuf) { uint32 uiMcuId = 0; uint8_t McuID[15] = {0}; int i = 0; uiMcuId = Get_MCU_ID(McuID); for(i=0; i8); pMacBuf[2] = (uint8_t)((uiMcuId & 0xFF0000) >>16); pMacBuf[3] = (uint8_t)((uiMcuId & 0xFF000000) >>24); pMacBuf[4] = McuID[12]; pMacBuf[5] = McuID[13]; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3