Перейти к содержанию

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 одно ядро)
Память ESP32520 КБ 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 заняты флеш-памятью
Периферия ESP323 UART, 2 I²C, 4 SPI (SPI2 и SPI3 — для внешних устройств), 2 I²S, 16 каналов ШИМ, CAN (TWAI)
АналоговыеАЦП 12 бит до 18 каналов (16 на контактах), 2 ЦАП по 8 бит, 10 сенсорных входов
USBmicro-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 или все выводы обвязки загрузки.

антеннамодуль ESP32AMS1117CP2102NLEDENBootmicro-USBJ2-1: 3V3 — 3,3 В13V33,3 ВJ2-2: EN — сброс низким уровнем2ENсброс низким уровнемJ2-3: VP — GPIO36 — ADC1_CH03VPADC1_CH0J2-4: VN — GPIO39 — ADC1_CH34VNADC1_CH3J2-5: IO34 — GPIO34 — ADC1_CH65IO34ADC1_CH6J2-6: IO35 — GPIO35 — ADC1_CH76IO35ADC1_CH7J2-7: IO32 — GPIO32 — ADC1_CH4, TOUCH97IO32ADC1_CH4TOUCH9J2-8: IO33 — GPIO33 — ADC1_CH5, TOUCH88IO33ADC1_CH5TOUCH8J2-9: IO25 — GPIO25 — ADC2_CH8, DAC_19IO25ADC2_CH8DAC_1J2-10: IO26 — GPIO26 — ADC2_CH9, DAC_210IO26ADC2_CH9DAC_2J2-11: IO27 — GPIO27 — ADC2_CH7, TOUCH711IO27ADC2_CH7TOUCH7J2-12: IO14 — GPIO14 — ADC2_CH6, TOUCH6, MTMS, HSPICLK12IO14ADC2_CH6TOUCH6MTMSHSPICLKJ2-13: IO12 — GPIO12 — ADC2_CH5, TOUCH5, MTDI, HSPIQ13IO12ADC2_CH5TOUCH5MTDIHSPIQJ2-14: GND14GNDJ2-15: IO13 — GPIO13 — ADC2_CH4, TOUCH4, MTCK, HSPID15IO13ADC2_CH4TOUCH4MTCKHSPIDJ2-16: D2 — GPIO9 — флеш16D2флешJ2-17: D3 — GPIO10 — флеш17D3флешJ2-18: CMD — GPIO11 — флеш18CMDфлешJ2-19: 5V — 5 В195V5 ВJ3-1: GND1GNDJ3-2: IO23 — GPIO23 — VSPID2IO23VSPIDJ3-3: IO22 — GPIO22 — VSPIWP3IO22VSPIWPJ3-4: TX — GPIO1 — U0TXD4TXU0TXDJ3-5: RX — GPIO3 — U0RXD5RXU0RXDJ3-6: IO21 — GPIO21 — VSPIHD6IO21VSPIHDJ3-7: GND7GNDJ3-8: IO19 — GPIO19 — VSPIQ8IO19VSPIQJ3-9: IO18 — GPIO18 — VSPICLK9IO18VSPICLKJ3-10: IO5 — GPIO5 — VSPICS010IO5VSPICS0J3-11: IO17 — GPIO17 — U2TXD11IO17U2TXDJ3-12: IO16 — GPIO16 — U2RXD12IO16U2RXDJ3-13: IO4 — GPIO4 — ADC2_CH0, TOUCH0, HSPIHD13IO4ADC2_CH0TOUCH0HSPIHDJ3-14: IO0 — GPIO0 — ADC2_CH1, TOUCH114IO0ADC2_CH1TOUCH1J3-15: IO2 — GPIO2 — ADC2_CH2, TOUCH2, HSPIWP15IO2ADC2_CH2TOUCH2HSPIWPJ3-16: IO15 — GPIO15 — ADC2_CH3, TOUCH3, MTDO, HSPICS016IO15ADC2_CH3TOUCH3MTDOHSPICS0J3-17: D1 — GPIO8 — флеш17D1флешJ3-18: D0 — GPIO7 — флеш18D0флешJ3-19: CLK — GPIO6 — флеш19CLKфлеш
ESP32-DevKitC V4, вид сверху: контакты, их номера и функции GPIO. Плата 27,94 × 48,26 мм, шаг контактов 2,54 мм.
  • ввод-вывод
  • питание и земля
  • управление: EN
  • заняты на плате
  • выбранная функция

Контакты и функции

Цифровую периферию ESP32 — UART, I²C, ШИМ (контроллер LED PWM), I²S, счётчики импульсов — можно вывести на любой GPIO через матрицу GPIO: таблица ниже не ограничивает, где будет, скажем, шина I²C. Через IO MUX, минуя матрицу, к фиксированным выводам подключаются только быстрые сигналы — SPI, JTAG, UART, SDIO и Ethernet; так их работа на высоких частотах надёжнее. Аналоговые функции — АЦП, ЦАП, сенсорные входы — жёстко привязаны к своим выводам.

КонтактПодписьGPIOАЦПСенсорRTCIO_MUXЕщё
J2-13V3—3,3 В
J2-2EN—сброс низким уровнем
J2-3VP36ADC1_CH0—RTC_GPIO0—только вход, без подтяжек
J2-4VN39ADC1_CH3—RTC_GPIO3—только вход, без подтяжек
J2-5IO3434ADC1_CH6—RTC_GPIO4—только вход, без подтяжек
J2-6IO3535ADC1_CH7—RTC_GPIO5—только вход, без подтяжек
J2-7IO3232ADC1_CH4TOUCH9RTC_GPIO9—
J2-8IO3333ADC1_CH5TOUCH8RTC_GPIO8—
J2-9IO2525ADC2_CH8—RTC_GPIO6EMAC_RXD0выход ЦАП DAC1
J2-10IO2626ADC2_CH9—RTC_GPIO7EMAC_RXD1выход ЦАП DAC2
J2-11IO2727ADC2_CH7TOUCH7RTC_GPIO17EMAC_RX_DV
J2-12IO1414ADC2_CH6TOUCH6RTC_GPIO16MTMS, HSPICLK, HS2_CLK, SD_CLK, EMAC_TXD2
J2-13IO1212ADC2_CH5TOUCH5RTC_GPIO15MTDI, HSPIQ, HS2_DATA2, SD_DATA2, EMAC_TXD3вывод обвязки загрузки (подтяжка вниз): напряжение VDD_SDIO: 1 при сбросе — 1,8 В вместо 3,3 В
J2-14GND—общий провод
J2-15IO1313ADC2_CH4TOUCH4RTC_GPIO14MTCK, HSPID, HS2_DATA3, SD_DATA3, EMAC_RX_ER
J2-16D29———SD_DATA2, SPIHD, HS1_DATA2, U1RXDзанят флеш-памятью модуля
J2-17D310———SD_DATA3, SPIWP, HS1_DATA3, U1TXDзанят флеш-памятью модуля
J2-18CMD11———SD_CMD, SPICS0, HS1_CMD, U1RTSзанят флеш-памятью модуля
J2-195V—5 В
J3-1GND—общий провод
J3-2IO2323———VSPID, HS1_STROBEв Arduino-ESP32 по умолчанию MOSI (SPI)
J3-3IO2222———VSPIWP, U0RTS, EMAC_TXD1в Arduino-ESP32 по умолчанию SCL (Wire)
J3-4TX1———U0TXD, CLK_OUT3, EMAC_RXD2в Arduino-ESP32 по умолчанию Serial TX
J3-5RX3———U0RXD, CLK_OUT2в Arduino-ESP32 по умолчанию Serial RX
J3-6IO2121———VSPIHD, EMAC_TX_ENв Arduino-ESP32 по умолчанию SDA (Wire)
J3-7GND—общий провод
J3-8IO1919———VSPIQ, U0CTS, EMAC_TXD0в Arduino-ESP32 по умолчанию MISO (SPI)
J3-9IO1818———VSPICLK, HS1_DATA7в Arduino-ESP32 по умолчанию SCK (SPI)
J3-10IO55———VSPICS0, HS1_DATA6, EMAC_RX_CLKвывод обвязки загрузки (подтяжка вверх): тайминг ведомого SDIO; в Arduino-ESP32 по умолчанию SS (SPI)
J3-11IO1717———HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
J3-12IO1616———HS1_DATA4, U2RXD, EMAC_CLK_OUT
J3-13IO44ADC2_CH0TOUCH0RTC_GPIO10HSPIHD, HS2_DATA1, SD_DATA1, EMAC_TX_ER
J3-14IO00ADC2_CH1TOUCH1RTC_GPIO11CLK_OUT1, EMAC_TX_CLKвывод обвязки загрузки (подтяжка вверх): режим загрузки: 0 при сбросе — загрузка по UART
J3-15IO22ADC2_CH2TOUCH2RTC_GPIO12HSPIWP, HS2_DATA0, SD_DATA0вывод обвязки загрузки (подтяжка вниз): режим загрузки: для загрузки по UART должен быть 0
J3-16IO1515ADC2_CH3TOUCH3RTC_GPIO13MTDO, HSPICS0, HS2_CMD, SD_CMD, EMAC_RXD3вывод обвязки загрузки (подтяжка вверх): вывод сообщений загрузчика в U0TXD: 0 — отключён
J3-17D18———SD_DATA1, SPID, HS1_DATA1, U2CTSзанят флеш-памятью модуля
J3-18D07———SD_DATA0, SPIQ, HS1_DATA0, U2RTSзанят флеш-памятью модуля
J3-19CLK6———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 в режим загрузки и перезапускает его после записи:

DTRRTSENGPIO0
1111
0011
1001
0110

Если автозагрузка не срабатывает, режим включают кнопками: зажать 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.

Источники

  1. Espressif. ESP32-DevKitC V4 User Guide (esp-dev-kits, коммит 6f4b0f6) — таблицы разъёмов J2 и J3, варианты модулей, способы питания, кнопки, замечание о C15; лицензия CC BY-SA 4.0
  2. Espressif. ESP32-DevKitC V4 Schematics, PCB Layout, Dimensions — AMS1117-3.3, CP2102N, диод BAT760, схема автозагрузки на SS8050, RC-цепь EN; размеры 27,94 × 48,26 мм, ряды через 25,40 мм
  3. Espressif. ESP32 Series Datasheet v5.3 — табл. 2-1 — функции выводов; разд. 3 — выводы обвязки загрузки; разд. 4.8 — GPIO и матрица; табл. 5-1 и 5-3 — питание и уровни; прил. A.1 — нагрузочная способность
  4. Espressif. ESP32 Technical Reference Manual v5.8 — гл. 6 — IO MUX и матрица GPIO; АЦП2 и Wi-Fi
  5. Espressif. ESP32-WROOM-32E & ESP32-WROOM-32UE Datasheet v2.1 — флеш 4, 8 или 16 МБ, питание 3,0–3,6 В, размеры модуля
  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 по умолчанию

Нашли ошибку?