Espressif released two chip revisions so far: Rev 0 and Rev 1
Rev 0 had a number of bugs.
Espessif released a workaround for the ECO.
To find the revision of an ESP32 chip two options are available:
- Use the esptool
- Flash your board with the appropriate code to display revision
Intro
Before starting make sure you have installed ESP32 on your machine. If you are on windows follow this tutorial:
Steps to install Arduino ESP32 support on Windows
Do not forget to check if this issue affects your configuration.
Use the esptool
Download the esptool depending on your operating system:
- Linux/Unix/Mac: esptool.py
- Windows: esptool (770 downloads )
To get the board details run the following command:
esptool --port PORTNUMBER flash_id
So for example on windows:
PS T:\Documents\code\arduino> .\esptool.exe --port COM25 flash_id esptool.py v2.1 Connecting.... Detecting chip type... ESP32 Chip is ESP32D0WDQ6 (revision 1) Uploading stub... Running stub... Stub running... Manufacturer: ef Device: 4017 Detected flash size: 8MB Hard resetting... PS T:\Documents\code\arduino>
Chip is ESP32D0WDQ6 (revision 1) indicates chip ID and revision number.
The same applies for unix/linux:
# python esptool.py --port COMXX flash_id
Flash your board
Alternatively you can flash your board using the following code found on A.Spiess site: (Download: ( ESP32_Version.ino (540 downloads ) )
/* This sketch reads the version number of hte ESP32 chip 2017-07-17 Andreas Spiess */ #include "soc/efuse_reg.h" int getChipRevision() { return (REG_READ(EFUSE_BLK0_RDATA3_REG) >> (EFUSE_RD_CHIP_VER_RESERVE_S)&&EFUSE_RD_CHIP_VER_RESERVE_V) ; } void setup() { Serial.begin(115200); delay(200); Serial.print("REG_READ(EFUSE_BLK0_RDATA3_REG) "); Serial.println(REG_READ(EFUSE_BLK0_RDATA3_REG), BIN); Serial.print("EFUSE_RD_CHIP_VER_RESERVE_S "); Serial.println(EFUSE_RD_CHIP_VER_RESERVE_S, BIN); Serial.print("EFUSE_RD_CHIP_VER_RESERVE_V "); Serial.println(EFUSE_RD_CHIP_VER_RESERVE_V, BIN); Serial.println(); Serial.print("Chip Revision (official version): "); Serial.println(getChipRevision()); Serial.print("Chip Revision from shift Operation "); Serial.println(REG_READ(EFUSE_BLK0_RDATA3_REG) >> 15, BIN); } // the loop function runs over and over again forever void loop() { }
The video explaining the process is here:
Leave A Comment