[ESP32P4] Add more warnings for specific GPIO pins

This commit is contained in:
TD-er
2025-07-09 12:29:02 +02:00
parent e4c60dc6bc
commit e56326ad88
6 changed files with 90 additions and 35 deletions
+2 -2
View File
@@ -166,7 +166,7 @@ extra_scripts = ${esp82xx_common.extra_scripts}
; ESP_IDF 5.4.1
[core_esp32_IDF5_4_1__3_2_0_LittleFS]
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF54
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3765/framework-arduinoespressif32-all-release_v5.4-3138bf0e.zip
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3772/framework-arduinoespressif32-all-release_v5.4-ef69115d.zip
build_flags = -DESP32_STAGE
-DESP_IDF_VERSION_MAJOR=5
-DLIBRARIES_NO_LOG=1
@@ -195,7 +195,7 @@ lib_extra_dirs =
; ESP_IDF 5.5.0
[core_esp32_IDF5_5_0__3_2_0_LittleFS]
platform = https://github.com/Jason2866/platform-espressif32.git#Arduino/IDF55
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3770/framework-arduinoespressif32-all-release_v5.5-1bc6b44d.zip
platform_packages = framework-arduinoespressif32 @ https://github.com/Jason2866/esp32-arduino-lib-builder/releases/download/3774/framework-arduinoespressif32-all-release_v5.5-29017369.zip
build_flags = -DESP32_STAGE
-DESP_IDF_VERSION_MAJOR=5
-DLIBRARIES_NO_LOG=1
+1
View File
@@ -2,3 +2,4 @@ platformio==6.1.18
pygit2>=1.10.1
cryptography==44.0.1
setuptools>=75.8
uv
@@ -27,6 +27,10 @@
#include "include/esp32x_fixes.h"
#endif
#if CONFIG_ETH_USE_ESP32_EMAC
#include <pins_arduino.h>
#endif
/*
// VariousBits1 defaults to 0, keep in mind when adding bit lookups.
template<unsigned int N_TASKS>
@@ -1207,12 +1211,31 @@ bool SettingsStruct_tmpl<N_TASKS>::isEthernetPin(int8_t pin) const {
if (pin < 0) return false;
if (NetworkMedium == NetworkMedium_t::Ethernet &&
!isSPI_EthernetType(ETH_Phy_Type)) {
#if CONFIG_ETH_USE_ESP32_EMAC
#ifdef ESP32P4
switch (pin) {
// MDC/MDIO/Power can be configured by user
//case ETH_PHY_MDC :
//case ETH_PHY_MDIO :
//case ETH_PHY_POWER :
case ETH_RMII_TX_EN :
case ETH_RMII_TX0 :
case ETH_RMII_TX1 :
case ETH_RMII_RX0 :
case ETH_RMII_RX1_EN :
case ETH_RMII_CRS_DV :
case ETH_RMII_CLK :
return true;
}
#else
if (19 == pin) return true; // ETH TXD0
if (21 == pin) return true; // ETH TX EN
if (22 == pin) return true; // ETH TXD1
if (25 == pin) return true; // ETH RXD0
if (26 == pin) return true; // ETH RXD1
if (27 == pin) return true; // ETH CRS_DV
#endif
#endif
}
#endif // if FEATURE_ETHERNET
return false;
@@ -150,6 +150,9 @@ void WiFiEvent(WiFiEvent_t event_id, arduino_event_info_t info) {
addLog(LOG_LEVEL_INFO, F("WIFI : AP got IP6"));
break;
# endif // if FEATURE_USE_IPV6
case ARDUINO_EVENT_WIFI_AP_STAIPASSIGNED:
addLog(LOG_LEVEL_INFO, F("WIFI : AP assigned IP to STA"));
break;
case ARDUINO_EVENT_WIFI_AP_STACONNECTED:
WiFiEventData.markConnectedAPmode(info.wifi_ap_staconnected.mac);
break;
+42 -33
View File
@@ -6,6 +6,8 @@
# include "../Globals/Settings.h"
# include "../Helpers/Hardware_device_info.h"
#include <pins_arduino.h>
// ********************************************************************************
// Get info of a specific GPIO pin
// ********************************************************************************
@@ -24,26 +26,30 @@ bool getGpioInfo(int gpio, int& pinnr, bool& input, bool& output, bool& warning)
# if FEATURE_ETHERNET
// Check pins used for RMII Ethernet PHY
if (NetworkMedium_t::Ethernet == Settings.NetworkMedium) {
switch (gpio) {
case 28: // RMII_RXDV
case 29: // RMII_RXD0
case 30: // RMII_RXD1
case 34: // RMII_TXD0
case 35: // RMII_TXD1
case 49: // RMII_TXEN
case 50: // RMII_CLK
case 51: // PHY_RSTN
case 52: // MDIO
warning = true;
break;
}
// FIXME TD-er: Must we also check for pins used for MDC/MDIO and Eth PHY power?
if (Settings.isEthernetPin(gpio) || Settings.isEthernetPinOptional(gpio))
{
warning = true;
}
# endif // if FEATURE_ETHERNET
#ifdef BOARD_HAS_SDIO_ESP_HOSTED
// TODO TD-er: Make this configurable as we can set this via WiFi.setPins
switch (gpio) {
case BOARD_SDIO_ESP_HOSTED_CLK :
case BOARD_SDIO_ESP_HOSTED_CMD :
case BOARD_SDIO_ESP_HOSTED_D0 :
case BOARD_SDIO_ESP_HOSTED_D1 :
case BOARD_SDIO_ESP_HOSTED_D2 :
case BOARD_SDIO_ESP_HOSTED_D3 :
case BOARD_SDIO_ESP_HOSTED_RESET :
{
warning = true;
// if (gpio != BOARD_SDIO_ESP_HOSTED_RESET) { return false; }
break;
}
}
#endif
return (input || output);
}
@@ -55,8 +61,11 @@ bool isBootModePin(int gpio)
bool isBootStrapPin(int gpio)
{
return false;
// Boot mode | GPIO35 | GPIO36 | GPIO37 | GPIO38
//
// SPI Boot | 1 | Any | Any | Any
// Joint Download Boot | 0 | 1 | Any | Any
return gpio >= 35 && gpio <= 38;
}
bool getGpioPullResistor(int gpio, bool& hasPullUp, bool& hasPullDown) {
@@ -103,20 +112,20 @@ bool getADC_gpio_info(int gpio_pin, int& adc, int& ch, int& t)
t = -1;
switch (gpio_pin) {
case 16: adc = 1; ch = 0; break;
case 17: adc = 1; ch = 1; break;
case 18: adc = 1; ch = 2; break;
case 19: adc = 1; ch = 3; break;
case 20: adc = 1; ch = 4; break;
case 21: adc = 1; ch = 5; break;
case 22: adc = 1; ch = 6; break;
case 23: adc = 1; ch = 7; break;
case 49: adc = 2; ch = 0; break;
case 50: adc = 2; ch = 1; break;
case 51: adc = 2; ch = 2; break;
case 52: adc = 2; ch = 3; break;
case 53: adc = 2; ch = 4; break;
case 54: adc = 2; ch = 5; break;
case A0: adc = 1; ch = 0; break;
case A1: adc = 1; ch = 1; break;
case A2: adc = 1; ch = 2; break;
case A3: adc = 1; ch = 3; break;
case A4: adc = 1; ch = 4; break;
case A5: adc = 1; ch = 5; break;
case A6: adc = 1; ch = 6; break;
case A7: adc = 1; ch = 7; break;
case A8: adc = 2; ch = 0; break;
case A9: adc = 2; ch = 1; break;
case A10: adc = 2; ch = 2; break;
case A11: adc = 2; ch = 3; break;
case A12: adc = 2; ch = 4; break;
case A13: adc = 2; ch = 5; break;
default:
return false;
}
+19
View File
@@ -6,6 +6,11 @@
#include "../Helpers/StringConverter.h"
#include "../../ESPEasy_common.h"
#ifdef ESP32P4
#include <pins_arduino.h>
#endif
/*********************************************************************************************\
Device GPIO name functions to share flash strings
\*********************************************************************************************/
@@ -361,6 +366,20 @@ const __FlashStringHelper* getConflictingUse(int gpio, PinSelectPurpose purpose,
if (Settings.isEthernetPin(gpio)) {
return F("Eth");
}
#ifdef ESP32P4
#ifdef BOARD_HAS_SDIO_ESP_HOSTED
// TODO TD-er: Make this configurable as we can set this via WiFi.setPins
switch (gpio) {
case BOARD_SDIO_ESP_HOSTED_CLK : return F("SDIO_CLK");
case BOARD_SDIO_ESP_HOSTED_CMD : return F("SDIO_CMD");
case BOARD_SDIO_ESP_HOSTED_D0 : return F("SDIO_D0");
case BOARD_SDIO_ESP_HOSTED_D1 : return F("SDIO_D1");
case BOARD_SDIO_ESP_HOSTED_D2 : return F("SDIO_D2");
case BOARD_SDIO_ESP_HOSTED_D3 : return F("SDIO_D3");
case BOARD_SDIO_ESP_HOSTED_RESET : return F("SDIO_RESET");
}
#endif
#endif
if (includeEthernet && Settings.isEthernetPinOptional(gpio)) {
if (isGpioUsedInETHClockMode(Settings.ETH_Clock_Mode, gpio)) { return F("Eth Clock"); }