Consolidate esp32 hardware info

This commit is contained in:
Theo Arends 2023-08-25 12:48:35 +02:00
parent 343618411c
commit d5b12c8718
2 changed files with 172 additions and 175 deletions

View File

@ -887,18 +887,23 @@ typedef struct {
*/
esp_chip_info_t chip_info;
esp_chip_info(&chip_info);
uint32_t chip_model = chip_info.model;
uint32_t chip_revision = chip_info.revision;
// uint32_t chip_revision = ESP.getChipRevision();
// idf5 efuse_hal_chip_revision(void)
if (chip_revision >= 100) { chip_revision /= 100; }
bool rev3 = (3 == chip_revision);
if (chip_revision < 100) { chip_revision *= 100; } // Make <idf5 idf5
bool rev3 = (chip_revision >= 300);
// bool single_core = (1 == ESP.getChipCores());
bool single_core = (1 == chip_info.cores);
if (chip_model < 2) { // ESP32
uint32_t pkg_version = 0;
#if (ESP_IDF_VERSION_MAJOR >= 5)
pkg_version = bootloader_common_get_chip_ver_pkg();
#endif
switch (chip_model) {
case 0:
case 1: { // ESP32
/*
ESP32 Series
- 32-bit MCU & 2.4 GHz Wi-Fi & Bluetooth/Bluetooth LE
@ -918,14 +923,11 @@ typedef struct {
pkg_version += ((word3 >> 2) & 0x1) << 3
return pkg_version
*/
#if (ESP_IDF_VERSION_MAJOR >= 5)
uint32_t pkg_version = bootloader_common_get_chip_ver_pkg();
#else
uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG);
uint32_t pkg_version = chip_ver & 0x7;
#if (ESP_IDF_VERSION_MAJOR < 5)
pkg_version = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG) & 0x7;
#endif
// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver);
// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d"), chip_info.model, chip_revision, chip_info.cores);
switch (pkg_version) {
case 0:
@ -952,7 +954,7 @@ typedef struct {
#endif // CONFIG_IDF_TARGET_ESP32
return F("ESP32");
}
else if (2 == chip_model) { // ESP32-S2
case 2: { // ESP32-S2
/*
ESP32-S2 Series
- 32-bit MCU & 2.4 GHz Wi-Fi
@ -978,9 +980,11 @@ typedef struct {
pkg_version = (word3 >> 28) & 0x0F
return pkg_version
*/
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_FLASH_VERSION);
#if (ESP_IDF_VERSION_MAJOR < 5)
pkg_version = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_FLASH_VERSION) & 0xF;
#endif
uint32_t psram_ver = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PSRAM_VERSION);
uint32_t pkg_version = (chip_ver & 0xF) + ((psram_ver & 0xF) * 100);
pkg_version += ((psram_ver & 0xF) * 100);
// AddLog(LOG_LEVEL_DEBUG_MORE, PSTR("HDW: ESP32 Model %d, Revision %d, Core %d, Package %d"), chip_info.model, chip_revision, chip_info.cores, chip_ver);
@ -995,10 +999,7 @@ typedef struct {
#endif // CONFIG_IDF_TARGET_ESP32S2
return F("ESP32-S2");
}
else if (4 == chip_model) { // ESP32-S3(beta2)
return F("ESP32-S3");
}
else if (5 == chip_model) { // ESP32-C3 = ESP8685
case 5: { // ESP32-C3 = ESP8685 if embedded flash
/*
ESP32-C3 Series
- 32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
@ -1009,22 +1010,22 @@ typedef struct {
- Rich set of peripheral interfaces and GPIOs, ideal for various scenarios and complex applications
*/
#ifdef CONFIG_IDF_TARGET_ESP32C3
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION);
uint32_t pkg_version = chip_ver & 0x7;
#if (ESP_IDF_VERSION_MAJOR < 5)
pkg_version = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION) & 0x7;
#endif
switch (pkg_version) {
case 0: return F("ESP32-C3"); // Max 160MHz, Single core, QFN 5*5, ESP32-C3-WROOM-02, ESP32-C3-DevKitC-02
case 1: return F("ESP32-C3FH4"); // Max 160MHz, Single core, QFN 5*5, 4MB embedded flash, ESP32-C3-MINI-1, ESP32-C3-DevKitM-1
// case 1: return F("ESP32-C3FH4"); // Max 160MHz, Single core, QFN 5*5, 4MB embedded flash, ESP32-C3-MINI-1, ESP32-C3-DevKitM-1
case 1: return F("ESP8685"); // Max 160MHz, Single core, QFN 5*5, 4MB embedded flash, ESP32-C3-MINI-1, ESP32-C3-DevKitM-1
case 2: return F("ESP32-C3 AZ"); // QFN32
case 3: return F("ESP8686"); // QFN24
}
#endif // CONFIG_IDF_TARGET_ESP32C3
return F("ESP32-C3");
}
else if (6 == chip_model) { // ESP32-S3(beta3)
return F("ESP32-S3");
}
else if (7 == chip_model) { // ESP32-C6(beta)
return F("ESP32-C6");
}
else if (9 == chip_model) { // ESP32-S3
case 4: // ESP32-S3(beta2)
case 6: // ESP32-S3(beta3)
case 9: { // ESP32-S3
/*
ESP32-S3 Series
- 32-bit MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
@ -1035,21 +1036,18 @@ typedef struct {
- Reliable security features ensured by RSA-based secure boot, AES-XTS-based flash encryption, the innovative digital signature and the HMAC peripheral, World Controller
*/
#ifdef CONFIG_IDF_TARGET_ESP32S3
#if (ESP_ARDUINO_VERSION_MAJOR > 2)
#if (ESP_IDF_VERSION_MAJOR >= 5)
// chip-debug-report.cpp
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION);
uint32_t pkg_version = chip_ver & 0x7;
// pkg_version = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION) & 0x7;
switch (pkg_version) {
case 0: return F("ESP32-S3");
case 0: return F("ESP32-S3"); // QFN56
case 1: return F("ESP32-S3-PICO-1"); // LGA56
}
#endif
#endif // CONFIG_IDF_TARGET_ESP32S3
return F("ESP32-S3"); // Max 240MHz, Dual core, QFN 7*7, ESP32-S3-WROOM-1, ESP32-S3-DevKitC-1
}
else if (10 == chip_model) { // ESP32-H2(beta1)
return F("ESP32-H2");
}
else if (12 == chip_model) { // ESP32-C2 = ESP8684
case 12: { // ESP32-C2 = ESP8684 if embedded flash
/*
ESP32-C2 Series
- 32-bit RISC-V MCU & 2.4 GHz Wi-Fi & Bluetooth 5 (LE)
@ -1060,16 +1058,16 @@ typedef struct {
*/
#ifdef CONFIG_IDF_TARGET_ESP32C2
// chip-debug-report.cpp
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_BLK2_DATA1_REG, EFUSE_PKG_VERSION);
uint32_t pkg_version = chip_ver & 0x7;
// pkg_version = REG_GET_FIELD(EFUSE_RD_BLK2_DATA1_REG, EFUSE_PKG_VERSION) & 0x7;
switch (pkg_version) {
case 0: return F("ESP32-C2");
case 1: return F("ESP32-C2");
}
#endif // CONFIG_IDF_TARGET_ESP32C2
return F("ESP32-C2");
}
else if (13 == chip_model) { // ESP32-C6
case 7: // ESP32-C6(beta)
case 13: { // ESP32-C6
/*
ESP32-C6 Series
- 32-bit RISC-V MCU & 2.4 GHz Wi-Fi 6 & Bluetooth 5 (LE) & IEEE 802.15.4
@ -1080,36 +1078,35 @@ typedef struct {
*/
#ifdef CONFIG_IDF_TARGET_ESP32C6
// chip-debug-report.cpp
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION);
uint32_t pkg_version = chip_ver & 0x7;
// pkg_version = REG_GET_FIELD(EFUSE_RD_MAC_SPI_SYS_3_REG, EFUSE_PKG_VERSION) & 0x7;
switch (pkg_version) {
case 0: return F("ESP32-C6");
case 1: return F("ESP32-C6FH4");
}
#endif // CONFIG_IDF_TARGET_ESP32C6
return F("ESP32-C6");
}
else if (14 == chip_model) { // ESP32-H2(beta2)
return F("ESP32-H2");
}
else if (16 == chip_model) { // ESP32-H2
case 10: // ESP32-H2(beta1)
case 14: // ESP32-H2(beta2)
case 16: { // ESP32-H2
#ifdef CONFIG_IDF_TARGET_ESP32H2
// chip-debug-report.cpp
uint32_t chip_ver = REG_GET_FIELD(EFUSE_RD_MAC_SYS_4_REG, EFUSE_PKG_VERSION);
uint32_t pkg_version = chip_ver & 0x7;
// pkg_version = REG_GET_FIELD(EFUSE_RD_MAC_SYS_4_REG, EFUSE_PKG_VERSION) & 0x7;
switch (pkg_version) {
case 0: return F("ESP32-H2");
}
#endif // CONFIG_IDF_TARGET_ESP32H2
return F("ESP32-H2");
}
}
return F("ESP32");
}
String GetDeviceHardwareRevision(void) {
// ESP32-S2
// ESP32-D0WDQ6 rev.1
// ESP32-C3 rev.2
// ESP32-C3 rev.3
// ESP32-D0WDQ6 v1.0
// ESP32-C3 v2.0
// ESP32-C3 v3.0
String result = GetDeviceHardware(); // ESP32-C3
esp_chip_info_t chip_info;
@ -1119,8 +1116,8 @@ String GetDeviceHardwareRevision(void) {
uint32_t chip_revision = chip_info.revision;
if (chip_revision < 100) { chip_revision *= 100; } // Make <idf5 idf5
char revision[16];
snprintf_P(revision, sizeof(revision), PSTR(" rev %d.%d"), chip_revision / 100, chip_revision % 100);
result += revision; // ESP32-C3 rev 3.0
snprintf_P(revision, sizeof(revision), PSTR(" v%d.%d"), chip_revision / 100, chip_revision % 100);
result += revision; // ESP32-C3 v3.0
}
return result;
@ -1152,13 +1149,12 @@ bool CanUsePSRAM(void) {
esp_chip_info(&chip_info);
uint32_t chip_revision = chip_info.revision;
// idf5 efuse_hal_chip_revision(void)
if (chip_revision >= 100) { chip_revision /= 100; }
if ((CHIP_ESP32 == chip_info.model) && (chip_revision < 3)) {
if (chip_revision < 100) { chip_revision *= 100; } // Make <idf5 idf5
if ((CHIP_ESP32 == chip_info.model) && (chip_revision < 300)) {
return false;
}
#if ESP_IDF_VERSION_MAJOR < 4
uint32_t chip_ver = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG);
uint32_t pkg_version = chip_ver & 0x7;
uint32_t pkg_version = REG_GET_FIELD(EFUSE_BLK0_RDATA3_REG, EFUSE_RD_CHIP_VER_PKG) & 0x7;
if ((CHIP_ESP32 == chip_info.model) && (pkg_version >= 6)) {
return false; // support for embedded PSRAM of ESP32-PICO-V3-02 requires esp-idf 4.4
}

View File

@ -124,7 +124,8 @@ static void IRAM_ATTR RotaryIsrArgMiDesk(void *arg) {
encoder->state = (state >> 2);
}
void IRAM_ATTR RotaryIsrArg(void *arg) {
void IRAM_ATTR RotaryIsrArg(void *arg);
void RotaryIsrArg(void *arg) {
tEncoder* encoder = static_cast<tEncoder*>(arg);
// Theo Arends