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

ESP32-S2: выводы чипа и GPIO

У ESP32-S2 43 вывода общего назначения в корпусе QFN56; без оговорок свободны 20, ещё 16 связаны с загрузкой, отладкой, USB или восьмилинейной памятью, а семь заняты флеш-памятью. Здесь — таблица всех GPIO с функциями и номерами выводов корпуса и разбор ограничений по даташиту Espressif.

Обновлено Редакция GAW

ESP32-S2 — чип Espressif на одном ядре Xtensa LX7 с Wi-Fi и контроллером USB OTG, без Bluetooth. Он выпускается в корпусе QFN56 размером 7×7 мм и имеет 43 вывода общего назначения: GPIO0–21 и GPIO26–46. Варианты отличаются памятью в корпусе: у ESP32-S2 её нет, у S2FH4 — флеш-память 4 МБ, у S2R2 — PSRAM 2 МБ, у S2FN4R2 — и то и другое, а S2FH2 снят с производства. Сравнение с другими чипами — на странице «ESP32 и другие чипы Espressif».

У каждого вывода до пяти функций IO MUX — UART, JTAG, шины SPI, выходы тактового сигнала, — а почти любой сигнал периферии можно вывести на любой GPIO через матрицу GPIO. GPIO0–21 подключены ещё и к RTC IO MUX: в глубоком сне ими управляют сопроцессор ULP и периферия домена RTC. У них же аналоговые функции — АЦП, ЦАП, сенсоры касания.

Какие выводы свободны

Даташит делит выводы по приоритету на свободные, с оговорками и занятые:

ГруппаВыводыЧисло
СвободныеGPIO1, GPIO2, GPIO3, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO10, GPIO11, GPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO17, GPIO18, GPIO21, GPIO3820
С оговоркамиGPIO0, GPIO19, GPIO20, GPIO33, GPIO34, GPIO35, GPIO36, GPIO37, GPIO39, GPIO40, GPIO41, GPIO42, GPIO43, GPIO44, GPIO45, GPIO4616
Заняты флеш-памятью и PSRAMGPIO26, GPIO27, GPIO28, GPIO29, GPIO30, GPIO31, GPIO327

С оговорками — это выводы с особой ролью:

  • GPIO0, GPIO45, GPIO46 — strapping-выводы: режим загрузки, напряжение флеш-памяти и сообщения загрузчика. GPIO46 к тому же работает только на вход.
  • GPIO19 и GPIO20 — линии USB D− и D+, по умолчанию подключённые к контроллеру USB OTG.
  • GPIO39–42 — JTAG (MTCK, MTDO, MTDI, MTMS).
  • GPIO43 и GPIO44 — UART0: сообщения загрузчика и прошивка.
  • GPIO33–37 — старшие линии данных и строб восьмилинейной шины памяти; свободны, если флеш-память и PSRAM подключены по четырём линиям, как во всех вариантах с памятью в корпусе.

Таблица выводов

В таблице — все GPIO, номер вывода корпуса и, если вывод называется не GPIOn, его имя в даташите. В колонке «Аналог и RTC» — канал АЦП, сенсор касания, ЦАП, кварц 32 кГц или линия USB и номер вывода RTC. Каналы сверены с заголовками ESP-IDF.

GPIOВывод QFN56Аналог и RTCФункции IO MUXИспользование
GPIO05RTC_GPIO0—с оговорками — strapping-вывод, режим загрузки: 0 вместе с GPIO46 = 0 — загрузка через USB или UART
GPIO16ADC1_CH0, TOUCH1, RTC_GPIO1—свободен
GPIO27ADC1_CH1, TOUCH2, RTC_GPIO2—свободен
GPIO38ADC1_CH2, TOUCH3, RTC_GPIO3—свободен
GPIO49ADC1_CH3, TOUCH4, RTC_GPIO4—свободен
GPIO510ADC1_CH4, TOUCH5, RTC_GPIO5—свободен
GPIO611ADC1_CH5, TOUCH6, RTC_GPIO6—свободен
GPIO712ADC1_CH6, TOUCH7, RTC_GPIO7—свободен
GPIO813ADC1_CH7, TOUCH8, RTC_GPIO8SUBSPICS1свободен
GPIO914ADC1_CH8, TOUCH9, RTC_GPIO9SUBSPIHD, FSPIHDсвободен
GPIO1015ADC1_CH9, TOUCH10, RTC_GPIO10FSPIIO4, SUBSPICS0, FSPICS0свободен
GPIO1116ADC2_CH0, TOUCH11, RTC_GPIO11FSPIIO5, SUBSPID, FSPIDсвободен
GPIO1217ADC2_CH1, TOUCH12, RTC_GPIO12FSPIIO6, SUBSPICLK, FSPICLKсвободен
GPIO1318ADC2_CH2, TOUCH13, RTC_GPIO13FSPIIO7, SUBSPIQ, FSPIQсвободен
GPIO1419ADC2_CH3, TOUCH14, RTC_GPIO14FSPIDQS, SUBSPIWP, FSPIWPсвободен
GPIO15 (XTAL_32K_P)21ADC2_CH4, XTAL_32K_P, RTC_GPIO15U0RTSсвободен
GPIO16 (XTAL_32K_N)22ADC2_CH5, XTAL_32K_N, RTC_GPIO16U0CTSсвободен
GPIO17 (DAC_1)23ADC2_CH6, DAC_1, RTC_GPIO17U1TXDсвободен
GPIO18 (DAC_2)24ADC2_CH7, DAC_2, RTC_GPIO18U1RXD, CLK_OUT3свободен
GPIO1925ADC2_CH8, USB_D-, RTC_GPIO19U1RTS, CLK_OUT2с оговорками — USB D−, по умолчанию у USB OTG
GPIO2026ADC2_CH9, USB_D+, RTC_GPIO20U1CTS, CLK_OUT1с оговорками — USB D+, по умолчанию у USB OTG
GPIO2128RTC_GPIO21—свободен
GPIO26 (SPICS1)29—SPICS1занят — шина флеш-памяти и PSRAM (SPICS1)
GPIO27 (SPIHD)31—SPIHDзанят — шина флеш-памяти и PSRAM (SPIHD)
GPIO28 (SPIWP)32—SPIWPзанят — шина флеш-памяти и PSRAM (SPIWP)
GPIO29 (SPICS0)33—SPICS0занят — шина флеш-памяти и PSRAM (SPICS0)
GPIO30 (SPICLK)34—SPICLKзанят — шина флеш-памяти и PSRAM (SPICLK)
GPIO31 (SPIQ)35—SPIQзанят — шина флеш-памяти и PSRAM (SPIQ)
GPIO32 (SPID)36—SPIDзанят — шина флеш-памяти и PSRAM (SPID)
GPIO3337—FSPIHD, SUBSPIHD, SPIIO4с оговорками — DQ4 при восьмилинейной флеш-памяти или PSRAM
GPIO3438—FSPICS0, SUBSPICS0, SPIIO5с оговорками — DQ5 при восьмилинейной флеш-памяти или PSRAM
GPIO3539—FSPID, SUBSPID, SPIIO6с оговорками — DQ6 при восьмилинейной флеш-памяти или PSRAM
GPIO3640—FSPICLK, SUBSPICLK, SPIIO7с оговорками — DQ7 при восьмилинейной флеш-памяти или PSRAM
GPIO3741—FSPIQ, SUBSPIQ, SPIDQSс оговорками — DQS при восьмилинейной флеш-памяти или PSRAM
GPIO3842—FSPIWP, SUBSPIWPсвободен
GPIO39 (MTCK)43—MTCK, CLK_OUT3, SUBSPICS1с оговорками — JTAG MTCK
GPIO40 (MTDO)44—MTDO, CLK_OUT2с оговорками — JTAG MTDO
GPIO41 (MTDI)46—MTDI, CLK_OUT1с оговорками — JTAG MTDI
GPIO42 (MTMS)47—MTMSс оговорками — JTAG MTMS
GPIO43 (U0TXD)48—U0TXD, CLK_OUT1с оговорками — UART0 TX: сообщения загрузчика и прошивка
GPIO44 (U0RXD)49—U0RXD, CLK_OUT2с оговорками — UART0 RX: прошивка через UART
GPIO4550——с оговорками — strapping-вывод, напряжение VDD_SPI: 1 при сбросе — 1,8 В вместо 3,3 В
GPIO4655——с оговорками — strapping-вывод, режим загрузки вместе с GPIO0 и вывод сообщений загрузчика; только вход

Флеш-память и PSRAM

Флеш-память и PSRAM подключаются к шине SPI0/1 на GPIO26–32 — выводы SPICS1, SPIHD, SPIWP, SPICS0, SPICLK, SPIQ, SPID; флеш-память выбирается по SPICS0, PSRAM — по SPICS1. Даташит запрещает использовать выводы, подключённые к памяти в корпусе, для чего-то ещё. В восьмилинейном режиме к шине добавляются GPIO33–37.

Память питается от вывода VDD_SPI: 3,3 В от шины VDD3P3_RTC через внутреннее сопротивление около 5 Ом или 1,8 В от встроенного стабилизатора на ток до 40 мА. Варианты с памятью в корпусе рассчитаны на 3,3 В.

Strapping-выводы

Три вывода при сбросе читаются как перемычки настройки, после сброса они работают как обычные GPIO. Уровни нужно удерживать не меньше 3 мс после появления высокого уровня на CHIP_PU:

ВыводПо умолчаниюЧто задаёт
GPIO0подтяжка вверх, 11 — запуск программы; 0 вместе с GPIO46 = 0 — загрузка прошивки через USB OTG, UART или SPI
GPIO45подтяжка вниз, 0напряжение VDD_SPI: 0 — 3,3 В, 1 — 1,8 В, если не закреплено eFuse
GPIO46подтяжка вниз, 0режим загрузки вместе с GPIO0; вместе с eFuse управляет сообщениями загрузчика

Подробнее — на странице «Strapping-выводы ESP32».

Питание выводов и токи

GPIO0–21 питаются от шины VDD3P3_RTC_IO, GPIO26–32 — от VDD_SPI, GPIO33–37 — от VDD_SPI или VDD3P3_CPU, по настройке регистра, а GPIO38–46 — от VDD3P3_CPU. Рекомендованное напряжение VDD3P3_RTC_IO — 3,0–3,6 В, VDD3P3_CPU — 2,8–3,6 В. Высокий уровень на входе — от 0,75 VDD, низкий — до 0,25 VDD, выше VDD + 0,3 В подавать нельзя. Внутренние подтяжки — около 45 кОм.

Сила выхода по умолчанию — 20 мА у всех выводов. При наибольшей силе вывод отдаёт около 40 мА при напряжении не ниже 2,64 В и принимает около 28 мА при 0,495 В. Предельный суммарный выходной ток всех выводов — 1800 мА.

Аналоговые функции

  • АЦП — 20 каналов: ADC1_CH0–9 на GPIO1–10 и ADC2_CH0–9 на GPIO11–20. После калибровки погрешность — ±10 мВ в диапазоне 0–700 мВ, ±11 мВ до 950 мВ, ±13 мВ до 1200 мВ и ±17 мВ до 2300 мВ; измерения сделаны при выключенном Wi-Fi.
  • ЦАП — DAC_1 на GPIO17 и DAC_2 на GPIO18.
  • Сенсоры касания — 14 каналов, TOUCH1–14 на GPIO1–14.

Выводы других чипов — на страницах ESP32, ESP32-S3, ESP32-C3, ESP32-C6 и ESP32-H2.

Частые вопросы

Какие GPIO ESP32-S2 можно использовать без ограничений?

По даташиту свободны 20: GPIO1–18, 21 и 38. GPIO15 и 16 заняты, если подключён кварц 32 кГц. Ещё 16 выводов — strapping GPIO0, 45, 46, USB на GPIO19 и 20, JTAG на GPIO39–42, UART0 на GPIO43 и 44 и линии восьмилинейной памяти GPIO33–37 — применимы с оговорками, а GPIO26–32 заняты флеш-памятью.

Есть ли у ESP32-S2 Bluetooth?

Нет. У ESP32-S2 только Wi-Fi 802.11 b/g/n, зато есть контроллер USB OTG на GPIO19 и GPIO20: через него можно прошивать чип и сделать из платы USB-устройство. Если нужен Bluetooth LE, подходит ESP32-S3 — у него 45 выводов, два ядра и тоже есть USB.

Почему GPIO46 ESP32-S2 не работает как выход?

По таблице функций IO MUX GPIO46 — только вход. Кроме того, это strapping-вывод: вместе с GPIO0 он выбирает режим загрузки и управляет сообщениями загрузчика, поэтому для входа в режим прошивки на нём при сбросе должен быть 0 — его и даёт внутренняя подтяжка вниз.

Сколько каналов АЦП и ЦАП у ESP32-S2?

Двадцать каналов АЦП — ADC1_CH0–9 на GPIO1–10 и ADC2_CH0–9 на GPIO11–20 — и два канала ЦАП: DAC_1 на GPIO17 и DAC_2 на GPIO18. После калибровки погрешность АЦП — от ±10 мВ в диапазоне до 700 мВ до ±17 мВ в диапазоне до 2300 мВ.

Источники

  1. Espressif. ESP32-S2 Series Datasheet, v1.9 — титул — одно ядро Xtensa LX7, Wi-Fi 802.11 b/g/n, 43 GPIO, QFN56 7×7 мм; табл. 1-1 — ESP32-S2, S2FH2 (снят с производства), S2FH4, S2FN4R2, S2R2, флеш-память и PSRAM в корпусе, VDD_SPI 3,3 или 1,8 В; табл. 2-1 — номера выводов и домены питания, сила выхода по умолчанию 20 мА; табл. 2-3 — функции IO MUX F0–F4, GPIO46 — только вход; табл. 2-6 — RTC_GPIO0–21; табл. 2-8 — сенсоры касания, АЦП, кварц 32 кГц, ЦАП, USB; разд. 2.3.5–2.3.6, табл. 2-9 — приоритеты выводов P1–P4 (эталон тестов); табл. 2-14 — выводы флеш-памяти и PSRAM; разд. 3, табл. 3-1, 3-3, 3-4, 3-5 — strapping-выводы GPIO0, 45, 46, удержание уровней 3 мс; табл. 5-1–5-4 — суммарный выходной ток до 1800 мА, VDD3P3_RTC_IO 3,0–3,6 В, VDD3P3_CPU 2,8–3,6 В, VDD_SPI 3,3 В через 5 Ом или 1,8 В от стабилизатора до 40 мА, VIH 0,75 VDD, VIL 0,25 VDD, подтяжки 45 кОм, IOH 40 мА и IOL 28 мА; табл. 5-6 — погрешность АЦП после калибровки
  2. Espressif. ESP-IDF v5.4.1: soc/esp32s2/include/soc — adc_channel.h, touch_sensor_channel.h, rtc_io_channel.h (Apache-2.0) — ADC1_CH0–9 на GPIO1–10, ADC2_CH0–9 на GPIO11–20, TOUCH1–14 на GPIO1–14, RTC IO 0–21 на GPIO0–21 — сверка с таблицами 2-6 и 2-8 даташита

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