mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-25 11:46:31 +00:00
Consolidate esp32 hardware info
This commit is contained in:
parent
343618411c
commit
d5b12c8718
@ -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
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user