diff --git a/cores/esp32/Esp.cpp b/cores/esp32/Esp.cpp index e80a5e92272..59211445d78 100644 --- a/cores/esp32/Esp.cpp +++ b/cores/esp32/Esp.cpp @@ -212,3 +212,11 @@ bool EspClass::flashRead(uint32_t offset, uint32_t *data, size_t size) { return spi_flash_read(offset, (uint32_t*) data, size) == ESP_OK; } + + +uint64_t EspClass::getEfuseMac(void) +{ + uint64_t _chipmacid; + esp_efuse_read_mac((uint8_t*) (&_chipmacid)); + return _chipmacid; +} diff --git a/cores/esp32/Esp.h b/cores/esp32/Esp.h index 2af27de9cf7..80e995a6e16 100644 --- a/cores/esp32/Esp.h +++ b/cores/esp32/Esp.h @@ -76,6 +76,8 @@ class EspClass bool flashWrite(uint32_t offset, uint32_t *data, size_t size); bool flashRead(uint32_t offset, uint32_t *data, size_t size); + uint64_t getEfuseMac(); + }; extern EspClass ESP; diff --git a/libraries/ESP32/examples/ChipID/GetChipID/GetChipID.ino b/libraries/ESP32/examples/ChipID/GetChipID/GetChipID.ino new file mode 100644 index 00000000000..de8a7386b93 --- /dev/null +++ b/libraries/ESP32/examples/ChipID/GetChipID/GetChipID.ino @@ -0,0 +1,14 @@ +uint64_t chipid; + +void setup() { + Serial.begin(115200); +} + +void loop() { + chipid=ESP.getEfuseMac();//The chip ID is essentially its MAC address(length: 6 bytes). + Serial.printf("ESP32 Chip ID = %04X",(uint16_t)(chipid>>32));//print High 2 bytes + Serial.printf("%08X\n",(uint32_t)chipid);//print Low 4bytes. + + delay(3000); + +}