Плата разработки ESP32 Dev Kitc

Информация о продукте

Технические характеристики

  • Продукт: ESP32
  • Руководство по программированию: ESP-IDF
  • Версия релиза: v5.0.9
  • Производитель: Эспрессиф Системс
  • Дата выхода: 16 мая 2025 г.

Инструкции по применению продукта

1. Начать

Прежде чем начать работу с ESP32, ознакомьтесь с
следующий:

1.1 Введение

Узнайте об основных функциях и возможностях
ESP32.

1.2 Что вам нужно

Убедитесь, что у вас есть необходимое оборудование и программное обеспечение:

  • Аппаратное обеспечение: Проверьте список необходимого оборудования.
    компоненты.
  • Программное обеспечение: Установите необходимое программное обеспечение
    компоненты.

1.3 Установка

Выполните следующие шаги для установки IDE и настройки
среда:

  • ИДЕ: Установите рекомендуемую IDE для
    программирование ESP32.
  • Ручная установка: Настройте вручную
    при необходимости.

1.4 Создайте свой первый проект

Создайте и соберите свой первый проект с использованием ESP32.

1.5 Удаление ESP-IDF

При необходимости узнайте, как удалить ESP-IDF с вашего компьютера.
система.

2. Справочник API

Подробную информацию см. в документации API.
протоколы приложений, обработка ошибок и конфигурация
структуры.

Часто задаваемые вопросы (FAQ)

В: Как устранить распространенные проблемы с ESP32?

A: Обратитесь к разделу по устранению неполадок в руководстве по программированию.
или посетите завод производителя webсайт ресурсов поддержки.

В: Могу ли я использовать ESP-IDF с другими микроконтроллерами?

A: ESP-IDF специально разработан для ESP32, но вы можете обнаружить,
совместимость с другими микроконтроллерами Espressif.

ESP32
Руководство по программированию ESP-IDF
Выпуск v5.0.9 Espressif Systems 16 мая 2025 г.

Оглавление

Оглавление

i

1 Начало работы

3

1.1 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2 Что вам нужно . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.1 Аппаратное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2.2 Программное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Установка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.1 ИДЕ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3.2 Ручная установка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.4 Создайте свой первый проект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

1.5 Удаление ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

2 Справочник API

45

2.1 Соглашения API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.1 Обработка ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.2 Конфигурационные структуры . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

2.1.3 Частные API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.4 Компоненты в exampле проекты . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

2.1.5 Стабильность API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2.2 Протоколы приложений . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.1 ASIO-порт. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.2 ESP-Modbus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

2.2.3 ESP-MQTT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49

2.2.4 ESP-TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

2.2.5 HTTP-клиент ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80

2.2.6 Локальное управление ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

2.2.7 Последовательный ведомый канал ESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

2.2.8 Пакет сертификатов ESP x509 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121

2.2.9 HTTP-сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2.2.10 HTTPS-сервер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.2.11 ICMP-эхо . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

2.2.12 Служба mDNS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.13 Mbed TLS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.2.14 Уровень сети IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3 API Bluetooth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.1 Общие сведения о Bluetooth® . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

2.3.2 Bluetooth® с низким энергопотреблением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

2.3.3 Bluetooth® Классический . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 325

2.3.4 Контроллер и HCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

2.3.5 ESP-BLE-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 485

2.3.6 API хоста на базе NimBLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767

2.4 Справочник кодов ошибок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 769

2.5 Сетевые API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.1 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776

2.5.2 Ethernet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 899

2.5.3 Нить . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 936

i

2.5.4 ESP-NETIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942 2.5.5 Сетевой уровень IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 974 2.5.6 Прикладной уровень . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 976 2.6 API периферийных устройств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 977 2.6.1 Драйвер режима одноразового действия аналого-цифрового преобразователя (АЦП). . . . . . . . . . . . . . . . . 977 2.6.2 Драйвер непрерывного режима аналого-цифрового преобразователя (АЦП). . . . . . . . . . . . . . . 986 2.6.3 Калибровочный драйвер аналого-цифрового преобразователя (АЦП). . . . . . . . . . . . . . . . . . . 993 2.6.4 Дерево часов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 997 2.6.5 Цифро-аналоговый преобразователь (ЦАП) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1004 2.6.6 GPIO и RTC GPIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1008 2.6.7 Таймер общего назначения (GPTimer) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1027 2.6.8 Межинтегральная схема (I2C) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1039 2.6.9 Межмикросхемный звук (I2S) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1056 2.6.10 ЖК . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1090 2.6.11 Управление светодиодами (LEDC) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1107 2.6.12 Широтно-импульсный модулятор управления двигателем (ШИМД) . . . . . . . . . . . . . . . . . . . . . 1126 2.6.13 Счетчик импульсов (PCNT) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1178 2.6.14 Приемопередатчик дистанционного управления (РМТ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1193 2.6.15 Требования к подтягиванию SD. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1220 2.6.16 Драйвер хоста SDMMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1223 2.6.17 Драйвер хоста SD SPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1229 2.6.18 Драйвер ведомой карты SDIO. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234 2.6.19 Сигма-дельта модуляция (СДМ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244 2.6.20 Главный драйвер SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1249 2.6.21 Драйвер ведомого устройства SPI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274 2.6.22 ESP32-WROOM-32SE (Элемент безопасности) . . . . . . . . . . . . . . . . . . . . . . . . . 1281 2.6.23 Датчик касания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1282 2.6.24 Двухпроводной автомобильный интерфейс (TWAI) . . . . . . . . . . . . . . . . . . . . . . . . . . 1299 2.6.25 Универсальный асинхронный приемник/передатчик (UART) . . . . . . . . . . . . . . . . . . 1317 2.7 Конфигурация проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.1 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.2 Меню конфигурации проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.3 Использование sdkconfig.defaults . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342 2.7.4 Правила форматирования Kconfig . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.5 Обратная совместимость параметров Kconfig . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.7.6 Справочник по параметрам конфигурации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1343 2.8 API предоставления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.1 Протокол связи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1647 2.8.2 Унифицированное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1665 2.8.3 Обеспечение Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1669 2.9 API хранилища . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . FileПоддержка системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1691 2.9.2 Производственная утилита . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1699 2.9.3 Энергонезависимая библиотека хранения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1703 2.9.4 Утилита генератора разделов NVS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1725 2.9.5 Драйвер SD/SDIO/MMC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1730 2.9.6 API SPI Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1744 2.9.7 СПИФФС Fileсистема . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1780 2.9.8 Виртуальная fileкомпонент системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784 2.9.9 API выравнивания износа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1800 2.10 API системы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.1 Формат образа приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1803 2.10.2 Трассировка на уровне приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1808 2.10.3 Вызов функции с внешним стеком . . . . . . . . . . . . . . . . . . . 1813 2.10.4 Версия чипа . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1815 2.10.5 Консоль . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1817 2.10.6 eFuse Manager . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1826 2.10.7 Коды ошибок и вспомогательные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1846
ii

2.10.8 ESP HTTPS OTA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1849 2.10.9 Библиотека цикла событий . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1856 2.10.10 FreeRTOS (болееview) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1869 2.10.11 FreeRTOS (ESP-IDF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1871 2.10.12 FreeRTOS (дополнительные возможности) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1988 2.10.13 Выделение динамической памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2008 2.10.14 Отладка динамической памяти . ... 2032 2.10.16 Внутренние и нестабильные API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2038 2.10.17 Межпроцессорный вызов . ... 2045 2.10.19 Библиотека журналирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2051 2.10.20 Различные системные API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2058 2.10.21 Обновления по воздуху (OTA) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2073 2.10.22 Монитор производительности . ... 2087 2.10.24 Поддержка потоков POSIX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2093 2.10.25 Генерация случайных чисел . ... . . . . . . . . . . . . . 2099 2.10.27 Возможности SoC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2111 2.10.28 Системное время . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2126 2.10.30 Программирование сопроцессора ULP . ...

3 Справочник по оборудованию

2167

3.1 Сравнение серий микросхем . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2167

3.1.1 Связанные документы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2170

4 руководства по API

2171

4.1 Библиотека трассировки на уровне приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.1 Болееview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.2 Режимы работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2171

4.1.3 Параметры конфигурации и зависимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2172

4.1.4 Как использовать эту библиотеку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173

4.2 Процесс запуска приложения . ...

4.2.1 Первая сtagзагрузчик e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.2 секунды сtagзагрузчик e . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2182

4.2.3 Запуск приложения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2183

4.3 Bluetooth® Классический . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.3.1 Болееview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2184

4.4 Bluetooth® с низким энергопотреблением . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.1 Болееview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2186

4.4.2 Начало работы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2191

4.4.3 Проfile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2240

4.5 Загрузчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2284

4.5.1 Совместимость загрузчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.2 Уровень журнала . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2285

4.5.3 Сброс к заводским настройкам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.4 Загрузка с тестовой прошивки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2286

4.5.5 Откат . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.6 Сторожевой таймер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.7 Размер загрузчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.8 Быстрая загрузка из глубокого сна . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.5.9 Пользовательский загрузчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2287

4.6 Система сборки . ...

4.6.1 Болееview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2288

4.6.2 Использование системы сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2289

iii

4.6.3 пр.ampПроект . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.4 Проект CMakeLists File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2291 4.6.5 Компонент CMakeLists Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2293 4.6.6 Конфигурация компонента . ... 2295 4.6.8 Требования к компонентам . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2295 4.6.9 Переопределение частей проекта . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2299 4.6.10 Компоненты, предназначенные только для конфигурации . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.11 Отладка CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2300 4.6.12 ExampКомпонент CMakeLists le . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2301 4.6.13 Пользовательские значения sdkconfig по умолчанию . ... 2305 4.6.15 Сборка загрузчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.16 Написание чистых компонентов CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2306 4.6.17 Использование сторонних проектов CMake с компонентами . . . . . . . . . . . . . . . . . . . 2306 4.6.18 Использование готовых библиотек с компонентами . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.19 Использование ESP-IDF в пользовательских проектах CMake . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2307 4.6.20 API системы сборки CMake ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2308 4.6.21 File Подстановка и инкрементальные сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2312 4.6.22 Метаданные системы сборки . ... 2313 4.6.24 Миграция с системы ESP-IDF GNU Make . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2315 4.7 Дамп ядра . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2316 4.7.2 Конфигурации . ... . . . . . . . . . . . 2317 4.7.4 Печать дампа ядра в UART . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2318 4.7.5 Функции ПЗУ в обратных трассировках . ... . . . . . . . . . . . . 2318 4.7.7 Запуск espcoredump.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2319 4.8 Заглушки пробуждения из глубокого сна . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . 2322 4.8.2 Реализация заглушки . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.8.5 Проверка CRC для заглушек пробуждения . ...ampле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2323 4.9 Обработка ошибок . ...view . ... . . . . . 2324 4.9.4 Макрос ESP_ERROR_CHECK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.5 Макрос ESP_ERROR_CHECK_WITHOUT_ABORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.6 Макрос ESP_RETURN_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.7 Макрос ESP_GOTO_ON_ERROR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.8 Макрос ESP_RETURN_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.9 Макрос ESP_GOTO_ON_FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2325 4.9.10 ПРОВЕРКА МАКРОСОВ Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2326 4.9.11 Шаблоны обработки ошибок . ... . 2327 4.10 ESP-WIFI-MESH . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2327 4.10.2 Введение . ... 2329 4.10.4 Создание сети . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2334 4.10.5 Управление сетью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2339 4.10.6 Передача данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342 4.10.7 Переключение каналов . ...
iv

4.10.8 Производительность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2347 4.10.9 Дополнительные примечания . ... . . . . . . . . . . . . . . . . . . . . . . . . . 2348 4.11.1 События Wi-Fi, Ethernet и IP . ... . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.2 Обработчик паники . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2350 4.12.3 Дамп регистра и обратная трассировка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2351 4.12.4 Заглушка GDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2353 4.12.5 Тайм-аут сторожевого таймера RTC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.6 Ошибки медитации гуру . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2354 4.12.7 Другие фатальные ошибки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2356 4.13 Флэш-шифрование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2358 4.13.1 Введение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.2 Соответствующие электронные предохранители . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2359 4.13.3 Процесс флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.4 Конфигурация флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2360 4.13.5 Возможные сбои . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2366 4.13.6 Состояние шифрования флэш-памяти ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.7 Чтение и запись данных в зашифрованной Flash-памяти . . . . . . . . . . . . . . . . . . . . . . . 2368 4.13.8 Обновление зашифрованной Flash-памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.9 Отключение Flash-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2369 4.13.10 Ключевые моменты флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.11 Ограничения флэш-шифрования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2370 4.13.12 Флэш-шифрование и безопасная загрузка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.13 Расширенные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2371 4.13.14 Технические подробности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14 Аппаратная абстракция . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2373 4.14.1 Архитектура . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374 4.14.2 Уровень LL (низкий уровень). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2375 4.14.3 HAL (Уровень аппаратной абстракции). . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2376 4.15 Прерывания высокого уровня . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.1 Уровни прерываний . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2377 4.15.2 Примечания . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . TAG Отладка . ... . . . . . . . . . . . . . . . . . . . . 2379 4.16.3 Выбор JTAG Адаптер . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2380 4.16.4 Настройка OpenOCD . ... . . . . 2380 4.16.6 Запуск отладчика . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.7 Отладка Examples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2386 4.16.8 Сборка OpenOCD из исходников . ... . . . 2391 4.16.10 Связанные документы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2396 4.17 Генерация скрипта компоновщика . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2421 4.17.2 Быстрый старт . ... 2424 4.18 lwIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2430 4.18.1 Поддерживаемые API . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431 4.18.3 API Netconn . ... . . . . . . 2435 4.18.5 Поддержка IPv6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2435 4.18.6 Пользовательские модификации esp-lwip . ...
v

4.18.7 Оптимизация производительности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2438 4.19 Типы памяти . ...
4.19.1 DRAM (ОЗУ данных) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2439 4.19.2 IRAM (ОЗУ команд) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2440 4.19.3 IROM (код, выполняемый из флэш-памяти) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.4 DROM (данные, хранящиеся во флэш-памяти) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.5 Медленная память RTC . ... . . . . . . . . . . . . . . . . . 2441 4.19.7 Требование поддержки DMA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2441 4.19.8 Буфер DMA в стеке . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20 OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2442 4.20.1 Режимы стека OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.2 Как написать приложение OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443 4.20.3 Граничный маршрутизатор OpenThread . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2444 4.21 Таблицы разделов . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2445 4.21.2 Встроенные таблицы разделов . ... 2445 4.21.4 Генерация двоичной таблицы разделов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2448 4.21.5 Проверка размера раздела . ... 2449 4.21.7 Средство разбиения (parttool.py) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2449 4.22 Производительность . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2450 4.22.2 Руководства . ... . . 2468 4.23.1 Частичная калибровка . ... 2469 4.23.4 Данные инициализации PHY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2469 4.23.5 Справочник API . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2472 4.24.1 Предыстория . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2473 4.24.3 Ключи . ... 2474 4.24.5 Как включить безопасную загрузку . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2474 4.24.6 Перепрошиваемый программный загрузчик . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.7 Генерация ключа подписи безопасной загрузки . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.8 Удалённое подписание образов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2475 4.24.9 Рекомендации по безопасной загрузке . ... 2476 4.24.11 Безопасная загрузка и флэш-шифрование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2477 4.24.12 Проверка подписанного приложения без аппаратной безопасной загрузки . . . . . . . . . . . . . . . . . . . . . . 2478 4.24.13 Расширенные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25 Безопасная загрузка V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2478 4.25.1 Фон . ...tages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2479 4.25.3 Процесс безопасной загрузки V2 . ... 2480 4.25.5 Безопасное заполнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2480 4.25.6 Проверка блока подписи . ... . . . . . . . . . . . . . . . . . . . . . 2481 4.25.8 Размер загрузчика . ... 2481 4.25.10 Как включить безопасную загрузку V2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2481 4.25.11 Ограничения после включения безопасной загрузки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2482 4.25.12 Генерация ключа подписи безопасной загрузки . ...
vi

4.25.13 Удалённое подписание образов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2483 4.25.14 Рекомендации по безопасной загрузке . ... 2484 4.25.16 Безопасная загрузка и флэш-шифрование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.17 Проверка подписанного приложения без аппаратной безопасной загрузки . . . . . . . . . . . . . . . . . . . . . . 2484 4.25.18 Расширенные функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26 Поддержка внешней оперативной памяти . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2485 4.26.1 Введение . ... 2485 4.26.3 Настройка внешнего ОЗУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2486 4.26.4 Ограничения . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.26.6 Версии микросхемы . ... . . . . 2488 4.27.1 Болееview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2488 4.27.2 Собственное API FreeRTOS . ... . . . . . . . . . . . . . . 2489 4.27.4 Стандарт C11 . ... 2489 4.28.1 IDF-фронтенд – idf.py . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2489 4.28.2 Образ Docker IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2493 4.28.3 Установщик IDF для Windows . . . . . . . . . . . . . . . . . . . . . . . . . . . 2495 4.28.4 Менеджер компонентов IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2496 4.28.5 IDF Clang Tidy . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2498 4.29 Модульное тестирование в ESP32 . ... 2512 4.29.2 Тестовые случаи для нескольких устройств . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2513 4.29.3 МногоtagТестовые случаи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.4 Тесты для разных целей . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2514 4.29.5 Создание тестового приложения. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.6 Выполнение модульных тестов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2515 4.29.7 Временной код с кэш-компенсированным таймером . . . . . . . . . . . . . . . . . . . . . . . 2516 4.29.8 Насмешки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2517 4.30 Модульное тестирование в Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.1 Тесты встроенного программного обеспечения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2519 4.30.2 Тесты модулей IDF на хосте Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2520 4.31 Драйвер Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.1 Список функций Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.2 Как написать приложение Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521 4.31.3 Код ошибки API Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.4 Инициализация параметров API Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.5 Модель программирования Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2522 4.31.6 Описание события ESP32 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523 4.31.7 Общий сценарий станции ESP32 Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . 2526 4.31.8 Общий сценарий точки доступа Wi-Fi ESP32. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.9 ESP32 Сканирование Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2529 4.31.10 Сценарий подключения Wi-Fi-станции ESP32. . . . . . . . . . . . . . . . . . . . . . . . . 2536 4.31.11 Подключение станции ESP32 Wi-Fi при обнаружении нескольких точек доступа. . . . . . . . . . . . . 2543 4.31.12 Повторное подключение Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.13 Тайм-аут маяка Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.14 Конфигурация Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543 4.31.15 Wi-Fi Easy ConnectTM (DPP) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.16 Управление беспроводной сетью . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.17 Измерение радиоресурсов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2549 4.31.18 Быстрый переход BSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.19 ESP32 Wi-Fi Режим энергосбережения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2550 4.31.20 Пропускная способность Wi-Fi ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
VII

4.31.21 Отправка пакетов Wi-Fi 80211 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2552 4.31.22 Режим сниффера Wi-Fi . ... . . . . . . . . . . . . . . . 2554 4.31.24 Информация о состоянии канала Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2556 4.31.25 Настройка информации о состоянии канала Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.26 Wi-Fi HT20/40 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.27 Качество обслуживания Wi-Fi. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2557 4.31.28 Wi-Fi АМСДУ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.29 Фрагмент Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.30 Зарегистрированный WPS . ... . . . . . . . . . . . . . . . . . . . . . . . . . . 2558 4.31.32 Как улучшить производительность Wi-Fi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2559 4.31.33 Настройка меню Wi-Fi . ... . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2565 4.32 Безопасность Wi-Fi . ... 2568 4.32.2 Защищенные кадры управления (PMF) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2571 4.32.3 WiFi Enterprise . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.4 WPA3-Personal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2572 4.32.5 Wi-Fi Enhanced OpenTM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2573 4.33 Сосуществование радиочастот . ...view . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.2 Поддерживаемый сценарий сосуществования для ESP32 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.3 Механизм и политика сосуществования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2574 4.33.4 Как использовать функцию сосуществования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2576 4.34 Воспроизводимые сборки . ... . . . . . . . . . . . . . 2577 4.34.2 Причины невоспроизводимых сборок . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2577 4.34.3 Включение воспроизводимых сборок в ESP-IDF . ... 2578 4.34.5 Воспроизводимые сборки и отладка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.34.6 Факторы, которые все еще влияют на воспроизводимые сборки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578 4.35 Руководство пользователя режима низкого энергопотребления . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2578

5 руководств по миграции

2579

5.1 Руководство по миграции ESP-IDF 5.x . ...

5.1.1 Миграция с версии 4.4 на 5.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2579

6 библиотек и фреймворков

2611

6.1 Облачные фреймворки . ...

6.1.1 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.2 AWS IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.3 Azure IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.4 Ядро Google IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.5 Алиюн IoT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.6 Joylink IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611

6.1.7 Tencent IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.8 Tencentyun IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.1.9 Baidu IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2 Espressifns-фреймворки . ...

6.2.1 Среда разработки аудио Espressif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.2 ESP-CSI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.3 Библиотека Espressif DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2612

6.2.4 Структура разработки ESP-WIFI-MESH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.5 ESP-ВОЗ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.6 ESP RainMaker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.7 Решение ESP-IoT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

6.2.8 ESP-протоколы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2613

8

6.2.9 ESP-BSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2614

7 Руководство по взносам

2615

7.1 Как внести свой вклад . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2615

7.2 Перед внесением вклада . ...

7.3 Процесс запроса на извлечение. ...

7.4 Юридическая часть . ...

7.5 Связанные документы . ...

7.5.1 Руководство по стилю разработки Espressif IoT . ...

7.5.2 Установка предварительного коммита Hook для проекта ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2623

7.5.3 Документирование кода . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2624

7.5.4 Создание Exampле . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2629

7.5.5 Шаблон документации API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2630

7.5.6 Соглашение с автором . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2632

7.5.7 Руководство по заголовкам авторских прав . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2634

7.5.8 Тесты ESP-IDF с помощью Pytest Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2635

8 Версии ESP-IDF

2645

8.1 Выпуски . ...

8.2 С какой версии мне следует начать? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.3 Схема управления версиями . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2645

8.4 Периоды поддержки . ...

8.5 Проверка текущей версии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2647

8.6 Рабочий процесс Git . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7 Обновление ESP-IDF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2648

8.7.1 Обновление до стабильной версии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.2 Обновление до предварительной версии . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.3 Обновление до основной ветки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2649

8.7.4 Обновление до ветки релиза . ...

9 Ресурсы

2651

9.1 PlatformIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.1 Что такое PlatformIO? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.2 Установка . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2651

9.1.3 Конфигурация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.4 Учебные пособия . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.5 Проект Exampлес . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.1.6 Дальнейшие шаги . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2652

9.2 Полезные ссылки . ...

10. Авторские права и лицензии

2653

10.1 Авторские права на программное обеспечение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.1 Компоненты прошивки . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2653

10.1.2 Документация . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.2 Авторские права на исходный код ПЗУ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2654

10.3 Лицензия Xtensa libhal MIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.4 Лицензия TinyBasic Plus MIT. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

10.5 Лицензия TJpgDec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2655

11 О нас

2657

12. Переключение между языками

2659

Индекс

2661

Индекс

2661

ix

x

Оглавление
Это документация по фреймворку разработки Espressif IoT (esp-idf). ESP-IDF — официальный фреймворк разработки для систем на кристалле серий ESP32, ESP32-S и ESP32-C. В этом документе описывается использование ESP-IDF с системой на кристалле ESP32.

Начать

Ссылка на API

Руководства по API

Эспрессиф Системс

1. Отправить отзыв о документе

Выпуск v5.0.9

Оглавление

Эспрессиф Системс

2. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1
Начать
Этот документ поможет вам настроить среду разработки программного обеспечения для оборудования на базе чипа ESP32 от Espressif. После этого выполните простой пример.ample покажет вам, как использовать ESP-IDF (Espressif IoT Development Framework) для настройки меню, а затем для сборки и прошивки прошивки на плату ESP32.
Примечание: Это документация для стабильной версии ESP-IDF v5.0.9. Доступны также и другие версии ESP-IDF.
1.1 Введение
ESP32 — это система на кристалле, которая объединяет следующие функции: · Wi-Fi (диапазон 2.4 ГГц) · Bluetooth · Два высокопроизводительных 32-битных ядра процессора Xtensa® LX6 · Сопроцессор со сверхнизким энергопотреблением · Несколько периферийных устройств
ESP32, созданный на основе 40-нм техпроцесса, представляет собой надежную, высокоинтегрированную платформу, отвечающую постоянно растущим требованиям к энергоэффективности, компактности, безопасности, высокой производительности и надежности. Espressif предоставляет базовые аппаратные и программные ресурсы, помогающие разработчикам приложений реализовывать свои идеи с использованием оборудования серии ESP32. Среда разработки программного обеспечения Espressif предназначена для разработки приложений Интернета вещей (IoT) с поддержкой Wi-Fi, Bluetooth, управления питанием и ряда других системных функций.
1.2 Что вам нужно
1.2.1 Аппаратное обеспечение
· Плата ESP32. · USB-кабель – USB A / micro USB B. · Компьютер под управлением Windows, Linux или macOS.
Примечание: в настоящее время некоторые платы разработки используют разъёмы USB Type C. Убедитесь, что у вас есть подходящий кабель для подключения платы!
Если у вас есть одна из официальных плат разработки ESP32, перечисленных ниже, вы можете нажать на ссылку, чтобы узнать больше об оборудовании.
3

Глава 1. Начало работы
ESP32-DevKitS(-R)
В этом руководстве пользователя представлена ​​информация о ESP32-DevKitS(-R) — плате прошивки на базе ESP32, производимой компанией Espressif. ESP32-DevKitS(-R) — это комбинация двух названий платы: ESP32-DevKitS и ESP32-DevKitS-R. Буква S обозначает пружины (springs), а буква R — WROVER.

ESP32-DevKitS

ESP32-DevKitS-R

Документ состоит из следующих основных разделов: · Начало работы: содержит общее описаниеview ESP32-DevKitS(-R) и инструкции по настройке оборудования и программного обеспечения для начала работы. · Справочник по оборудованию: содержит более подробную информацию об оборудовании ESP32-DevKitS(-R)ns. · Связанные документы: содержит ссылки на связанную документацию.

В этом разделе описывается, как начать работу с ESP32-DevKitS(-R). Он начинается с нескольких вводных разделов об ESP32-DevKitS(-R), а затем в разделе «Как прошить плату» приводятся инструкции по установке модуля на ESP32-DevKitS(-R), его подготовке и прошивке.

Надview ESP32-DevKitS(-R) — это плата для прошивки Espressifns, разработанная специально для ESP32. Она позволяет прошивать модуль ESP32 без пайки модуля к шинам питания и сигнальным линиям. После установки модуля ESP32-DevKitS(-R) можно использовать как мини-плату разработки, как ESP32-DevKitC.
Платы ESP32-DevKitS и ESP32-DevKitS-R отличаются только расположением пружинных контактов для совместимости со следующими модулями ESP32.
· ESP32-DevKitS: ESP32-WROOM-32 ESP32-WROOM-32D ESP32-WROOM-32U ESP32-SOLO-1 ESP32-WROOM-32E ESP32-WROOM-32UE
· ESP32-DevKitS-R: ESP32-WROVER (печатная плата и IPEX) ESP32-WROVER-B (печатная плата и IPEX) ESP32-WROVER-E ESP32-WROVER-IE
Информацию о вышеуказанных модулях см. в разделе Модули серии ESP32.

Описание компонентов

Эспрессиф Системс

4. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 1: ESP32-DevKitS – вид спереди

Эспрессиф Системс

Рис. 2: ESP32-DevKitS-R – передняя часть 5
Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Ключевой компонент: пружинные штифты 2.54 мм, гнездовые разъемы
Мост USB-UART Разъем LDO Micro-USB/порт Micro USB Кнопка EN Кнопка загрузки
Индикатор включения питания

Описание: Вставьте модуль в слот. Контакты войдут в корончатые отверстия модуля. Эти разъёмы типа «мама» подключаются к контактам модуля, установленного на этой плате. Описание разъёмов типа «мама» см. в разделе «Блоки разъёмов». Однокристальный мост USB-UART обеспечивает скорость передачи данных до 3 Мбит/с.
5 В - 3.3 В с низким падением напряженияtagэлектронный регулятор (LDO).
Интерфейс USB. Питание платы, а также интерфейс связи между компьютером и платой.
Кнопка сброса.
Кнопка «Загрузить». Удерживание кнопки «Boot» и последующее нажатие кнопки «EN» активирует режим загрузки прошивки через последовательный порт.
Включается при подключении к плате USB или источника питания.

Как перепрошить плату Перед включением ESP32-DevKitS(-R) убедитесь, что она в хорошем состоянии и не имеет явных признаков повреждений.
Необходимое оборудование · Модуль ESP32 по вашему выбору · Кабель USB 2.0 (стандартный A — Micro-B) · Компьютер под управлением Windows, Linux или macOS
Настройка оборудования Установите выбранный вами модуль на ESP32-DevKitS(-R), выполнив следующие шаги:
· Аккуратно установите модуль на плату ESP32-DevKitS(-R). Убедитесь, что зубчатые отверстия на модуле совпадают с пружинными штифтами на плате.
· Вставьте модуль в плату до щелчка. · Проверьте, все ли пружинные штифты вставлены в корончатые отверстия. Если некоторые пружинные штифты смещены,
поместите их в зубчатые отверстия с помощью пинцета.
Настройка программного обеспечения
Предпочтительный метод. Фреймворк разработки ESP-IDF предоставляет предпочтительный способ прошивки исполняемых файлов на ESP32-DevKitS(-R). Перейдите к разделу «Начало работы», где раздел «Установка» поможет вам быстро настроить среду разработки и затем прошить приложение.ample на ваш ESP32-DevKitS(-R).
Альтернативный метод. Пользователи Windows могут также использовать Flash Download Tool для прошивки исполняемых файлов. Просто скачайте его, распакуйте и следуйте инструкциям в папке doc.
Примечание: 1. Для прошивки двоичного кода files, ESP32 должен быть переведен в режим загрузки прошивки. Это можно сделать либо автоматически с помощью флеш-тула, либо удерживая кнопку Boot и нажимая кнопку EN. 2. После прошивки бинарного файла files, Flash Download Tool перезапускает ваш модуль ESP32 и загружает прошитое приложение по умолчанию.

Размеры платы. Содержимое и упаковка

Эспрессиф Системс

6. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы Рис. 3: Размеры платы ESP32-DevKitS — задняя сторона

Эспрессиф Системс

Рис. 4: Размеры платы ESP32-DevKitS-R – вид сзади 7
Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Розничные заказы Если вы заказываете несколько шт.ampКаждый комплект ESP32-DevKitS(-R) поставляется в индивидуальной упаковке в антистатическом пакете или в любой другой упаковке в зависимости от продавца. Для розничных заказов перейдите по ссылке https://www.espressif.com/en/contact-us/get-sampлес.
Оптовые заказы. При заказе оптом доски поставляются в больших картонных коробках. Для оптовых заказов перейдите по ссылке https://www.espressif.com/en/contact-us/sales-questions.
Справочник по оборудованию
Блок-схема. На блок-схеме ниже показаны компоненты ESP32-DevKitS(-R) и их взаимосвязи.

Рис. 5: ESP32-DevKitS(-R) (кликните для увеличения)
Варианты электропитания Существует три взаимоисключающих способа подачи питания на плату: · Порт Micro USB, источник питания по умолчанию · Контакты разъема 5 В и GND · Контакты разъема 3 В 3 и GND
Рекомендуется использовать первый вариант: порт micro USB.

Эспрессиф Системс

.

Сигнал метки

L1 3V3 VDD 3V3

L2 EN CHIP_PU

L3 VP SENSOR_VP

L4 VN SENSOR_VN

Л5 34

GPIO34

Л6 35

GPIO35

Л7 32

GPIO32

Л8 33

GPIO33

продолжение на следующей странице

8. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Таблица 1 продолжение предыдущей страницы

.

Сигнал метки

Л9 25

GPIO25

Л10 26

GPIO26

Л11 27

GPIO27

Л12 14

GPIO14

Л13 12

GPIO12

L14 Земля Земля

Л15 13

GPIO13

L16 D2 SD_DATA2

L17 D3 SD_DATA3

L18 CMD SD_CMD

Л19 5В

Внешний 5В

R1 Земля Земля

Р2 23

GPIO23

Р3 22

GPIO22

R4 TX U0TXD

R5 RX U0RXD

Р6 21

GPIO21

R7 Земля Земля

Р8 19

GPIO19

Р9 18

GPIO18

Р10 5

GPIO5

Р11 17

GPIO17

Р12 16

GPIO16

Р13 4

GPIO4

Р14 0

GPIO0

Р15 2

GPIO2

Р16 15

GPIO15

R17 D1 SD_DATA1

R18 D0 SD_DATA0

R19 CLK SD_CLK

Блоки заголовков Изображение блоков заголовков см. в разделе «Описание компонентов».

Связанные документы
· Схемы ESP32-DevKitS(-R) (PDF) · Техническое описание ESP32 (PDF) · Техническое описание ESP32-WROOM-32 (PDF) · Техническое описание ESP32-WROOM-32D и ESP32-WROOM-32U (PDF) · Техническое описание ESP32-SOLO-1 (PDF) · Техническое описание ESP32-WROVER (PDF) · Техническое описание ESP32-WROVER-B (PDF) · Селектор продуктов ESP

ESP32-DevKitM-1

Это руководство пользователя поможет вам начать работу с ESP32-DevKitM-1, а также предоставит более подробную информацию.
ESP32-DevKitM-1 — это плата разработки на базе ESP32-MINI-1(1U), разработанная компанией Espressif. Большинство контактов ввода/вывода выведены на разъёмы с обеих сторон для удобства подключения. Пользователи могут подключать периферийные устройства с помощью перемычек или монтировать ESP32-DevKitM-1 на макетную плату.

Эспрессиф Системс

9. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

ESP32-DevKitM-1 — спереди

ESP32-DevKitM-1 – изометрический

Документ состоит из следующих основных разделов: · Начало работы: содержит общее описаниеview инструкции по настройке ESP32-DevKitM-1 и оборудования/программного обеспечения для начала работы. · Справочник по оборудованию: содержит более подробную информацию об оборудовании ESP32-DevKitM-1ns. · Связанные документы: содержит ссылки на связанную документацию.

В этом разделе описывается, как начать работу с ESP32-DevKitM-1. Он начинается с нескольких вводных разделов о ESP32-DevKitM-1, затем в разделе «Начало разработки приложения» приводятся инструкции по первоначальной настройке оборудования и прошивке ESP32-DevKitM-1.

Надview Это небольшая и удобная макетная плата, в которой есть:
· Модуль ESP32-MINI-1 или ESP32-MINI-1U · Интерфейс программирования USB-последовательный порт, который также обеспечивает питание платы · Разъемы для контактов · Кнопки для сброса и активации режима загрузки прошивки · Несколько других компонентов

Содержание и упаковка

Розничные заказы Если вы заказываете несколько шт.ampкаждый ESP32-DevKitM-1 поставляется в индивидуальной упаковке в антистатическом пакете или любой другой упаковке в зависимости от вашего продавца.
Для розничных заказов перейдите по ссылке https://www.espressif.com/en/contact-us/get-sampлес.

Оптовые заказы. При заказе оптом доски поставляются в больших картонных коробках. Для оптовых заказов перейдите по ссылке https://www.espressif.com/en/contact-us/sales-questions.

Описание компонентов. На следующем рисунке и в таблице ниже описаны основные компоненты, интерфейсы и элементы управления платы ESP32-DevKitM-1. В качестве примера мы возьмем плату с модулем ESP32-MINI-1.ample в следующих разделах.

Эспрессиф Системс

10. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 6: ESP32-DevKitM-1 – передняя часть

Ключевой компонент: бортовой модуль
Кнопка загрузки LDO от 5 В до 3.3 В
Кнопка сброса Порт Micro-USB
Мост USB-UART, светодиодный индикатор питания 3.3 В
Разъем ввода/вывода

Описание
Модуль ESP32-MINI-1 или модуль ESP32-MINI-1U. ESP32-MINI-1 поставляется со встроенной антенной на печатной плате. ESP32-MINI-1U поставляется с разъёмом для внешней антенны. Оба модуля имеют встроенную флэш-память объёмом 4 МБ. Подробности см. в технических характеристиках ESP32-MINI-1 и ESP32-MINI-1U.
Регулятор питания преобразует 5 В в 3.3 В.
Кнопка «Загрузить». Удерживание кнопки «Загрузить» и последующее нажатие кнопки «Сброс» активирует режим загрузки прошивки через последовательный порт.
Кнопка сброса
USB-интерфейс. Блок питания для платы, а также интерфейс связи между компьютером и чипом ESP32.
Один чип моста USB-UART обеспечивает скорость передачи до 3 Мбит/с.
Включается при подключении USB к плате. Подробнее см. схемы в разделе «Документы по теме». Все доступные выводы GPIO (за исключением шины SPI для флеш-памяти) выведены на разъёмы на плате. Пользователи могут программировать микросхему ESP32 для активации различных функций.

Начните разработку приложения Перед включением ESP32-DevKitM-1 убедитесь, что он находится в хорошем состоянии и не имеет явных признаков повреждений.
Необходимое оборудование · ESP32-DevKitM-1 · Кабель USB 2.0 (стандартный A — Micro-B) · Компьютер под управлением Windows, Linux или macOS
Настройка программного обеспечения. Перейдите к разделу «Начало работы», где раздел «Установка» поможет вам быстро настроить среду разработки, а затем прошить приложение.ample на свой ESP32-DevKitM-1.

Эспрессиф Системс

11. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Внимание: на платах ESP32-DevKitM-1, выпущенных до 2 декабря 2021 года, установлен одноядерный модуль. Чтобы узнать, какой у вас модуль, проверьте маркировку модуля в PCN-2021-021. Если на вашей плате установлен одноядерный модуль, включите одноядерный режим (CONFIG_FREERTOS_UNICORE) в menuconfig перед прошивкой приложений.
Справочная блок-схема оборудования. На блок-схеме ниже показаны компоненты ESP32-DevKitM-1 и их взаимосвязи.

Рис. 7: ESP32-DevKitM-1
Выбор источника питания Существует три взаимоисключающих способа подачи питания на плату: · Порт Micro USB, источник питания по умолчанию · Контакты разъема 5 В и GND · Контакты разъема 3 В 3 и GND
Внимание: · Питание должно осуществляться только одним из указанных выше способов, в противном случае плата и/или источник питания могут быть повреждены. · Рекомендуется питание через порт micro USB.

Описание контактов. В таблице ниже приведены названия и функции контактов с обеих сторон платы. Информация о конфигурации контактов периферийных устройств приведена в техническом описании ESP32.

Нет.

Имя

Тип

1

Земля

P

2

3В3

P

Функция заземления 3.3 В питания

продолжение на следующей странице

Эспрессиф Системс

12. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Таблица 2 продолжение предыдущей страницы

Нет.

Имя

Тип

Функция

3

I36

I

GPIO36, АЦП1_CH0, RTC_GPIO0

4

I37

I

GPIO37, АЦП1_CH1, RTC_GPIO1

5

I38

I

GPIO38, АЦП1_CH2, RTC_GPIO2

6

I39

I

GPIO39, АЦП1_CH3, RTC_GPIO3

7

РСТ

I

Перезагрузить; Высокий: включить; Низкий: питание выключено

8

I34

I

GPIO34, АЦП1_CH6, RTC_GPIO4

9

I35

I

GPIO35, АЦП1_CH7, RTC_GPIO5

10

IO32

Ввод/вывод

GPIO32, XTAL_32K_P (вход кварцевого генератора 32.768 кГц),

АЦП1_CH4, TOUCH9, RTC_GPIO9

11

IO33

Ввод/вывод

GPIO33, XTAL_32K_N (выход кварцевого генератора 32.768 кГц),

АЦП1_CH5, TOUCH8, RTC_GPIO8

12

IO25

Ввод/вывод

GPIO25, DAC_1, ADC2_CH8, RTC_GPIO6, EMAC_RXD0

13

IO26

Ввод/вывод

GPIO26, DAC_2, ADC2_CH9, RTC_GPIO7, EMAC_RXD1

14

IO27

Ввод/вывод

GPIO27, ADC2_CH7, TOUCH7, RTC_GPIO17, EMAC_RX_DV

15

IO14

Ввод/вывод

GPIO14, ADC2_CH6, TOUCH6, RTC_GPIO16, MTMS, HSPICLK,

HS2_CLK, SD_CLK, EMAC_TXD2

16

5V

P

Источник питания 5 В

17

IO12

Ввод/вывод

GPIO12, ADC2_CH5, TOUCH5, RTC_GPIO15, MTDI, HSPIQ,

HS2_DATA2, SD_DATA2, EMAC_TXD3

18

IO13

Ввод/вывод

GPIO13, ADC2_CH4, TOUCH4, RTC_GPIO14, MTCK, HSPID,

HS2_DATA3, SD_DATA3, EMAC_RX_ER

19

IO15

Ввод/вывод

GPIO15, ADC2_CH3, TOUCH3, RTC_GPIO13, MTDO, HSPICS0,

HS2_CMD, SD_CMD, EMAC_RXD3

20

IO2

Ввод/вывод

GPIO2, ADC2_CH2, TOUCH2, RTC_GPIO12, HSPIWP,

HS2_DATA0, SD_DATA0

21

IO0

Ввод/вывод

GPIO0, ADC2_CH1, TOUCH1, RTC_GPIO11, CLK_OUT1,

EMAC_TX_CLK

22

IO4

Ввод/вывод

GPIO4, ADC2_CH0, TOUCH0, RTC_GPIO10, HSPIHD,

HS2_DATA1, SD_DATA1, EMAC_TX_ER

23

IO9

Ввод/вывод

GPIO9, HS1_DATA2, U1RXD, SD_DATA2

24

IO10

Ввод/вывод

GPIO10, HS1_DATA3, U1TXD, SD_DATA3

25

IO5

Ввод/вывод

GPIO5, HS1_DATA6, VSPICS0, EMAC_RX_CLK

26

IO18

Ввод/вывод

GPIO18, HS1_DATA7, ВСПИКЛК

27

IO23

Ввод/вывод

GPIO23, HS1_STROBE, VSPID

28

IO19

Ввод/вывод

GPIO19, VSPIQ, U0CTS, EMAC_TXD0

29

IO22

Ввод/вывод

GPIO22, ВСПИВП, U0RTS, EMAC_TXD1

30

IO21

Ввод/вывод

GPIO21, ВСПИХД, EMAC_TX_EN

31

ТХД0

Ввод/вывод

GPIO1, U0TXD, CLK_OUT3, EMAC_RXD2

32

RXD0

Ввод/вывод

GPIO3, U0RXD, CLK_OUT2

Сведения о версии оборудования Предыдущие версии недоступны.
Связанные документы
· Технические характеристики ESP32-MINI-1 и ESP32-MINI-1U (PDF) · Схемы ESP32-DevKitM-1 (PDF) · Схема печатной платы ESP32-DevKitM-1 (PDF) · Схема ESP32-DevKitM-1 (DXF) – Вы можете view это с Autodesk Viewонлайн · Техническое описание ESP32 (PDF) · Выбор продукта ESP
Для получения другой проектной документации по плате свяжитесь с нами по адресу sales@espressif.com.

Эспрессиф Системс

13. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
1.2.2 Программное обеспечение
Чтобы начать использовать ESP-IDF на ESP32, установите следующее программное обеспечение: · Набор инструментов для компиляции кода для ESP32 · Инструменты сборки – CMake и Ninja для создания полноценного приложения для ESP32 · ESP-IDF, который по сути содержит API (библиотеки программного обеспечения и исходный код) для ESP32 и скрипты для работы набора инструментов

1.3 Установка
Для установки всего необходимого программного обеспечения мы предлагаем несколько способов облегчить эту задачу. Выберите один из доступных вариантов.
1.3.1 IDE

Примечание: Мы настоятельно рекомендуем установить ESP-IDF через вашу любимую IDE.
· Плагин Eclipse · Расширение VSCode

1.3.2 Ручная установка
Для ручной процедуры выберите соответствующую вашей операционной системе.

Эспрессиф Системс

14. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Стандартная установка Toolchain для Windows
Введение ESP-IDF требует установки некоторых обязательных инструментов, чтобы вы могли собирать прошивку для поддерживаемых чипов. К обязательным инструментам относятся Python, Git, кросс-компиляторы, инструменты сборки CMake и Ninja. Для этого начала работы мы будем использовать командную строку, но после установки ESP-IDF вы можете использовать плагин Eclipse или другую графическую IDE с поддержкой CMake. Примечание: Ограничения: — Путь установки ESP-IDF и инструментов ESP-IDF не должен быть длиннее 90 символов. Слишком длинные пути установки могут привести к сбою сборки. — Путь установки Python или ESP-IDF не должен содержать пробелов и скобок. — Путь установки Python или ESP-IDF не должен содержать специальные символы (не ASCII), если операционная система не настроена на поддержку Unicode UTF-8p. Системный администратор может включить поддержку через Панель управления - Изменение форматов даты, времени или чисел - вкладка Администрирование - Изменить язык системы - отметьте опцию oBeta: Использовать Unicode UTF-8 для поддержки языков во всем мире - Нажмите «ОК» и перезагрузите компьютер.
Установщик инструментов ESP-IDF Самый простой способ установить необходимые компоненты ESP-IDFns — загрузить один из установщиков инструментов ESP-IDF.

Загрузка установщика Windows
Для чего используются онлайн- и офлайн-установщики? Онлайн-установщик очень компактен и позволяет устанавливать все доступные версии ESP-IDF. Установщик загрузит только необходимые зависимости, включая Git для Windows, в процессе установки. Установщик сохраняет загруженные files в каталоге кэша %userprofile%. эспрессиф
Автономный установщик не требует подключения к сети. Установщик содержит все необходимые зависимости, включая Git для Windows.
Компоненты установки Установщик развертывает следующие компоненты:
· Встроенный Python · Кросс-компиляторы · OpenOCD · Инструменты сборки CMake и Ninja · ESP-IDF
Установщик также позволяет повторно использовать существующий каталог с ESP-IDF. Рекомендуемый каталог — %userpro.file%Desktopesp-idf где %userprofile% — ваш домашний каталог.

Эспрессиф Системс

15. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Запуск среды ESP-IDF. В конце установки выберите «Запустить среду ESP-IDF PowerShell» или «Запустить командную строку ESP-IDF (cmd.exe)». Установщик запустит среду ESP-IDF в выбранной командной строке. Запустить среду ESP-IDF PowerShell:

Рис. 8: Завершение работы мастера настройки инструментов ESP-IDF с запуском среды PowerShell ESP-IDF
Запустите командную строку ESP-IDF (cmd.exe):
Использование командной строки. Для выполнения оставшихся шагов «Начало работы» мы будем использовать командную строку Windows. Установщик инструментов ESP-IDF также создаёт ярлык в меню «Пуск» для запуска командной строки ESP-IDF. Этот ярлык запускает командную строку (cmd.exe) и скрипт export.bat для настройки переменных среды (PATH, IDF_PATH и других). В этой командной строке доступны все установленные инструменты. Обратите внимание, что этот ярлык относится к каталогу ESP-IDF, выбранному в установщике инструментов ESP-IDF. Если на компьютере несколько каталогов ESP-IDF (например,ampт. е. для работы с различными версиями ESP-IDF), у вас есть два варианта их использования:
1. Создайте копию ярлыка, созданного установщиком инструментов ESP-IDF, и измените рабочий каталог нового ярлыка на каталог ESP-IDF, который вы хотите использовать.
2. Альтернативный вариант: запустите cmd.exe, перейдите в нужный каталог ESP-IDF и запустите export.bat. Обратите внимание, что в отличие от предыдущего варианта, этот способ требует наличия Python и Git в переменной PATH. Если возникают ошибки, связанные с отсутствием Python или Git, используйте первый вариант.
Первые шаги на ESP-IDF Теперь, когда все требования выполнены, следующая тема расскажет вам, как начать свой первый проект.

Эспрессиф Системс

16. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы Рис. 9: ESP-IDF PowerShell

Рис. 10: Завершение работы мастера настройки инструментов ESP-IDF с помощью командной строки ESP-IDF (cmd.exe)

Эспрессиф Системс

17. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 11: Командная строка ESP-IDF

Эспрессиф Системс

18. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Это руководство поможет вам сделать первые шаги в использовании ESP-IDF. Следуйте этому руководству, чтобы начать новый проект на ESP32, собрать, прошить и отслеживать выходные данные устройства. Примечание: Если вы ещё не установили ESP-IDF, перейдите к разделу «Установка» и следуйте инструкциям, чтобы получить всё необходимое программное обеспечение для использования этого руководства.

Начать проект. Теперь вы готовы подготовить приложение для ESP32. Вы можете начать с проекта getstarted/hello_world из ex.amples в ESP-IDF.
Важно: Система сборки ESP-IDF не поддерживает пробелы в путях к ESP-IDF или к проектам.
Скопируйте проект get-started/hello_world в каталог ~/esp: cd %userprofile%esp xcopy /e /i %IDF_PATH%examplesget-startedhello_world hello_world
Примечание: существует ряд эксampле проектов в бывшемamples в ESP-IDF. Вы можете скопировать любой проект таким же образом, как представлено выше, и запустить его. Также возможно построить эксampфайлы на месте без их предварительного копирования.

Подключите устройство. Теперь подключите плату ESP32 к компьютеру и проверьте, какой последовательный порт отображается на плате. В Windows названия последовательных портов начинаются с COM. Если вы не знаете, как проверить имя последовательного порта, см. статью «Установка последовательного соединения с ESP32» для получения подробной информации.
Примечание. Сохраните имя порта под рукой, оно понадобится вам на следующих шагах.

Настройте свой проект. Перейдите в каталог hello_world, установите ESP32 в качестве целевого устройства и запустите утилиту настройки проекта menuconfig.
Windows cd %userprofile%esphello_world idf.py set-target esp32 idf.py menuconfig
После открытия нового проекта необходимо сначала задать целевой процессор с помощью команды idf.py set-target esp32. Обратите внимание, что существующие сборки и конфигурации проекта, если таковые имеются, будут очищены и инициализированы в ходе этого процесса. Целевой процессор можно сохранить в переменной окружения, чтобы пропустить этот шаг. Дополнительную информацию см. в разделе Выбор целевого чипа: set-target. Если предыдущие шаги были выполнены правильно, появится следующее меню: Это меню используется для настройки переменных проекта, таких как имя и пароль сети Wi-Fi, скорость процессора и т. д. Настройку проекта с помощью menuconfig можно пропустить для ohello_wordp, поскольку этот example запускается с конфигурацией по умолчанию.
Внимание: если вы используете плату ESP32-DevKitC с модулем ESP32-SOLO-1 или плату ESP32-DevKitM-1 с модулем ESP32-MIN1-1(1U), включите одноядерный режим (CONFIG_FREERTOS_UNICORE) в menuconfig перед прошивкой exampлес.

Эспрессиф Системс

19. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 12: Конфигурация проекта – Главное окно
Примечание: Цвета меню могут отличаться в вашем терминале. Вы можете изменить внешний вид с помощью параметра --style. Для получения дополнительной информации выполните команду idf.py menuconfig –help.
Если вы используете одну из поддерживаемых плат разработки, вы можете ускорить разработку, воспользовавшись пакетом поддержки плат. Подробнее см. в разделе «Дополнительные советы».
Сборка проекта. Сборка проекта выполняется путем запуска:
idf.py сборка
Эта команда скомпилирует приложение и все компоненты ESP-IDF, а затем сгенерирует загрузчик, таблицу разделов и двоичные файлы приложения.
$ idf.py build Запуск cmake в каталоге /path/to/hello_world/build Выполнение «cmake -G Ninja –warn-uninitialized /path/to/hello_world»… Предупреждать о неинициализированных значениях. — Найден Git: /usr/bin/git (найдена версия «2.17.0») — Сборка пустого компонента aws_iot из-за конфигурации — Имена компонентов: … — Пути к компонентам: …
… (Больше строк вывода системы сборки)
[527/527] Создание hello_world.bin esptool.py v2.3.1
Сборка проекта завершена. Для прошивки выполните команду: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin или выполните команду idf.py -p PORT flash.
Если ошибок нет, сборка завершится созданием бинарного файла прошивки .bin. files.

Эспрессиф Системс

20. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Перепрошить на устройство Перепрошить только что собранные вами двоичные файлы (bootloader.bin, partition-table.bin и hello_world.bin) на плату ESP32, выполнив команду: idf.py -p PORT [-b BAUD] flash
Замените PORT именем последовательного порта вашей платы ESP32. Вы также можете изменить скорость передачи данных флешера, заменив BAUD нужным значением. Скорость передачи данных по умолчанию — 460800 бод. Подробнее об аргументах idf.py см. в файле idf.py.
Примечание: опция flash автоматически собирает и прошивает проект, поэтому запускать сборку idf.py не обязательно.

Возникли проблемы при прошивке? Если при выполнении данной команды появляются ошибки, такие как «Failed to connectp», это может быть вызвано несколькими причинами. Одной из них могут быть проблемы с esptool.py — утилитой, вызываемой системой сборки для сброса микросхемы, взаимодействия с загрузчиком ПЗУ и прошивки прошивки. Одним из простых решений является ручной сброс, описанный ниже. Если это не поможет, более подробную информацию о возможных проблемах можно найти в разделе «Устранение неполадок».
esptool.py автоматически сбрасывает ESP32, активируя линии управления DTR и RTS микросхемы преобразователя USB в последовательный порт, например, FTDI или CP210x (подробнее см. в разделе «Установка последовательного соединения с ESP32»). Линии управления DTR и RTS, в свою очередь, подключены к выводам GPIO0 и CHIP_PU (EN) ESP32, что приводит к изменению уровня громкости.tagУровни DTR и RTS загрузят ESP32 в режим загрузки прошивки. Например,ampле, проверьте схему платы разработки ESP32 DevKitC.
В целом, с официальными платами разработки esp-idf проблем возникнуть не должно. Однако esptool.py не сможет автоматически сбросить настройки оборудования в следующих случаях:
· На вашем оборудовании линии DTR и RTS не подключены к GPIO0 и CHIP_PU. · Линии DTR и RTS настроены по-разному. · Такие линии последовательного управления отсутствуют.
В зависимости от типа имеющегося у вас оборудования вы также можете вручную перевести плату ESP32 в режим загрузки прошивки (сброс).
· Для плат разработки производства Espressif эту информацию можно найти в соответствующих руководствах по началу работы или руководствах пользователя. Например:ample, чтобы вручную сбросить настройки платы разработки ESP-IDF, удерживайте кнопку Boot (GPIO0) и нажмите кнопку EN (CHIP_PU).
· Для других типов оборудования попробуйте понизить уровень GPIO0.

Нормальная работа. При перепрошивке вы увидите журнал выходных данных, подобный следующему:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Последовательный порт /dev/ttyUSB0 Подключение…….._ Чип ESP32D0WDQ6 (ревизия 0) Особенности: WiFi, BT, двухъядерный процессор, схема кодирования Нет Кристалл 40 МГц MAC: 24:0a:c4:05:b9:14 Загрузка заглушки… Запуск заглушки… Запуск заглушки… Изменение скорости передачи данных на 460800 Изменено.
(продолжение на следующей странице)

Эспрессиф Системс

21. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
(продолжение с предыдущей страницы) Настройка размера флэш-памяти… Сжато 3072 байта в 103… Запись по адресу 0x00008000… (100 %) Записано 3072 байта (сжато 103) по адресу 0x00008000 за 0.0 секунд (эффективная скорость 5962.8 кбит/с)… Хэш данных проверен. Сжато 26096 байт в 15408… Запись по адресу 0x00001000… (100 %) Записано 26096 байт (сжато 15408) по адресу 0x00001000 за 0.4 секунды (эффективная скорость 546.7 кбит/с)… Хэш данных проверен. Сжато 147104 байт в 77364… Запись по адресу 0x00010000… (20 %) Запись по адресу 0x00014000… (40 %) Запись по адресу 0x00018000… (60 %) Запись по адресу 0x0001c000… (80 %) Запись по адресу 0x00020000… (100 %) Записано 147104 байт (77364 сжато) по адресу 0x00010000 за 1.9 секунды (эффективная скорость 615,5 кбит/с)… Хэш данных проверен.
Выход… Аппаратный сброс через пин RTS… Готово
Если к концу процесса прошивки проблем не возникнет, плата перезагрузится и запустит приложение theohello_worldp. Если вы предпочитаете использовать Eclipse или VS Code IDE вместо idf.py, ознакомьтесь с плагином Eclipse и расширением VSCode.
Контролируйте вывод. Чтобы проверить, действительно ли запущен ohello_worldpis, введите idf.py -p PORT monitor (не забудьте заменить PORT на имя вашего последовательного порта).
Эта команда запускает приложение IDF Monitor:
$ idf.py -p монитор Запуск idf_monitor в каталоге […]/esp/hello_world/build Выполнение «python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf»… — idf_monitor включен 115200 —– Выход: Ctrl+] | Меню: Ctrl+T | Справка: Ctrl+T, а затем Ctrl+H –ets 8 июня 2016 г., 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 июня 2016 г. 00:22:57 …
После прокрутки журналов запуска и диагностики вы должны увидеть сообщение oHello world!p, напечатанное приложением.
… Привет, мир! Перезапуск через 10 секунд… Это чип ESP32 с 2 ядрами, Wi-Fi/BT/BLE, ревизия кремния 1, внешняя флеш-память 2 МБ. Минимальный размер свободной кучи: 298968 байт. Перезапуск через 9 секунд… Перезапуск через 8 секунд… Перезапуск через 7 секунд…
Для выхода из монитора IDF используйте сочетание клавиш Ctrl+].

Эспрессиф Системс

22. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Если монитор IDF выходит из строя вскоре после загрузки или вместо сообщений, указанных выше, вы видите случайный мусор, подобный приведённому ниже, вероятно, на вашей плате используется кварцевый резонатор с частотой 26 МГц. Большинство плат разработки используют частоту 40 МГц, поэтому ESP-IDF использует эту частоту по умолчанию.

Если у вас возникла такая проблема, выполните следующие действия: 1. Выйдите из монитора. 2. Вернитесь в menuconfig. 3. Перейдите в Component config > Hardware Settings > Main XTAL Config > Main XTAL frequency, затем измените CONFIG_XTAL_FREQ_SEL на 26 МГц. 4. После этого снова соберите и прошейте приложение.
В текущей версии ESP-IDF основные частоты XTAL, поддерживаемые ESP32, следующие:
· 26 МГц · 40 МГц
Примечание: Вы можете объединить сборку, перепрошивку и мониторинг в один шаг, выполнив: idf.py -p PORT flash monitor
См. также: · IDF Monitor для удобных сочетаний клавиш и более подробной информации об использовании IDF Monitor. · idf.py для полного справочника команд и параметров idf.py.
Вот и всё, что нужно для начала работы с ESP32! Теперь вы готовы попробовать другие варианты.amples или сразу перейти к разработке собственных приложений.
Важно: Некоторые из бывшихampФайлы не поддерживают ESP32, поскольку необходимое оборудование не включено в ESP32, поэтому поддержка невозможна. При сборке exampле, пожалуйста, проверьте README file для таблицы поддерживаемых целей. Если она присутствует, включая цель ESP32, или таблица вообще не существует,ample будет работать на ESP32.
Дополнительные советы
Проблемы с правами доступа /dev/ttyUSB0. В некоторых дистрибутивах Linux при перепрошивке ESP32 может возникнуть сообщение об ошибке «Не удалось открыть порт /dev/ttyUSB0». Эту проблему можно решить, добавив текущего пользователя в группу dialout.
Совместимость с Python. ESP-IDF поддерживает Python 3.7 и более поздние версии. Рекомендуется обновить операционную систему до последней версии, удовлетворяющей этому требованию. Другие варианты включают установку Python из исходных кодов или использование системы управления версиями Python, например pyenv.
Начните с пакета поддержки плат. Чтобы ускорить создание прототипов на некоторых платах разработки, вы можете использовать пакеты поддержки плат (BSP), которые упрощают инициализацию конкретной платы до нескольких вызовов функций.

Эспрессиф Системс

23. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

BSP обычно поддерживает все аппаратные компоненты, предоставляемые на плате разработки. Помимо функций определения распиновки и инициализации, BSP поставляется с драйверами для внешних компонентов, таких как датчики, дисплеи, аудиокодеки и т. д. BSP распространяются через IDF Component Manager, поэтому их можно найти в реестре компонентов IDF. Вот примерample того, как добавить ESP-WROVER-KIT BSP в ваш проект: idf.py add-dependency esp_wrover_kit
Больше бывшегоampФайлы использования BSP можно найти в BSP exampпапка les.
Связанные документы Для опытных пользователей, желающих настроить процесс установки: · Обновление инструментов ESP-IDF в Windows · Установка последовательного соединения с ESP32 · Плагин Eclipse · Расширение VSCode · Монитор IDF
Обновление инструментов ESP-IDF в Windows
Установка инструментов ESP-IDF с помощью скрипта. В командной строке Windows перейдите в каталог, где установлен ESPIDF. Затем выполните:
установить.bat
Для PowerShell перейдите в каталог, где установлен ESP-IDF. Затем выполните:
install.ps1
Это загрузит и установит инструменты, необходимые для использования ESP-IDF. Если определённая версия инструмента уже установлена, никаких действий не будет выполнено. Инструменты загружаются и устанавливаются в каталог, указанный во время установки инструментов ESP-IDF. По умолчанию это C:\Users\имя_пользователя.espressif.
Добавьте инструменты ESP-IDF в PATH с помощью скрипта экспорта. Установщик инструментов ESP-IDF создаст ярлык для командной строки oESP-IDF в меню «Пуск». Этот ярлык откроет окно командной строки, в котором уже установлены все инструменты.
Доступно. В некоторых случаях может потребоваться работать с ESP-IDF в окне командной строки, которое не было запущено с помощью этого ярлыка. В этом случае следуйте инструкциям ниже, чтобы добавить инструменты ESP-IDF в переменную PATH. В командной строке, где требуется использовать ESP-IDF, перейдите в каталог, где установлен ESP-IDF, и выполните файл export.bat:
компакт-диск %userprofile%espesp-idf export.bat
Либо в PowerShell, где вам нужно использовать ESP-IDF, перейдите в каталог, где установлен ESP-IDF, а затем выполните export.ps1:
cd ~/esp/esp-idf export.ps1
После этого инструменты будут доступны в этой командной строке.
Установка последовательного соединения с ESP32 В этом разделе приведены инструкции по установке последовательного соединения между ESP32 и ПК.

Эспрессиф Системс

24. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Подключение ESP32 к ПК. Подключите плату ESP32 к ПК с помощью USB-кабеля. Если драйвер устройства не устанавливается автоматически, найдите микросхему преобразователя USB в последовательный интерфейс на вашей плате ESP32 (или внешнем адаптере), найдите драйверы в интернете и установите их. Ниже приведён список микросхем преобразователей USB в последовательный интерфейс, установленных на большинстве плат ESP32 производства Espressif, а также ссылки на драйверы:
· CP210x: Драйверы VCP для моста USB-UART CP210x · FTDI: Драйверы виртуального COM-порта FTDI. Информация об используемом чипе USB-последовательного преобразователя приведена в руководстве пользователя платы. Драйверы, указанные выше, приведены в справочных целях. Обычно драйверы поставляются вместе с операционной системой и устанавливаются автоматически при подключении платы к ПК.
Проверьте порт в Windows. Проверьте список обнаруженных COM-портов в диспетчере устройств Windows. Отключите ESP32 и подключите его снова, чтобы проверить, какой порт исчез из списка, а затем снова появился. На рисунках ниже показан последовательный порт для ESP32 DevKitC и ESP32 WROVER KIT.

Рис. 13: Мост USB-UART ESP32-DevKitC в диспетчере устройств Windows

Проверка порта в Linux и macOS Чтобы проверить имя устройства для последовательного порта вашей платы ESP32 (или внешнего преобразователя), выполните эту команду два раза: сначала с отключенной платой/ключом, затем с подключенным. Порт, который появится во второй раз, — это тот, который вам нужен: Linux
ls / dev / tty *
macOS

Эспрессиф Системс

25. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 14: Два последовательных порта USB ESP-WROVER-KIT в диспетчере устройств Windows

Эспрессиф Системс

26. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

ls /dev/cu.* Примечание: для пользователей macOS: если вы не видите последовательный порт, проверьте, установлены ли драйверы USB/последовательного порта. Ссылки на драйверы см. в разделе «Подключение ESP32 к ПК». В macOS High Sierra (10.13) может потребоваться явно разрешить загрузку драйверов. Откройте «Системные настройки» -> «Безопасность и конфиденциальность» -> «Основные» и проверьте, отображается ли сообщение о системном программном обеспечении от разработчика lp, где имя разработчика — Silicon Labs или FTDI.

Добавление пользователя в группу dialout в Linux. Текущий пользователь должен иметь доступ на чтение и запись к последовательному порту через USB. В большинстве дистрибутивов Linux это делается путем добавления пользователя в группу dialout с помощью следующей команды:
sudo usermod -a -G дозвон $USER
в Arch Linux это делается путем добавления пользователя в группу uucp с помощью следующей команды:
sudo usermod -a -G uucp $USER
Убедитесь, что вы повторно вошли в систему, чтобы включить разрешения на чтение и запись для последовательного порта.
Проверка последовательного соединения. Теперь проверьте работоспособность последовательного соединения. Это можно сделать с помощью программы-терминала, проверив наличие выходных данных на терминале после сброса ESP32. Скорость передачи данных консоли по умолчанию для ESP32 составляет 115200 бод.
Windows и Linux В этом бывш.ampМы будем использовать SSH-клиент PuTTY, доступный как для Windows, так и для Linux. Вы можете использовать другие программы для последовательного порта и настроить параметры связи, как показано ниже. Запустите терминал и укажите идентифицированный последовательный порт. Скорость передачи данных = 115200 бод (при необходимости измените её на скорость по умолчанию для используемого чипа), биты данных = 8, стоповые биты = 1 и чётность = N. Ниже приведены примерыampСкриншоты настроек порта и параметров передачи (кратко 115200-8-1-N) в Windows и Linux. Не забудьте выбрать тот же последовательный порт, который вы указали в предыдущих шагах. Затем откройте последовательный порт в терминале и проверьте, есть ли какой-либо журнал, выводимый ESP32. Содержимое журнала будет зависеть от приложения, загруженного в ESP32, см. пример.ample Выход.
Примечание: Закройте последовательный терминал после проверки наличия связи. Если оставить сеанс терминала открытым, последовательный порт будет недоступен для последующей загрузки прошивки.

macOS Чтобы избавить вас от необходимости устанавливать программу последовательного терминала, macOS предлагает команду screen. · Как обсуждалось в разделе Проверка порта в Linux и macOS, выполните:

ls /dev/cu.* · Вы должны увидеть похожий вывод:

/dev/cu.Bluetooth-Входящий-Порт /dev/cu.SLAB_USBtoUART USBtoUART7

/dev/cu.SLAB_

· Выходные данные будут различаться в зависимости от типа и количества плат, подключенных к вашему ПК. Затем выберите имя устройства вашей платы и выполните команду (при необходимости измените o115200p на скорость передачи данных по умолчанию для используемого чипа):

экран /dev/cu.device_name 115200 Замените device_name на имя, найденное при запуске ls /dev/cu.*.

Эспрессиф Системс

27. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 15: Настройка последовательной связи в PuTTY в Windows

Эспрессиф Системс

28. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Рис. 16: Настройка последовательной связи в PuTTY на Linux

Эспрессиф Системс

29. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
· Вам нужен журнал, отображаемый на экране. Содержимое журнала зависит от приложения, загруженного в ESP32, см. пример.ample Output. To exit the screen session type Ctrl-A + .
Примечание: Не забудьте выйти из сеанса Screen после проверки работоспособности связи. Если вы этого не сделаете и просто закроете окно терминала, последовательный порт будет недоступен для последующей загрузки прошивки.
Example Output An exampЛог показан ниже. Если ничего не видно, сбросьте настройки. ets 8 июня 2016 г., 00:22:57
rst:0x5 (DEEPSLEEP_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 июня 2016 г. 00:22:57
rst:0x7 (TG0WDT_SYS_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) configsip: 0, SPIWP:0x00 clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00 mode:DIO, clock div:2 load:0x3fff0008,len:8 load:0x3fff0010,len:3464 load:0x40078000,len:7828 load:0x40080000,len:252 entry 0x40080034 I (44) boot: ESP-IDF v2.0-rc1-401-gf9fba35 2nd stagзагрузчик e I (45) загрузка: время компиляции 18:48:10

Если вы видите читаемый вывод журнала, это означает, что последовательное соединение работает, и вы готовы приступить к установке и, наконец, загрузке приложения в ESP32.
Примечание: Для некоторых конфигураций подключения последовательного порта необходимо отключить последовательные выводы RTS и DTR в терминальной программе, прежде чем ESP32 загрузится и начнет выводить последовательный сигнал. Это зависит от самого оборудования; большинство плат разработки (включая все платы Espressif) не имеют этой проблемы. Проблема возникает, если RTS и DTR подключены напрямую к выводам EN и GPIO0. Подробнее см. в документации esptool.
Если вы попали сюда с Шага 5. Первые шаги по ESP-IDF при установке ПО для разработки ESP32, то вы можете продолжить с Шага 5. Первые шаги по ESP-IDF.
IDF Monitor. IDF Monitor — это программа-терминал последовательного порта, которая передаёт данные на последовательный порт целевого устройства и обратно. Она также предоставляет некоторые специфические функции IDF. IDF Monitor можно запустить из проекта IDF, выполнив команду idf.py monitor.
Сочетания клавиш Для удобства взаимодействия с IDF Monitor используйте сочетания клавиш, указанные в таблице.

Эспрессиф Системс

30. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Сочетание клавиш Ctrl+] Ctrl+T
· Ctrl+T
· Ctrl+] · Ctrl+P
· Ctrl+R
· Ctrl+F
· Ctrl+A (или A)
· Ctrl+Y
· Ctrl+L
· Ctrl+I (или I)
· Ctrl+H (или H)
· Ctrl+X (или X)
Ctrl+С

Действие

Описание

Выход из программы. Клавиша выхода из меню. Отправка символа меню на пульт ДУ.
Отправить сам символ выхода на удаленный компьютер
Сбросьте цель в загрузчик, чтобы приостановить приложение через линию RTS
Сбросить целевую доску через RTS
Собрать и прошить проект

Только сборка и прошивка приложения

Остановка/возобновление печати журнала на экране

Остановка/возобновление вывода журнала сохранено в file

Остановить/возобновить времяamps

печать

Показать все сочетания клавиш

Нажмите и следуйте за ним, нажав одну из клавиш, указанных ниже.
Сбрасывает целевую плату в режим загрузчика через линию RTS (если подключена), чтобы плата ничего не запускала. Полезно, когда нужно дождаться запуска другого устройства. Сбрасывает целевую плату и перезапускает приложение через линию RTS (если подключена).
Приостанавливает idf_monitor для запуска Flash-целевого объекта проекта, а затем возобновляет работу idf_monitor. Любое изменение исходного кода files перекомпилируются и затем перепрошиваются. Целевой encrypted-flash запускается, если idf_monitor был запущен с аргументом -E. Приостанавливает idf_monitor для запуска цели app-flash, а затем возобновляет idf_monitor. Аналогично цели flash, но собирается и перепрошивается только основное приложение. Целевой encrypted-app-flash запускается, если idf_monitor был запущен с аргументом -E. Отбрасывает все входящие последовательные данные во время активации. Позволяет быстро приостановить и просмотреть вывод журнала, не выходя из монитора. Создаёт file в каталоге проекта, и вывод записывается туда file Пока это не будет отключено той же комбинацией клавиш (или IDF Monitor не закроется). IDF Monitor может вывести времяamp В начале каждой строки. Времяamp формат можно изменить с помощью --timestamp-format аргумент командной строки.

Выйти из программы

Прерывание работы приложения

Приостанавливает IDF Monitor и запускает отладчик проекта GDB для отладки приложения во время выполнения. Для этого требуется включить опцию :ref:CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME.

Любое нажатие клавиш, кроме Ctrl-] и Ctrl-T, будет отправлено через последовательный порт.

Специфические особенности ЦАХАЛа

Автоматическое декодирование адреса Всякий раз, когда ESP-IDF выводит шестнадцатеричный код адреса в форме 0x4_______, IDF Monitor использует addr2line_ для поиска местоположения в исходном коде и нахождения имени функции.
Если приложение ESP-IDF аварийно завершает работу и дает сбой, создается дамп регистра и обратная трассировка, например, следующие:

Эспрессиф Системс

31. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Ошибка медитации гуру типа StoreProhibited произошла на ядре 0. Исключение было

необработанный.

Дамп регистра:

PC

: 0x400f360d PS

: 0x00060330 А0

: 0x800dbf56 A1

:

0x3ffb7e00

A2

: 0x3ffb136c A3

: 0x00000005 А4

: 0x00000000 А5

:

0x00000000

A6

: 0x00000000 А7

: 0x00000080 А8

: 0x00000000 А9

:

0x3ffb7dd0

А10

: 0x00000003 А11

: 0x00060f23 А12

: 0x00060f20 А13

:

0x3ffba6d0

А14

: 0x00000047 А15

: 0x0000000f SAR

: 0x00000019 ИЗВИНЕНИЕ:

0x0000001d

EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90

IDF Monitor добавляет к дампу больше подробностей:

Ошибка медитации гуру типа StoreProhibited произошла на ядре 0. Исключение было

необработанный.

Дамп регистра:

PC

: 0x400f360d PS

: 0x00060330 А0

: 0x800dbf56 A1

:

0x3ffb7e00

0x400f360d: do_something_to_crash в /home/gus/esp/32/idf/examples/get-started/

hello_world/main/./hello_world_main.c:57

(встроено) inner_dont_crash в /home/gus/esp/32/idf/examples/get-started/hello_

мир/main/./hello_world_main.c:52

A2

: 0x3ffb136c A3

: 0x00000005 А4

: 0x00000000 А5

:

0x00000000

A6

: 0x00000000 А7

: 0x00000080 А8

: 0x00000000 А9

:

0x3ffb7dd0

А10

: 0x00000003 А11

: 0x00060f23 А12

: 0x00060f20 А13

:

0x3ffba6d0

А14

: 0x00000047 А15

: 0x0000000f SAR

: 0x00000019 ИЗВИНЕНИЕ:

0x0000001d

EXCVADDR: 0x00000000 LBEG : 0x4000c46c LEND : 0x4000c477 LCOUNT :

0x00000000

Backtrace: 0x400f360d:0x3ffb7e00 0x400dbf56:0x3ffb7e20 0x400dbf5e:0x3ffb7e40 0x400dbf82:0x3ffb7e60 0x400d071d:0x3ffb7e90 0x400f360d: do_something_to_crash at /home/gus/esp/32/idf/examples/get-started/ hello_world/main/./hello_world_main.c:57 (встроено) inner_dont_crash в /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:52 0x400dbf56: still_dont_crash в /home/gus/esp/32/idf/examples/get-started/hello_ world/main/./hello_world_main.c:47 0x400dbf5e: dont_crash at /home/gus/esp/32/idf/examples/get-started/hello_world/ main/./hello_world_main.c:42 0x400dbf82: app_main в /home/gus/esp/32/idf/examples/get-started/hello_world/main/ ./hello_world_main.c:33 0x400d071d: main_task в /home/gus/esp/32/idf/components/esp32/./cpu_start.c:254

Для декодирования каждого адреса IDF Monitor выполняет следующую команду в фоновом режиме: xtensa-esp32-elf-addr2line -pfiaC -e build/PROJECT.elf ADDRESS

Примечание: установите переменную окружения ESP_MONITOR_DECODE на 0 или вызовите idf_monitor.py с указанной командной строкой.

Эспрессиф Системс

32. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
опция: idf_monitor.py –disable-address-decoding для отключения декодирования адресов.
Сброс целевого устройства при подключении. По умолчанию IDF Monitor сбрасывает целевое устройство при подключении к нему. Сброс целевого устройства выполняется через последовательные линии DTR и RTS. Чтобы предотвратить автоматический сброс целевого устройства при подключении, вызовите IDF Monitor с опцией –no-reset (например, idf_monitor.py –no-reset).
Примечание: Параметр –no-reset применяет то же поведение даже при подключении IDF Monitor к определенному порту (например, idf.py monitor –no-reset -p [PORT]).
Запуск GDB с помощью GDBStub. GDBStub — это полезная функция отладки во время выполнения, которая запускается на целевой машине и подключается к хосту через последовательный порт для получения отладочных команд. GDBStub поддерживает такие команды, как чтение памяти и переменных, просмотр кадров стека вызовов и т. д. Хотя GDBStub менее универсален, чем JTAG отладки, не требует специального оборудования (например, JTAG (к мосту USB), поскольку взаимодействие осуществляется полностью через последовательный порт. Целевую систему можно настроить на запуск GDBStub в фоновом режиме, установив параметр CONFIG_ESP_SYSTEM_PANIC в значение GDBStub во время выполнения. GDBStub будет работать в фоновом режиме до тех пор, пока по последовательному порту не будет отправлено сообщение Ctrl+C, которое заставит GDBStub прервать (т.е. остановить выполнение) программу, что позволит GDBStub обрабатывать команды отладки. Кроме того, обработчик паники можно настроить на запуск GDBStub при сбое, установив параметр CONFIG_ESP_SYSTEM_PANIC в значение GDBStub при панике. При возникновении сбоя GDBStub выводит специальный строковый шаблон через последовательный порт, указывающий на то, что он запущен. В обоих случаях (то есть при отправке сообщения Ctrl+C или получении специального строкового шаблона) IDF Monitor автоматически запускает GDB, чтобы пользователь мог отправлять команды отладки. После выхода из GDB целевая система сбрасывается через последовательный порт RTS. Если эта линия не подключена, пользователи могут сбросить свою цель (нажав кнопку Reset на плате).
Примечание: В фоновом режиме IDF Monitor выполняет следующую команду для запуска GDB:
xtensa-esp32-elf-gdb -ex «set serial baud BAUD» -ex «target remote PORT» -ex interrupt build/PROJECT.elf :idf_target:`Hello NAME chip`

Фильтрация выходных данных. IDF-монитор можно вызвать командой idf.py monitor –print-filter="xyz", где –print-filter — параметр фильтрации выходных данных. Значение по умолчанию — пустая строка, что означает, что выводится всё.
Ограничения на то, что печатать, можно задать в виде серииtag>: предметы, гдеtag> это tag строка и — символ из набора {N, E, W, I, D, V, *}, обозначающий уровень ведения журнала.
Напримерampле, PRINT_FILTER="tag1:W” сопоставляет и печатает только выходные данные, записанные с помощью ESP_LOGW(“tag1”, …) или на более низком уровне детализации, т. е. ESP_LOGE(“tag1″, …). Не указывая или при использовании * по умолчанию используется уровень Verbose.
Примечание: Используйте первичное ведение журнала, чтобы отключить ненужные выходные данные при компиляции через библиотеку ведения журнала. Фильтрация выходных данных с помощью IDF Monitor — это дополнительное решение, которое может быть полезно для настройки параметров фильтрации без перекомпиляции приложения.
Ваше приложение tags не должно содержать пробелов, звездочек * или двоеточий : для совместимости с функцией фильтрации вывода.
Если за последней строкой вывода в вашем приложении не следует символ возврата каретки, фильтрация вывода может быть нарушена, то есть монитор начнёт печатать строку, а затем обнаружит, что её не должно было быть. Это известная проблема, и её можно избежать, всегда добавляя символ возврата каретки (особенно если сразу за ней не следует никакой вывод).

Эспрессиф Системс

33. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
ExampПравила фильтрации:
· * можно использовать для сопоставления любого tags. Однако строка PRINT_FILTER="*:I tag1:E» в отношении tag1 выводит только ошибки, поскольку правило для tag1 имеет более высокий приоритет по сравнению с правилом для *.
· Правило по умолчанию (пустое) эквивалентно *:V, поскольку соответствует каждому tag на уровне Verbose или ниже означает сопоставление всего.
· «*:N» подавляет не только выходные данные функций журналирования, но и распечатки, сделанные printf и т. д. Чтобы избежать этого, используйте *:E или более высокий уровень детализации.
· Правила "tag1:V”, “tag1:v”, “tag1:”, “tag1:*» и «tag1” эквивалентны. · Правило “tag1:W tag1:E» эквивалентно «tag1:E», потому что любое последующее появление того же самого tag
Имя перезаписывает предыдущее. · Правило «tag1:Я tag2:W” печатает только tag1 на уровне детализации информации или ниже и tag2 в Предупреждении
Уровень детализации или ниже. · Правило «tag1:Я tag2:W tag3:N» по сути эквивалентно предыдущему, потому что tag3:N определяет
что tag3 не следует печатать. · tag3:N в правиле «tag1:Я tag2:W tag3:N *:V» имеет больше смысла, потому что без tag3:N
tagМожно было бы напечатать 3 сообщения; ошибки для tag1 и tag2 будет напечатан с указанным (или более низким) уровнем детализации, а все остальное будет напечатано по умолчанию.
Более сложная фильтрация Example Следующий фрагмент журнала был получен без каких-либо параметров фильтрации:
load:0x40078000,len:13564 entry 0x40078d4c E (31) esp_image: изображение по адресу 0x30000 имеет недопустимый магический байт W (31) esp_image: изображение по адресу 0x30000 имеет недопустимый режим SPI 255 E (39) boot: раздел заводского приложения не является загрузочным I (568) cpu_start: Pro cpu запущен. I (569) heap_init: инициализация. ОЗУ доступно для динамического выделения: I (603) cpu_start: Pro cpu start user code D (309) light_driver: [light_init, 74]:status: 1, mode: 2 D (318) vfs: esp_vfs_register_fd_range выполнен успешно для диапазона <54; 64) и VFS ID 1 I (328) Wi-Fi: задача драйвера Wi-Fi: 3ffdbf84, приоритет: 23, стек: 4096, ядро ​​= 0
Ниже приведен полученный вывод для параметров фильтрации PRINT_FILTER="wifi esp_image:E light_driver:I":
E (31) esp_image: изображение по адресу 0x30000 имеет недопустимый магический байт I (328) Wi-Fi: задача драйвера Wi-Fi: 3ffdbf84, приоритет: 23, стек: 4096, ядро=0
Параметры «PRINT_FILTER="light_driver:D esp_image:N boot:N cpu_start:N vfs:N wifi:N *:V» показывают следующий вывод:
загрузка: 0x40078000, длина: 13564 запись 0x40078d4c I (569) heap_init: инициализация. ОЗУ доступно для динамического выделения: D (309) light_driver: [light_init, 74]: статус: 1, режим: 2
Известные проблемы с IDF Monitor
Проблемы, наблюдаемые в Windows
· Клавиши со стрелками, а также некоторые другие клавиши, не работают в GDB из-за ограничений консоли Windows. · Иногда при выходе из oidf.pype он может зависнуть на 30 секунд, прежде чем возобновит работу IDF Monitor. · При запуске ogdbpis он может зависнуть на короткое время, прежде чем начнет взаимодействовать с GDBStub.

Эспрессиф Системс

34. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы со стандартной настройкой набора инструментов для Linux и macOS

Установка шаг за шагом Это подробная дорожная карта, которая проведет вас через процесс установки.
Настройка среды разработки. Ниже приведены шаги по настройке ESP-IDF для вашего ESP32. · Шаг 1. Установка необходимых компонентов. · Шаг 2. Получение ESP-IDF. · Шаг 3. Настройка инструментов. · Шаг 4. Настройка переменных среды. · Шаг 5. Первые шаги в ESP-IDF.
Шаг 1. Установка необходимых компонентов. Для использования ESP-IDF с ESP32 необходимо установить ряд программных пакетов, соответствующих вашей операционной системе. Это руководство по установке поможет вам установить всё необходимое в системах Linux и macOS.
Для пользователей Linux: для компиляции с использованием ESP-IDF вам понадобятся следующие пакеты. Команда для выполнения зависит от используемого дистрибутива Linux:
· Ubuntu и Debian: sudo apt-get install git wget flex bison gperf python3 python3-pip python3venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0
· CentOS 7 и 8: sudo yum -y update && sudo yum install git wget flex bison gperf python3 cmake ninja-build ccache dfu-util libusbx
CentOS 7 по-прежнему поддерживается, но для удобства пользователей рекомендуется использовать CentOS версии 8. · Arch: sudo pacman -S –needed gcc git make flex bison gperf python cmake ninja ccache dfu-util libusb
Примечание: · Для использования с ESP-IDF требуется CMake версии 3.16 или более поздней. Если в вашей ОС подходящей версии нет, выполните команду otools/idf_tools.py install cmakep. · Если вы не видите свой дистрибутив Linux в списке выше, обратитесь к его документации, чтобы узнать, какую команду использовать для установки пакета.
Для пользователей macOS ESP-IDF будет использовать версию Python, установленную по умолчанию в macOS. · Установка сборки CMake и Ninja: Если у вас HomeBrew, вы можете запустить: brew install cmake ninja dfu-util Если у вас MacPorts, вы можете запустить: sudo port install cmake ninja dfu-util В противном случае посетите домашние страницы CMake и Ninja для загрузки установочных файлов macOS.

Эспрессиф Системс

35. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
· Настоятельно рекомендуется также установить ccache для более быстрой сборки. Если у вас HomeBrew, это можно сделать с помощью команды brew install ccache или sudo port install ccache на MacPorts.
Примечание: Если на каком-либо этапе отображается следующая ошибка: xcrun: ошибка: недопустимый путь активного разработчика (/Library/Developer/CommandLineTools), отсутствует xcrun по адресу: /Library/Developer/CommandLineTools/usr/bin/xcrun
Для продолжения работы вам потребуется установить инструменты командной строки XCode. Вы можете установить их, выполнив команду xcode-select –install.
Пользователи Apple M1: если вы используете платформу Apple M1 и видите следующую ошибку: ПРЕДУПРЕЖДЕНИЕ: каталог для инструмента xtensa-esp32-elf версии esp-2021r2-patch3-8.4.0 присутствует, но инструмент не найден. ОШИБКА: у инструмента xtensa-esp32-elf нет установленных версий. Запустите install.sh для его установки.
или: zsh: неверный тип ЦП в исполняемом файле: ~/.espressif/tools/xtensa-esp32-elf/esp-2021r2patch3-8.4.0/xtensa-esp32-elf/bin/xtensa-esp32-elf-gcc
Затем вам нужно будет установить Apple Rosetta 2, выполнив команду /usr/sbin/softwareupdate –install-rosetta –agree-to-license.
Установка Python 3. Согласно примечаниям к выпуску macOS Catalina 10.15, использование Python 2.7 не рекомендуется, и Python 2.7 не будет включен по умолчанию в будущие версии macOS. Проверьте, какая версия Python у вас установлена: python –version
Если вывод похож на Python 2.7.17, ваш интерпретатор по умолчанию — Python 2.7. В этом случае также проверьте, не установлен ли Python 3 на вашем компьютере: python3 –version
Если команда выше возвращает ошибку, это означает, что Python 3 не установлен. Ниже приведено более подробное описание.view из шагов по установке Python 3.
· Установка с помощью HomeBrew может быть выполнена следующим образом: brew install python3
· Если у вас есть MacPorts, вы можете запустить: sudo port install python38
Шаг 2. Получите ESP-IDF. Для сборки приложений для ESP32 вам понадобятся программные библиотеки, предоставляемые Espressif в репозитории ESP-IDF. Чтобы получить ESP-IDF, перейдите в каталог установки и клонируйте репозиторий с помощью команды git clone, следуя инструкциям ниже для вашей операционной системы. Откройте Терминал и выполните следующие команды:

Эспрессиф Системс

36. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

mkdir -p ~/esp cd ~/esp git clone -b v5.0.9 –recursive https://github.com/espressif/esp-idf.git
ESP-IDF будет загружен в ~/esp/esp-idf. Обратитесь к версиям ESP-IDF для получения информации о том, какую версию ESP-IDF использовать в данной ситуации.
Шаг 3. Настройка инструментов Помимо ESP-IDF, вам также необходимо установить инструменты, используемые ESP-IDF, такие как компилятор, отладчик, пакеты Python и т. д., для проектов, поддерживающих ESP32. cd ~/esp/esp-idf ./install.sh esp32
или с помощью Fish shell cd ~/esp/esp-idf ./install.fish esp32
Приведённые выше команды устанавливают инструменты только для ESP32. Если вы планируете разрабатывать проекты для большего количества микросхем, перечислите все из них и выполните команду ex.ampле: cd ~/esp/esp-idf ./install.sh esp32,esp32s2
или с помощью Fish shell cd ~/esp/esp-idf ./install.fish esp32,esp32s2
Чтобы установить инструменты для всех поддерживаемых целей, выполните следующую команду: cd ~/esp/esp-idf ./install.sh all
или с помощью Fish shell cd ~/esp/esp-idf ./install.fish all
Примечание: для пользователей macOS, если на каком-либо этапе отображается подобная ошибка:urlошибка открытия [SSL: CERTIFICATE_VERIFY_FAILED] проверка сертификата не удалась: невозможно получить сертификат локального издателя (_ssl.c:xxx)
Вы можете запустить команду Install Certificates.command в папке Python на вашем компьютере, чтобы установить сертификаты. Подробнее см. в разделе «Ошибка загрузки при установке инструментов ESP-IDF».

Альтернатива File Загрузки Установщик инструментов загружает ряд files прикреплён к релизам GitHub. Если доступ к GitHub медленный, можно настроить переменную окружения, чтобы выбрать сервер загрузки Espressifns для загрузки ресурсов GitHub.

Примечание: этот параметр управляет только отдельными инструментами, загруженными из релизов GitHub, он не изменяет URLиспользуется для доступа к любым репозиториям Git.

Чтобы отдать предпочтение серверу загрузки Espressif при установке инструментов, используйте следующую последовательность команд при запуске install.sh:

Эспрессиф Системс

37. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

cd ~/esp/esp-idf export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets" ./install.sh
Настройка пути установки инструментов. Скрипты, представленные на этом этапе, устанавливают инструменты компиляции, необходимые ESP-IDF, в домашний каталог пользователя: $HOME/.espressif в Linux. Если вы хотите установить инструменты в другой каталог, задайте переменную окружения IDF_TOOLS_PATH перед запуском скриптов установки. Убедитесь, что у вашей учетной записи пользователя достаточно прав для чтения и записи этого пути. При изменении IDF_TOOLS_PATH убедитесь, что она имеет одно и то же значение при каждом запуске скрипта установки (install. bat, install.ps1 или install.sh) и скрипта экспорта (export.bat, export.ps1 или export.sh).
Шаг 4. Настройка переменных окружения. Установленные инструменты пока не добавлены в переменную окружения PATH. Чтобы инструменты можно было использовать из командной строки, необходимо настроить некоторые переменные окружения. ESP-IDF предоставляет другой скрипт для этого. В терминале, где вы собираетесь использовать ESP-IDF, выполните:
. $ HOME / esp / esp-idf / export.sh
или для fish (поддерживается только с версии fish 3.0.0):
. $HOME/esp/esp-idf/export.fish
Обратите внимание на пробел между точкой в ​​начале и путём! Если вы планируете часто использовать esp-idf, вы можете создать псевдоним для запуска export.sh:
1. Скопируйте и вставьте следующую команду в ваш shellns profile (.profile, .bashrc, .zprofile, и т. д.)
alias get_idf='. $HOME/esp/esp-idf/export.sh' 2. Обновите конфигурацию, перезапустив сеанс терминала или запустив source [путь к программеfile],
напримерample, source ~/.bashrc. Теперь вы можете запустить get_idf для настройки или обновления среды esp-idf в любом терминальном сеансе. Технически, вы можете добавить export.sh в ваш shellns pro.file Однако это не рекомендуется. Это активирует виртуальную среду IDF в каждом терминальном сеансе (включая те, где IDF не требуется), что сводит на нет эффективность виртуальной среды и, вероятно, влияет на другое программное обеспечение.
Шаг 5. Первые шаги в ESP-IDF. Теперь, когда все требования выполнены, следующий раздел расскажет вам, как начать свой первый проект. Это руководство поможет вам сделать первые шаги в использовании ESP-IDF. Следуйте этому руководству, чтобы начать новый проект на ESP32, собрать его, прошить и отслеживать выходные данные устройства.
Примечание: Если вы еще не установили ESP-IDF, перейдите в раздел «Установка» и следуйте инструкциям, чтобы получить все программное обеспечение, необходимое для использования этого руководства.

Начать проект. Теперь вы готовы подготовить приложение для ESP32. Вы можете начать с проекта getstarted/hello_world из ex.amples в ESP-IDF.

Важно: Система сборки ESP-IDF не поддерживает пробелы в путях к ESP-IDF или к проектам.

Скопируйте проект get-started/hello_world в каталог ~/esp:

Эспрессиф Системс

38. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
cd ~ / esp cp -r $ IDF_PATH / examples/начало работы/hello_world .
Примечание: существует ряд эксampле проектов в бывшемamples в ESP-IDF. Вы можете скопировать любой проект таким же образом, как представлено выше, и запустить его. Также возможно построить эксampфайлы на месте без их предварительного копирования.
Подключите устройство. Теперь подключите плату ESP32 к компьютеру и проверьте, какой последовательный порт отображает плату. Последовательные порты имеют следующие шаблоны именования:
· Linux: запуск с /dev/tty · macOS: запуск с /dev/cu. Если вы не знаете, как проверить имя последовательного порта, см. статью «Установка последовательного соединения с ESP32» для получения полной информации.
Примечание. Сохраните имя порта под рукой, оно понадобится вам на следующих шагах.
Настройте свой проект. Перейдите в каталог hello_world, установите ESP32 в качестве цели и запустите утилиту настройки проекта menuconfig. cd ~/esp/hello_world idf.py set-target esp32 idf.py menuconfig
После открытия нового проекта необходимо сначала задать целевой чип с помощью команды idf.py set-target esp32. Обратите внимание, что существующие сборки и конфигурации проекта, если таковые имеются, будут очищены и инициализированы в ходе этого процесса. Целевой чип можно сохранить в переменной окружения, чтобы пропустить этот шаг. Подробнее см. в разделе Выбор целевого чипа: set-target. Если предыдущие шаги были выполнены правильно, появится следующее меню:

Рис. 17: Конфигурация проекта – Главное окно. Это меню используется для настройки переменных, специфичных для проекта, например, имени и пароля сети Wi-Fi, скорости процессора и т. д. Настройку проекта с помощью menuconfig можно пропустить для hello_worldp, так как это exampле бежит с

Эспрессиф Системс

39. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
конфигурация по умолчанию.
Внимание: если вы используете плату ESP32-DevKitC с модулем ESP32-SOLO-1 или плату ESP32-DevKitM-1 с модулем ESP32-MIN1-1(1U), включите одноядерный режим (CONFIG_FREERTOS_UNICORE) в menuconfig перед прошивкой exampлес.
Примечание: Цвета меню могут отличаться в вашем терминале. Вы можете изменить внешний вид с помощью параметра --style. Для получения дополнительной информации выполните команду idf.py menuconfig –help.
Если вы используете одну из поддерживаемых плат разработки, вы можете ускорить разработку, воспользовавшись пакетом поддержки плат. Подробнее см. в разделе «Дополнительные советы».
Сборка проекта. Сборка проекта выполняется путем запуска:
idf.py сборка
Эта команда скомпилирует приложение и все компоненты ESP-IDF, а затем сгенерирует загрузчик, таблицу разделов и двоичные файлы приложения.
$ idf.py build Запуск cmake в каталоге /path/to/hello_world/build Выполнение «cmake -G Ninja –warn-uninitialized /path/to/hello_world»… Предупреждать о неинициализированных значениях. — Найден Git: /usr/bin/git (найдена версия «2.17.0») — Сборка пустого компонента aws_iot из-за конфигурации — Имена компонентов: … — Пути к компонентам: …
… (Больше строк вывода системы сборки)
[527/527] Создание hello_world.bin esptool.py v2.3.1
Сборка проекта завершена. Для прошивки выполните команду: ../../../components/esptool_py/esptool/esptool.py -p (PORT) -b 921600 write_flash -flash_mode dio –flash_size detect –flash_freq 40m 0x10000 build/hello_world. bin build 0x1000 build/bootloader/bootloader.bin 0x8000 build/partition_table/ partition-table.bin или выполните команду idf.py -p PORT flash.
Если ошибок нет, сборка завершится созданием бинарного файла прошивки .bin. files.
Перезапись на устройство Перезапишите только что собранные вами двоичные файлы (bootloader.bin, partition-table.bin и hello_world.bin) на плату ESP32, выполнив команду:
idf.py -p ПОРТ [-b BAUD] flash
Замените PORT именем последовательного порта вашей платы ESP32. Вы также можете изменить скорость передачи данных флешера, заменив BAUD нужным значением. Скорость передачи данных по умолчанию — 460800 бод. Подробнее об аргументах idf.py см. в файле idf.py.
Примечание: опция flash автоматически собирает и прошивает проект, поэтому запускать сборку idf.py не обязательно.

Эспрессиф Системс

40. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы

Возникли проблемы при прошивке? Если при выполнении данной команды появляются ошибки, такие как «Failed to connectp», это может быть вызвано несколькими причинами. Одной из них могут быть проблемы с esptool.py — утилитой, вызываемой системой сборки для сброса микросхемы, взаимодействия с загрузчиком ПЗУ и прошивки прошивки. Одним из простых решений является ручной сброс, описанный ниже. Если это не поможет, более подробную информацию о возможных проблемах можно найти в разделе «Устранение неполадок».
esptool.py автоматически сбрасывает ESP32, активируя линии управления DTR и RTS микросхемы преобразователя USB в последовательный порт, например, FTDI или CP210x (подробнее см. в разделе «Установка последовательного соединения с ESP32»). Линии управления DTR и RTS, в свою очередь, подключены к выводам GPIO0 и CHIP_PU (EN) ESP32, что приводит к изменению уровня громкости.tagУровни DTR и RTS загрузят ESP32 в режим загрузки прошивки. Например,ampле, проверьте схему платы разработки ESP32 DevKitC.
В целом, с официальными платами разработки esp-idf проблем возникнуть не должно. Однако esptool.py не сможет автоматически сбросить настройки оборудования в следующих случаях:
· На вашем оборудовании линии DTR и RTS не подключены к GPIO0 и CHIP_PU. · Линии DTR и RTS настроены по-разному. · Такие линии последовательного управления отсутствуют.
В зависимости от типа имеющегося у вас оборудования вы также можете вручную перевести плату ESP32 в режим загрузки прошивки (сброс).
· Для плат разработки производства Espressif эту информацию можно найти в соответствующих руководствах по началу работы или руководствах пользователя. Например:ample, чтобы вручную сбросить настройки платы разработки ESP-IDF, удерживайте кнопку Boot (GPIO0) и нажмите кнопку EN (CHIP_PU).
· Для других типов оборудования попробуйте понизить уровень GPIO0.

Нормальная работа. При перепрошивке вы увидите журнал выходных данных, подобный следующему:
… esptool.py –chip esp32 -p /dev/ttyUSB0 -b 460800 –before=default_reset -after=hard_reset write_flash –flash_mode dio –flash_freq 40m –flash_size 2MB 0x8000 partition_table/partition-table.bin 0x1000 bootloader/bootloader.bin 0x10000 hello_world.bin esptool.py v3.0-dev Последовательный порт /dev/ttyUSB0 Подключение…….._ Чип ESP32D0WDQ6 (ревизия 0) Особенности: WiFi, BT, двухъядерный процессор, схема кодирования Нет Кристалл 40 МГц MAC: 24:0a:c4:05:b9:14 Загрузка заглушки… Запуск заглушки… Запуск заглушки… Изменение скорости передачи данных на 460800 Изменено. Настройка размера флэш-памяти… Сжато 3072 байта в 103… Запись по адресу 0x00008000… (100 %) Записано 3072 байта (сжато 103) по адресу 0x00008000 за 0.0 секунды (эффективная скорость 5962.8 кбит/с)… Хэш данных проверен. Сжато 26096 байт в 15408… Запись по адресу 0x00001000… (100 %) Записано 26096 байт (сжато 15408) по адресу 0x00001000 за 0.4 секунды (эффективная скорость 546.7 кбит/с)… Хэш данных проверен. Сжато 147104 байт в 77364… Запись по адресу 0x00010000… (20 %) Запись по адресу 0x00014000… (40 %) Запись по адресу 0x00018000… (60 %) Запись по адресу 0x0001c000… (80 %)
(продолжение на следующей странице)

Эспрессиф Системс

41. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
(продолжение предыдущей страницы) Запись по адресу 0x00020000… (100 %) Записано 147104 байт (77364 сжато) по адресу 0x00010000 за 1.9 секунды (эффективная скорость 615,5 кбит/с)… Хэш данных проверен.
Выход… Аппаратный сброс через пин RTS… Готово
Если к концу процесса прошивки проблем не возникнет, плата перезагрузится и запустит приложение theohello_worldp. Если вы предпочитаете использовать Eclipse или VS Code IDE вместо idf.py, ознакомьтесь с плагином Eclipse и расширением VSCode.
Отслеживайте вывод. Чтобы проверить, действительно ли запущен ohello_worldpis, введите idf.py -p PORT monitor (не забудьте заменить PORT на имя вашего последовательного порта). Эта команда запускает приложение IDF Monitor:
$ idf.py -p монитор Запуск idf_monitor в каталоге […]/esp/hello_world/build Выполнение «python […]/esp-idf/tools/idf_monitor.py -b 115200 […]/esp/hello_ world/build/hello_world.elf»… — idf_monitor включен 115200 —– Выход: Ctrl+] | Меню: Ctrl+T | Справка: Ctrl+T, а затем Ctrl+H –ets 8 июня 2016 г., 00:22:57
rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT) ets 8 июня 2016 г. 00:22:57 …
После прокрутки журналов запуска и диагностики вы должны увидеть сообщение oHello world!p, напечатанное приложением.
… Привет, мир! Перезапуск через 10 секунд… Это чип ESP32 с 2 ядрами, Wi-Fi/BT/BLE, ревизия кремния 1, внешняя флеш-память 2 МБ. Минимальный размер свободной кучи: 298968 байт. Перезапуск через 9 секунд… Перезапуск через 8 секунд… Перезапуск через 7 секунд…
Для выхода из IDF-монитора используйте сочетание клавиш Ctrl+]. Если IDF-монитор зависает вскоре после загрузки или вместо сообщений, указанных выше, вы видите случайный мусор, подобный приведённому ниже, вероятно, на вашей плате используется кварцевый резонатор с частотой 26 МГц. Большинство плат разработки используют частоту 40 МГц, поэтому ESP-IDF использует эту частоту по умолчанию.

Если у вас возникла такая проблема, сделайте следующее:
1. Выйдите из монитора. 2. Вернитесь в menuconfig. 3. Перейдите в Component config > Hardware Settings > Main XTAL Config > Main XTAL.
частоту, затем измените CONFIG_XTAL_FREQ_SEL на 26 МГц. 4. После этого снова соберите и прошейте приложение.

Эспрессиф Системс

42. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
В текущей версии ESP-IDF основные частоты XTAL, поддерживаемые ESP32, следующие:
· 26 МГц · 40 МГц
Примечание: Вы можете объединить сборку, перепрошивку и мониторинг в один шаг, выполнив: idf.py -p PORT flash monitor
См. также: · IDF Monitor для удобных сочетаний клавиш и более подробной информации об использовании IDF Monitor. · idf.py для полного справочника команд и параметров idf.py.
Вот и всё, что нужно для начала работы с ESP32! Теперь вы готовы попробовать другие варианты.amples или сразу перейти к разработке собственных приложений.
Важно: Некоторые из бывшихampФайлы не поддерживают ESP32, поскольку необходимое оборудование не включено в ESP32, поэтому поддержка невозможна. При сборке exampле, пожалуйста, проверьте README file для таблицы поддерживаемых целей. Если она присутствует, включая цель ESP32, или таблица вообще не существует,ample будет работать на ESP32.
Дополнительные советы
Проблемы с правами доступа /dev/ttyUSB0. В некоторых дистрибутивах Linux при перепрошивке ESP32 может возникнуть сообщение об ошибке «Не удалось открыть порт /dev/ttyUSB0». Эту проблему можно решить, добавив текущего пользователя в группу dialout.
Совместимость с Python. ESP-IDF поддерживает Python 3.7 и более поздние версии. Рекомендуется обновить операционную систему до последней версии, удовлетворяющей этому требованию. Другие варианты включают установку Python из исходных кодов или использование системы управления версиями Python, например pyenv.
Начните с пакета поддержки платы. Для ускорения прототипирования на некоторых платах разработки можно использовать пакеты поддержки платы (BSP), которые упрощают инициализацию конкретной платы до нескольких вызовов функций. BSP обычно поддерживает все аппаратные компоненты, предоставляемые платой разработки. Помимо функций определения распиновки и инициализации, BSP поставляется с драйверами для внешних компонентов, таких как датчики, дисплеи, аудиокодеки и т. д. BSP распространяются через диспетчер компонентов IDF, поэтому их можно найти в реестре компонентов IDF. Вот примерample того, как добавить ESP-WROVER-KIT BSP в ваш проект: idf.py add-dependency esp_wrover_kit
Больше бывшегоampФайлы использования BSP можно найти в BSP exampпапка les.
Совет: Обновление ESP-IDF. Рекомендуется периодически обновлять ESP-IDF, поскольку в новых версиях исправлены ошибки и/или добавлены новые функции. Обратите внимание, что каждая основная и дополнительная версия ESP-IDF имеет свой период поддержки, и когда срок поддержки одной из веток приближается к концу (EOL), всем пользователям рекомендуется обновить свои проекты до более новых версий ESP-IDF. Подробнее о сроках поддержки см. в разделе «Версии ESP-IDF».

Эспрессиф Системс

43. Отправить отзыв о документе

Выпуск v5.0.9

Глава 1. Начало работы
Самый простой способ обновления — удалить существующую папку esp-idf и клонировать её заново, как при первоначальной установке, описанной в шаге 2. Получите ESP-IDF. Другой способ — обновить только изменённые данные. Процедура обновления зависит от используемой версии ESP-IDF. После обновления ESP-IDF снова выполните скрипт установки, если для новой версии ESP-IDF требуются другие версии инструментов. См. инструкции в шаге 3. Настройте инструменты. После установки новых инструментов обновите среду с помощью скрипта экспорта. См. инструкции в шаге 4. Настройте переменные среды.
Связанные документы · Установка последовательного соединения с ESP32 · Плагин Eclipse · Расширение VSCode · Монитор IDF
1.4 Создайте свой первый проект
Если у вас уже установлен ESP-IDF и вы не используете IDE, вы можете создать свой первый проект из командной строки, следуя инструкциям «Запуск проекта в Windows» или «Запуск проекта в Linux и macOS».
1.5 Удаление ESP-IDF
Если вы хотите удалить ESP-IDF, следуйте инструкциям по удалению ESP-IDF.

Эспрессиф Системс

44. Отправить отзыв о документе

Выпуск v5.0.9

Глава 2
Ссылка на API
2.1 Соглашения API
В этом документе описаны соглашения и допущения, общие для интерфейсов прикладного программирования (API) ESP-IDF. ESP-IDF предоставляет несколько видов программных интерфейсов:
· Функции C, структуры, перечисления, определения типов и макросы препроцессора, объявленные в открытом заголовочном файле fileкомпонентов ESPIDF. Различные страницы в разделе «Справочник по API» руководства по программированию содержат описания этих функций, структур и типов.
· Функции системы сборки, предопределённые переменные и параметры. Они описаны в руководстве по системе сборки. · Параметры Kconfig можно использовать как в коде, так и в системе сборки (CMakeLists.txt). files. · Инструменты хоста и их параметры командной строки также являются частью интерфейса ESP-IDF. ESP-IDF состоит из компонентов, написанных специально для ESP-IDF, а также сторонних библиотек. В некоторых случаях к сторонней библиотеке добавляется специфичная для ESP-IDF оболочка, предоставляющая интерфейс, который либо проще, либо лучше интегрирован с остальными функциями ESP-IDF. В других случаях разработчикам приложений предоставляется оригинальный API сторонней библиотеки. В следующих разделах рассматриваются некоторые аспекты API ESP-IDF и их использование.
Обработка ошибок 2.1.1
Большинство API ESP-IDF возвращают коды ошибок, определённые типом esp_err_t. Подробнее о подходах к обработке ошибок см. в разделе «Обработка ошибок». Справочник кодов ошибок содержит список кодов ошибок, возвращаемых компонентами ESP-IDF.
2.1.2 Конфигурационные структуры
Важно: Правильная инициализация структур конфигурации является важной частью обеспечения совместимости приложения с будущими версиями ESP-IDF.
Большинство функций инициализации или конфигурации в ESP-IDF принимают в качестве аргумента указатель на структуру конфигурации. Например,ampль:
45

Глава 2. Справочник API

const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, .arg = callback_arg, .name = «my_timer»
}; esp_timer_handle_t my_timer; esp_err_t err = esp_timer_create(&my_timer_args, &my_timer);
Функции инициализации никогда не сохраняют указатель на структуру конфигурации, поэтому можно безопасно разместить структуру в стеке.
Приложение должно инициализировать все поля структуры. Следующее неверно:
esp_timer_create_args_t my_timer_args; my_timer_args.callback = &my_timer_callback; /* Неверно! Поля .arg и .name не инициализированы */ esp_timer_create(&my_timer_args, &my_timer);
Большинство бывших ESP-IDFampДля инициализации структуры используются инициализаторы, назначенные C99, поскольку они обеспечивают лаконичный способ задания подмножества полей и инициализации оставшихся полей нулями:
const esp_timer_create_args_t my_timer_args = { .callback = &my_timer_callback, /* Верно, поля .arg и .name инициализированы нулями */
};
Язык C++ не поддерживает синтаксис назначенных инициализаторов до версии C++20, однако компилятор GCC частично поддерживает его в качестве расширения. При использовании API ESP-IDF в коде C++ можно использовать следующий шаблон:
esp_timer_create_args_t my_timer_args = {}; /* Все поля инициализируются нулями */ my_timer_args.callback = &my_timer_callback;

Инициализаторы по умолчанию
Для некоторых структур конфигурации ESP-IDF предоставляет макросы для установки значений полей по умолчанию:
httpd_config_t config = HTTPD_DEFAULT_CONFIG(); /* HTTPD_DEFAULT_CONFIG расширяется до назначенного инициализатора.
Теперь все поля установлены в значения по умолчанию. Любое поле по-прежнему можно изменить: */ config.server_port = 8081; httpd_handle_t server; esp_err_t err = httpd_start(&server, &config);
Рекомендуется использовать макросы инициализатора по умолчанию всякий раз, когда они предусмотрены для конкретной структуры конфигурации.

2.1.3 Частные API
Определенный заголовок fileВ ESP-IDF содержатся API, предназначенные только для использования в исходном коде ESP-IDF, а не в приложениях. Такой заголовок fileКомпоненты s часто содержат private или esp_private в своих именах или путях. Некоторые компоненты, такие как hal, содержат только приватные API. Приватные API могут быть удалены или изменены несовместимым образом между минорными версиями или патчами.

2.1.4 Компоненты в exampле проекты
ESP-IDF exampФайлы содержат множество проектов, демонстрирующих использование API ESP-IDF. Чтобы уменьшить дублирование кода в examples, несколько общих вспомогательных функций определены внутри компонентов, которые используются несколькими exampлес.

Эспрессиф Системс

46. Отправить отзыв о документе

Выпуск v5.0.9

Глава 2. Справочник API
Это включает в себя компоненты, расположенные

Документы/Ресурсы

Плата разработки Espressif Systems ESP32 Dev Kitc [pdf] Руководство пользователя
Плата разработки ESP32 Dev Kitc, ESP32, Плата разработки Dev Kitc, Плата разработки Kitc, Плата разработки, Плата

Ссылки

Оставьте комментарий

Ваш адрес электронной почты не будет опубликован. Обязательные поля отмечены *