ESP32-DevKitC V4: распиновка и устройство платы
Плата ESP32-DevKitC V4 по документации и схеме Espressif: где какой из 38 контактов, какие функции ESP32 доступны на каждом, какие выводы нельзя занимать или нужно занимать осторожно, как устроены питание и загрузка прошивки по USB.
Обновлено Редакция GAW
ESP32-DevKitC V4 — отладочная плата Espressif с модулем на ESP32: два ядра Xtensa LX6, Wi-Fi и Bluetooth, флеш-память в модуле и мост USB-UART для загрузки прошивки. Большинство выводов модуля выведены на два ряда контактов по длинным сторонам с шагом 2,54 мм, поэтому плата вставляется в макетную плату. Плату выпускают с разными модулями — ESP32-WROOM-32E, WROOM-32UE (с разъёмом внешней антенны), WROVER-E, WROVER-IE, WROOM-32D/32U, SOLO-1 — и со штыревыми или гнездовыми разъёмами; распиновка у всех вариантов одна.
| Параметр | Значение |
|---|---|
| Микроконтроллер | ESP32: 2 × Xtensa LX6 до 240 МГц (у SOLO-1 одно ядро) |
| Память ESP32 | 520 КБ SRAM, 448 КБ ПЗУ, 16 КБ SRAM в домене RTC |
| Флеш-память | в модуле; у ESP32-WROOM-32E — 4, 8 или 16 МБ |
| Радио | Wi-Fi 802.11 b/g/n (2,4 ГГц), Bluetooth 4.2 BR/EDR и Bluetooth LE |
| Контакты | 2 × 19 с шагом 2,54 мм: 32 GPIO, из них 6 заняты флеш-памятью |
| Периферия ESP32 | 3 UART, 2 I²C, 4 SPI (SPI2 и SPI3 — для внешних устройств), 2 I²S, 16 каналов ШИМ, CAN (TWAI) |
| Аналоговые | АЦП 12 бит до 18 каналов (16 на контактах), 2 ЦАП по 8 бит, 10 сенсорных входов |
| USB | micro-USB, мост USB-UART CP2102N до 3 Мбит/с |
| Питание | 5 В от USB или контакта 5V, либо 3,3 В на контакт 3V3 |
| Размер | 27,94 × 48,26 мм, модуль выступает за край на 6,04 мм |
Распиновка
Плата нарисована сверху, антенной вверх, разъёмом USB вниз. Слева — разъём J2, его первый контакт (3V3) у антенны; справа — J3, первый контакт (GND) тоже у антенны. Номера контактов в каждом разъёме идут от антенны к USB. Рядом с контактом — подпись с платы и функции ESP32, которые выведены на него напрямую: канал АЦП, сенсорный вход, ЦАП, сигналы JTAG, SPI и UART, подключаемые через IO MUX. Кнопки над рисунком подсвечивают группу выводов — например, все каналы АЦП1 или все выводы обвязки загрузки.
- ввод-вывод
- питание и земля
- управление: EN
- заняты на плате
- выбранная функция
Контакты и функции
Цифровую периферию ESP32 — UART, I²C, ШИМ (контроллер LED PWM), I²S, счётчики импульсов — можно вывести на любой GPIO через матрицу GPIO: таблица ниже не ограничивает, где будет, скажем, шина I²C. Через IO MUX, минуя матрицу, к фиксированным выводам подключаются только быстрые сигналы — SPI, JTAG, UART, SDIO и Ethernet; так их работа на высоких частотах надёжнее. Аналоговые функции — АЦП, ЦАП, сенсорные входы — жёстко привязаны к своим выводам.
| Контакт | Подпись | GPIO | АЦП | Сенсор | RTC | IO_MUX | Ещё |
|---|---|---|---|---|---|---|---|
| J2-1 | 3V3 | — | 3,3 В | ||||
| J2-2 | EN | — | сброс низким уровнем | ||||
| J2-3 | VP | 36 | ADC1_CH0 | — | RTC_GPIO0 | — | только вход, без подтяжек |
| J2-4 | VN | 39 | ADC1_CH3 | — | RTC_GPIO3 | — | только вход, без подтяжек |
| J2-5 | IO34 | 34 | ADC1_CH6 | — | RTC_GPIO4 | — | только вход, без подтяжек |
| J2-6 | IO35 | 35 | ADC1_CH7 | — | RTC_GPIO5 | — | только вход, без подтяжек |
| J2-7 | IO32 | 32 | ADC1_CH4 | TOUCH9 | RTC_GPIO9 | — | |
| J2-8 | IO33 | 33 | ADC1_CH5 | TOUCH8 | RTC_GPIO8 | — | |
| J2-9 | IO25 | 25 | ADC2_CH8 | — | RTC_GPIO6 | EMAC_RXD0 | выход ЦАП DAC1 |
| J2-10 | IO26 | 26 | ADC2_CH9 | — | RTC_GPIO7 | EMAC_RXD1 | выход ЦАП DAC2 |
| J2-11 | IO27 | 27 | ADC2_CH7 | TOUCH7 | RTC_GPIO17 | EMAC_RX_DV | |
| J2-12 | IO14 | 14 | ADC2_CH6 | TOUCH6 | RTC_GPIO16 | MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2 | |
| J2-13 | IO12 | 12 | ADC2_CH5 | TOUCH5 | RTC_GPIO15 | MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3 | вывод обвязки загрузки (подтяжка вниз): напряжение VDD_SDIO: 1 при сбросе — 1,8 В вместо 3,3 В |
| J2-14 | GND | — | общий провод | ||||
| J2-15 | IO13 | 13 | ADC2_CH4 | TOUCH4 | RTC_GPIO14 | MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER | |
| J2-16 | D2 | 9 | — | — | — | SD_DATA2, SPIHD, HS1_DATA2, U1RXD | занят флеш-памятью модуля |
| J2-17 | D3 | 10 | — | — | — | SD_DATA3, SPIWP, HS1_DATA3, U1TXD | занят флеш-памятью модуля |
| J2-18 | CMD | 11 | — | — | — | SD_CMD, SPICS0, HS1_CMD, U1RTS | занят флеш-памятью модуля |
| J2-19 | 5V | — | 5 В | ||||
| J3-1 | GND | — | общий провод | ||||
| J3-2 | IO23 | 23 | — | — | — | VSPID, HS1_STROBE | в Arduino-ESP32 по умолчанию MOSI (SPI) |
| J3-3 | IO22 | 22 | — | — | — | VSPIWP, U0RTS, EMAC_TXD1 | в Arduino-ESP32 по умолчанию SCL (Wire) |
| J3-4 | TX | 1 | — | — | — | U0TXD, CLK_OUT3, EMAC_RXD2 | в Arduino-ESP32 по умолчанию Serial TX |
| J3-5 | RX | 3 | — | — | — | U0RXD, CLK_OUT2 | в Arduino-ESP32 по умолчанию Serial RX |
| J3-6 | IO21 | 21 | — | — | — | VSPIHD, EMAC_TX_EN | в Arduino-ESP32 по умолчанию SDA (Wire) |
| J3-7 | GND | — | общий провод | ||||
| J3-8 | IO19 | 19 | — | — | — | VSPIQ, U0CTS, EMAC_TXD0 | в Arduino-ESP32 по умолчанию MISO (SPI) |
| J3-9 | IO18 | 18 | — | — | — | VSPICLK, HS1_DATA7 | в Arduino-ESP32 по умолчанию SCK (SPI) |
| J3-10 | IO5 | 5 | — | — | — | VSPICS0, HS1_DATA6, EMAC_RX_CLK | вывод обвязки загрузки (подтяжка вверх): тайминг ведомого SDIO; в Arduino-ESP32 по умолчанию SS (SPI) |
| J3-11 | IO17 | 17 | — | — | — | HS1_DATA5, U2TXD, EMAC_CLK_OUT_180 | |
| J3-12 | IO16 | 16 | — | — | — | HS1_DATA4, U2RXD, EMAC_CLK_OUT | |
| J3-13 | IO4 | 4 | ADC2_CH0 | TOUCH0 | RTC_GPIO10 | HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER | |
| J3-14 | IO0 | 0 | ADC2_CH1 | TOUCH1 | RTC_GPIO11 | CLK_OUT1, EMAC_TX_CLK | вывод обвязки загрузки (подтяжка вверх): режим загрузки: 0 при сбросе — загрузка по UART |
| J3-15 | IO2 | 2 | ADC2_CH2 | TOUCH2 | RTC_GPIO12 | HSPIWP, HS2_DATA0, SD_DATA0 | вывод обвязки загрузки (подтяжка вниз): режим загрузки: для загрузки по UART должен быть 0 |
| J3-16 | IO15 | 15 | ADC2_CH3 | TOUCH3 | RTC_GPIO13 | MTDO, HSPICS0, HS2_CMD, SD_CMD, EMAC_RXD3 | вывод обвязки загрузки (подтяжка вверх): вывод сообщений загрузчика в U0TXD: 0 — отключён |
| J3-17 | D1 | 8 | — | — | — | SD_DATA1, SPID, HS1_DATA1, U2CTS | занят флеш-памятью модуля |
| J3-18 | D0 | 7 | — | — | — | SD_DATA0, SPIQ, HS1_DATA0, U2RTS | занят флеш-памятью модуля |
| J3-19 | CLK | 6 | — | — | — | SD_CLK, SPICLK, HS1_CLK, U1CTS | занят флеш-памятью модуля |
Номера выводов в Arduino-ESP32 совпадают с номерами GPIO: контакт IO25 — это вывод 25, VP — 36, TX — 1. По умолчанию Arduino-ESP32 подключает Serial к GPIO1 и GPIO3 (они же идут на мост USB-UART), шину Wire (I²C) — к GPIO21 (SDA) и GPIO22 (SCL), а SPI — к GPIO18 (SCK), GPIO19 (MISO), GPIO23 (MOSI) и GPIO5 (SS) — это выводы VSPI в IO MUX. Подтягивающие резисторы шины I²C на плате не установлены; номинал считает калькулятор подтяжки I²C.
Выводы, с которыми осторожно
Флеш-память: GPIO6–GPIO11 (контакты CLK, D0, D1, D2, D3, CMD рядом с USB). По ним модуль обменивается с флеш-памятью и памятью PSRAM. Если их занять, программа перестанет читаться из флеш-памяти — эти контакты не используют.
Только входы: GPIO34–GPIO39 (IO34, IO35, VP, VN). У них нет выходного каскада и внутренних подтягивающих резисторов: светодиод от них не зажечь, а кнопку подключают с внешней подтяжкой. Зато это каналы АЦП1, удобные для измерений.
Обвязка загрузки: GPIO0, 2, 5, 12, 15. Уровни на них ESP32 считывает при сбросе, после чего выводы работают как обычные. Значения по умолчанию задают внутренние подтяжки (табл. 3-1 даташита):
| Вывод | Подтяжка | Что выбирает уровень при сбросе |
|---|---|---|
| GPIO0 | вверх | 1 — запуск программы из флеш-памяти, 0 — загрузка прошивки по UART |
| GPIO2 | вниз | для загрузки по UART должен быть 0 |
| GPIO5 | вверх | тайминг ведомого SDIO |
| GPIO12 (MTDI) | вниз | 0 — питание флеш-памяти 3,3 В, 1 — 1,8 В |
| GPIO15 (MTDO) | вверх | 1 — загрузчик выводит сообщения в UART0, 0 — молчит |
Самая частая ловушка — GPIO12: внешняя подтяжка вверх или датчик, выдающий высокий уровень при включении, переключают питание флеш-памяти на 1,8 В, и модуль с флеш-памятью на 3,3 В не запускается. GPIO0 на плате подключён к кнопке Boot и к схеме автозагрузки, поэтому нагрузку на него вешают с оглядкой.
АЦП2 и Wi-Fi. Каналы АЦП2 (GPIO0, 2, 4, 12–15, 25–27) использует драйвер Wi-Fi: пока он работает, мерить ими внешние напряжения нельзя. При включённом Wi-Fi для измерений остаются каналы АЦП1 — GPIO32–39.
GPIO16 и GPIO17 свободны на платах с модулями ESP32-WROOM и ESP32-SOLO-1, а у модулей ESP32-WROVER заняты памятью PSRAM.
TX и RX (GPIO1, GPIO3) подключены к мосту CP2102N через резисторы 0 Ом: через них идёт загрузка прошивки и вывод Serial. Внешнее устройство на этих линиях может мешать загрузке.
Питание
Плату питают одним из трёх способов, и только одним — руководство Espressif прямо предупреждает, что одновременное подключение нескольких источников может повредить плату или источник:
- через micro-USB (обычный способ): 5 В с USB проходят через диод Шоттки BAT760 на цепь 5 В платы;
- через контакт 5V (J2-19) — та же цепь 5 В;
- через контакт 3V3 (J2-1) — напрямую на питание модуля, минуя стабилизатор.
Из цепи 5 В линейный стабилизатор AMS1117-3.3 делает 3,3 В для модуля; в цепи 5 В стоит красный светодиод питания. Модуль ESP32-WROOM-32E рассчитан на 3,0–3,6 В, а предельное напряжение питания ESP32 по табл. 5-1 даташита — 3,6 В, поэтому на контакт 3V3 подают только стабилизированные 3,3 В. Чем меньше разница входного и выходного напряжения линейного стабилизатора, тем меньше он греется; как рассчитать рассеиваемую мощность — в статье о линейных стабилизаторах.
Ограничения входов и выходов
Уровни логики ESP32 по табл. 5-3 даташита (питание выводов 3,3 В, 25 °C):
| Параметр | Значение |
|---|---|
| Входное напряжение высокого уровня | от 0,75 · VDD (2,48 В) до VDD + 0,3 В |
| Входное напряжение низкого уровня | от −0,3 В до 0,25 · VDD (0,83 В) |
| Выходное напряжение высокого уровня | не меньше 0,8 · VDD (2,64 В) |
| Выходное напряжение низкого уровня | не больше 0,1 · VDD (0,33 В) |
| Выходной ток высокого уровня | типично 40 мА при максимальной силе выхода (у выводов домена VDD_SDIO — 20 мА) |
| Выходной ток низкого уровня | типично 28 мА при 0,495 В и максимальной силе выхода |
| Подтягивающие резисторы | типично 45 кОм |
Сила выхода настраивается: около 5, 10, 20 или 40 мА, по умолчанию — около 20 мА. Когда несколько выводов одного домена питания отдают ток одновременно, допустимый ток на вывод снижается примерно с 40 до 29 мА. Сигналы 5-вольтовой логики подключают через делитель или преобразователь уровней, а нагрузку больше нескольких миллиампер — через транзисторный ключ.
Загрузка прошивки
Прошивка загружается по USB через мост CP2102N и UART0 ESP32. На плате есть схема автозагрузки: линии DTR и RTS моста через два транзистора SS8050 управляют выводами EN и GPIO0. Программа загрузки (esptool, Arduino IDE, ESP-IDF) сама переводит ESP32 в режим загрузки и перезапускает его после записи:
| DTR | RTS | EN | GPIO0 |
|---|---|---|---|
| 1 | 1 | 1 | 1 |
| 0 | 0 | 1 | 1 |
| 1 | 0 | 0 | 1 |
| 0 | 1 | 1 | 0 |
Если автозагрузка не срабатывает, режим включают кнопками: зажать Boot (GPIO0 на землю), нажать и отпустить EN (сброс), отпустить Boot. Вывод EN подтянут к 3,3 В резистором 10 кОм и зашунтирован конденсатором 0,1 мкФ — это задержка сброса при включении.
На ранних платах V4 конденсатор C15 на GPIO0 мог приводить к тому, что плата запускалась в режиме загрузки, и искажал тактовый сигнал, если его выводить на GPIO0; Espressif в таком случае советует C15 удалить. На актуальной схеме он помечен как неустанавливаемый.
Программы для ESP32 пишут в ESP-IDF — фреймворке Espressif — или в Arduino IDE с ядром Arduino-ESP32; среды и инструменты сравниваются в разделе программ. Параметры UART для обмена с компьютером — скорость, формат кадра — помогает подобрать калькулятор скорости UART.
Частые вопросы
Какие выводы ESP32 можно использовать без ограничений?
Свободнее всего GPIO4, 13, 14, 16–19, 21–23, 25–27, 32 и 33: они не участвуют в загрузке и не заняты на плате (GPIO16 и 17 свободны на платах с модулями WROOM и SOLO-1, у WROVER они заняты памятью PSRAM). Не трогайте GPIO6–11 — по ним модуль читает флеш-память. GPIO34–39 работают только как входы. С выводами 0, 2, 5, 12 и 15 осторожнее: их уровень при сбросе задаёт режим загрузки.
Почему ESP32 не загружается, если к GPIO12 что-то подключено?
GPIO12 (MTDI) — вывод обвязки загрузки: при сбросе его уровень выбирает напряжение питания флеш-памяти. Внутри он подтянут к земле, что даёт 3,3 В. Если внешняя схема подаёт на него высокий уровень, ESP32 включает питание флеш-памяти 1,8 В, и модуль с флеш-памятью на 3,3 В не запускается. Внешнюю подтяжку вверх на GPIO12 не ставят или переносят нагрузку на другой вывод.
Почему analogRead на GPIO 25 или 26 не работает вместе с Wi-Fi?
Выводы 0, 2, 4, 12–15, 25–27 подключены к АЦП2, а АЦП2 использует драйвер Wi-Fi: пока он занят, измерять им внешние сигналы нельзя. Для измерений при включённом Wi-Fi используйте каналы АЦП1 — GPIO32–39 (на плате это IO32–IO35, VP и VN).
Можно ли подавать 5 В на выводы ESP32?
Нет. Выводы питаются от 3,3 В, и по даташиту входное напряжение высокого уровня не должно превышать напряжение питания выводов больше чем на 0,3 В. Сигналы 5-вольтовой логики подключают через делитель или преобразователь уровней. Контакт 5V на плате — это питание, а не уровень логики.
Как прошить ESP32-DevKitC, если загрузка не начинается сама?
Обычно программа загрузки сама переводит ESP32 в режим загрузки через линии DTR и RTS моста USB-UART. Если это не срабатывает, зажмите кнопку Boot (GPIO0), нажмите и отпустите EN, затем отпустите Boot — ESP32 перезапустится в режиме загрузки по UART.
Источники
- Espressif. ESP32-DevKitC V4 User Guide (esp-dev-kits, коммит 6f4b0f6) — таблицы разъёмов J2 и J3, варианты модулей, способы питания, кнопки, замечание о C15; лицензия CC BY-SA 4.0
- Espressif. ESP32-DevKitC V4 Schematics, PCB Layout, Dimensions — AMS1117-3.3, CP2102N, диод BAT760, схема автозагрузки на SS8050, RC-цепь EN; размеры 27,94 × 48,26 мм, ряды через 25,40 мм
- Espressif. ESP32 Series Datasheet v5.3 — табл. 2-1 — функции выводов; разд. 3 — выводы обвязки загрузки; разд. 4.8 — GPIO и матрица; табл. 5-1 и 5-3 — питание и уровни; прил. A.1 — нагрузочная способность
- Espressif. ESP32 Technical Reference Manual v5.8 — гл. 6 — IO MUX и матрица GPIO; АЦП2 и Wi-Fi
- Espressif. ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet v2.1 — флеш 4, 8 или 16 МБ, питание 3,0–3,6 В, размеры модуля
- Espressif. esp-idf v6.1 и arduino-esp32 3.3.12 — io_mux_reg.h, adc_channel.h, touch_sensor_channel.h, rtc_io_channel.h, dac_channel.h — таблица функций, сверенная с даташитом; variants/esp32/pins_arduino.h — выводы Serial, Wire и SPI по умолчанию
Нашли ошибку?
Смотрите также
- Strapping-выводы ESP32Какие GPIO читаются при сбросе: загрузка, напряжение флеш-памяти, JTAG — для ESP32, S2, S3, C2, C3, C5, C6, H2, P4
- ПлатыArduino, ESP32-DevKitC, Raspberry Pi Pico: распиновка и питание
- Raspberry Pi Pico40 контактов, функции GPIO, питание, АЦП, BOOTSEL и SWD
- Согласование уровнейПрямое соединение, делитель, диоды, MOSFET-транслятор, I²C на BSS138
- АЦПКвантование, формула кода, SAR, время выборки, погрешности, передискретизация
- UARTКадр 8N1, скорость и допуск, TX и RX, уровни, USB–UART, AVR и STM32
- I²CSDA и SCL, START/STOP, ACK, адреса, скорости, расчёт подтяжек