Распиновка для разных версий ESP32
Универсальный рецепт:
- https://github.com/espressif/arduino-esp32/blob/master/variants
- https://github.com/espressif/arduino-esp32/blob/master/variants/esp32/pins_arduino.h
- https://github.com/espressif/arduino-esp32/blob/master/variants/esp32c3/pins_arduino.h
- https://github.com/espressif/arduino-esp32/blob/master/variants/esp32s2/pins_arduino.h
- https://github.com/espressif/arduino-esp32/blob/master/variants/esp32s3/pins_arduino.h
I2C
как сделать переназначение:
#define SDA 33
#define SCL 32
Wire.begin(SDA, SCL)
ESP32
- SDA (default is GPIO 21)
- SCL (default is GPIO 22)
ESP32-C3
- SDA (default is GPIO 8)
- SCL (default is GPIO 9)
CAN
ESP32-C3
- TX: 4
- RX: 5
Встреченные траблы ESP32
Периодические перезагрузки
Периодические перезагрузки в Arduino IDE на некоторых скечах
Проявляется в логе так:
task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdog in time:
task_wdt: CPU 0: loopTask
лечится добавлением disableCore0WDT();
в setup()
, есть еще советы по добавлению vTaskDelay(10);
в loop()
- но в моем случае не помогло.
Ссылки:
- https://stackoverflow.com/questions/66278271/task-watchdog-got-triggered-the-tasks-did-not-reset-the-watchdog-in-time
- https://github.com/espressif/arduino-esp32/issues/595#issuecomment-1066079254
- https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/wdts.html#task-watchdog-timer
- Updated ESP-IDF version to 4.4 and it solved this issue.
Периодические перезагрузки при использовании PlatformIO
Проявляется так, что в логе вместо нормального вывода видны вот такие строки: ets_loader.c 79
и периодические перезагрузки по вачдогам:
rst:0x10 (RTCWDT_RTC_RST),boot:0xe (SPI_FAST_FLASH_BOOT)
rst:0x7 (TG0WDT_SYS_RST),boot:0xe (SPI_FAST_FLASH_BOOT)
Лечится добавлением в platform.ini
такой строчки:
board_build.flash_mode = dio
После чего желательно почистить кеш сборки:
pio run --target clean
Arduino IDE
Исходники: https://github.com/espressif/arduino-esp32/tree/master/cores/esp32
Platform IO
Включение дебага в PlatformIO
monitor_filters = esp32_exception_decoder
build_type = debug
Отключение телеметрии
enable_telemetry = No
Проблемы со сборкой (С++ STL)
Во избежании проблем со сборкой все сишные файлы должны иметь расширение .cpp