这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 【M5stackS3】读取ESP32芯片的MAC地址信息

共1条 1/1 1 跳转至

【M5stackS3】读取ESP32芯片的MAC地址信息

高工
2026-06-18 14:53:22     打赏

一:芯片的MAC:

    ESP32的MAC地址由芯片在生产时烧录,是唯一且固定的。在大多数开发场景中,它就被当作芯片的ID来使用

    它本质上是在芯片出厂时,由乐鑫(Espressif)公司写入一次性可编程存储器(eFuse)的一组固定数据。这组数据不可更改,全球唯一。

    除了MAC地址,eFuse里还存着芯片型号(如ESP32-S3)、晶圆批次、修订版本等信息。你读取到的ID,正是这些底层硬件信息的数字化体现。

二:设备ID的用途

    这是它最重要的作用。你可以把它当作设备的“身份证号”:

2.1 云端绑定:

    智能家居设备(如智能灯、插座)首次配网时,会将芯片ID上报给服务器,服务器用这个ID来绑定设备,确保后续下发的指令不会发错对象。

2.2 防止克隆:

    因为ID无法篡改,服务器可以验证连接过来的设备是否为正版硬件,防止别人用伪造的硬件盗用你的账号权限。

    生成设备默认名称与密码许多路由器或蓝牙扫描列表里,会看到类似 ESP_123456 的设备名。这个后缀 123456 通常就是取芯片MAC地址或ID的后几位转换而成,方便你区分家里多个同款设备。某些场景下,它也被用作出厂默认的AP(热点)密码。

2.3 产品追溯与库存管理

    在生产环节,工厂可以扫描每个设备的芯片ID,将其与产品序列号(SN)关联。一旦售出的产品出现故障,厂家能通过你提供的ID,回溯到具体的生产批次、测试数据和原始固件版本。

2.4 离线数据加密(掩码)

    在不需要联网的场景下,这个ID可以作为加密算法的掩码(Salt)。比如,你用它结合一个固定密钥,对存储在Flash里的配置文件进行加密。这样即使有人把Flash拆下来读数据,由于缺少芯片内部ID,也无法解密。

三:软件代码:

uint32_t chipId = 0;

void setup() {
  Serial.begin(115200);
}

void loop() {
  for (int i = 0; i < 17; i = i + 8) {
    chipId |= ((ESP.getEfuseMac() >> (40 - i)) & 0xff) << i;
  }

  Serial.printf("ESP32 Chip model = %s Rev %un", ESP.getChipModel(), ESP.getChipRevision());
  Serial.printf("This chip has %u coresn", ESP.getChipCores());
  Serial.print("Chip ID: ");
  Serial.println(chipId);

  delay(1000);
}
四:图片验证:

08-1.png





关键词: stack     芯片     地址    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]