Skip to content

Commit 81be80b

Browse files
authored
FIX max GPIO and add C5 dangerous and special GPIOs (arendst#23806)
* add C5 dangerous and special GPIOs * Fix max GPIO and flash / red pins (arendst#517)
1 parent 050dcdf commit 81be80b

3 files changed

Lines changed: 14 additions & 10 deletions

File tree

tasmota/include/tasmota_template.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1426,13 +1426,13 @@ const char PINS_WEMOS[] PROGMEM = "AOAOAOAOAOAOIOIOIOIOIOFLFLFLFLFLFLFLIOIORXTX"
14261426
/* ****************************************
14271427
* ESP32C5
14281428
* ****************************************/
1429-
#define MAX_GPIO_PIN 27 // Number of supported GPIO
1430-
#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO24 to 26)
1431-
#define MAX_USER_PINS 27 // MAX_GPIO_PIN - MIN_FLASH_PINS
1429+
#define MAX_GPIO_PIN 29 // Number of supported GPIO
1430+
#define MIN_FLASH_PINS 0 // Number of flash chip pins unusable for configuration (GPIO16-22 SPI0/1)
1431+
#define MAX_USER_PINS 29 // MAX_GPIO_PIN - MIN_FLASH_PINS
14321432
#define WEMOS_MODULE 0 // Wemos module
14331433

1434-
// 0 1 2 3 4 5 6 7 8 91011121314151617181920212223242526
1435-
const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOIOIOIOIOIOIOIOIOIOIOIOFLFLFLIOFLFLFLIOIO";
1434+
// 0 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829
1435+
const char PINS_WEMOS[] PROGMEM = "IOAOAOAOAOAOAOIOIOIOIOIOIOIOFLFLFLFLFLFLFLIOIOIOIOIOIOIOIOIO";
14361436

14371437
#elif CONFIG_IDF_TARGET_ESP32C6
14381438

tasmota/include/tasmota_types.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -662,26 +662,26 @@ typedef struct {
662662
// -----------------------------------------------------------------------
663663
// Mapping 0x3AC to 0x496 for ESP32, ESP32C2, ESP32C3, ESP32C5 and ESP32C6
664664
// -----------------------------------------------------------------------
665-
myio my_gp; // 3AC 2x40 bytes (ESP32) / 2x21 bytes (ESP32-C2) / 2x22 bytes (ESP32-C3) / 2x27 bytes (ESP32-C5) / 2x31 bytes (ESP32-C6)
665+
myio my_gp; // 3AC 2x40 bytes (ESP32) / 2x21 bytes (ESP32-C2) / 2x22 bytes (ESP32-C3) / 2x29 bytes (ESP32-C5) / 2x31 bytes (ESP32-C6)
666666

667667
#if CONFIG_IDF_TARGET_ESP32C2
668668
uint8_t free_esp32c2_3D6[38]; // 3D6 - Due to smaller myio
669669
#elif CONFIG_IDF_TARGET_ESP32C3
670670
uint8_t free_esp32c3_3D8[36]; // 3D8 - Due to smaller myio
671671
#elif CONFIG_IDF_TARGET_ESP32C5
672-
uint8_t free_esp32c5_3E2[26]; // 3E2 - Due to smaller myio
672+
uint8_t free_esp32c5_3E4[22]; // 3E4 - Due to smaller myio
673673
#elif CONFIG_IDF_TARGET_ESP32C6
674674
uint8_t free_esp32c6_3EA[18]; // 3EA - Due to smaller myio
675675
#endif // CONFIG_IDF_TARGET_ESP32C2/3/5/6
676676

677-
mytmplt user_template; // 3FC 2x37 bytes (ESP32) / 2x22 bytes (ESP32-C2) / 2x23 bytes (ESP32-C3) / 2x28 bytes (ESP32-C5) / 2x32 bytes (ESP32-C6)
677+
mytmplt user_template; // 3FC 2x37 bytes (ESP32) / 2x22 bytes (ESP32-C2) / 2x23 bytes (ESP32-C3) / 2x30 bytes (ESP32-C5) / 2x32 bytes (ESP32-C6)
678678

679679
#if CONFIG_IDF_TARGET_ESP32C2
680680
uint8_t free_esp32c2_428[30]; // 428 - Due to smaller mytmplt
681681
#elif CONFIG_IDF_TARGET_ESP32C3
682682
uint8_t free_esp32c3_42A[28]; // 42A - Due to smaller mytmplt
683683
#elif CONFIG_IDF_TARGET_ESP32C5
684-
uint8_t free_esp32c5_434[18]; // 434 - Due to smaller mytmplt
684+
uint8_t free_esp32c5_438[14]; // 438 - Due to smaller mytmplt
685685
#elif CONFIG_IDF_TARGET_ESP32C6
686686
uint8_t free_esp32c6_43C[10]; // 43C - Due to smaller mytmplt
687687
#endif // CONFIG_IDF_TARGET_ESP32C2/3/5/6

tasmota/tasmota_support/support.ino

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1786,6 +1786,8 @@ bool FlashPin(uint32_t pin) {
17861786
return (((pin > 10) && (pin < 12)) || ((pin > 13) && (pin < 18))); // ESP32C3 has GPIOs 11-17 reserved for Flash, with some boards GPIOs 12 13 are useable
17871787
#elif CONFIG_IDF_TARGET_ESP32C3
17881788
return ((pin > 13) && (pin < 18)); // ESP32C3 has GPIOs 11-17 reserved for Flash, with some boards GPIOs 11 12 13 are useable
1789+
#elif CONFIG_IDF_TARGET_ESP32C5
1790+
return ((pin > 15) && (pin < 23)); // ESP32C5 has GPIOs 16-22 reserved for Flash
17891791
#elif CONFIG_IDF_TARGET_ESP32C6
17901792
return ((pin == 24) || (pin == 25) || (pin == 27) || (pin == 29) || (pin == 30)); // ESP32C6 has GPIOs 24-30 reserved for Flash, with some boards GPIOs 26 28 are useable
17911793
#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3
@@ -1794,7 +1796,7 @@ bool FlashPin(uint32_t pin) {
17941796
return false; // ESP32P4 has no flash pins, but GPIOs 34-38 are strapping pins
17951797
#else
17961798
return (pin >= 28) && (pin <= 31); // ESP32 skip 28-31
1797-
#endif // ESP32C2/C3/C6 and S2/S3
1799+
#endif // ESP32C2/C3/C5/C6 and S2/S3
17981800
#endif // ESP32
17991801
}
18001802

@@ -1807,6 +1809,8 @@ bool RedPin(uint32_t pin) { // Pin may be dangerous to change, displa
18071809
return (12 == pin) || (13 == pin); // ESP32C2: GPIOs 12 13 are usually used for Flash (mode QIO/QOUT)
18081810
#elif CONFIG_IDF_TARGET_ESP32C3
18091811
return (11 == pin) || (12 == pin) || (13 == pin); // ESP32C3: GPIOs 11 12 13 are usually used for Flash (mode QIO/QOUT)
1812+
#elif CONFIG_IDF_TARGET_ESP32C5
1813+
return (2 == pin) || (7 == pin) || (25 == pin) || (27 == pin) || (28 == pin); // ESP32C5: GPIO2,7,25,27,28 are strapping pins
18101814
#elif CONFIG_IDF_TARGET_ESP32C6
18111815
return (26 == pin) || (28 == pin); // ESP32C6: GPIOs 26 28 are usually used for Flash (mode QIO/QOUT)
18121816
#elif CONFIG_IDF_TARGET_ESP32S2

0 commit comments

Comments
 (0)