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

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

У ESP32-S3 45 выводов общего назначения, но свободно можно занять меньше половины: часть отдана флеш-памяти и PSRAM, часть читается при сбросе, на других — USB, JTAG и консоль. Здесь — таблица всех GPIO с функциями и номерами выводов корпуса и разбор ограничений по даташиту Espressif.

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

ESP32-S3 — двухъядерный чип Espressif на ядрах Xtensa LX7 с Wi-Fi и Bluetooth LE в корпусе QFN56 размером 7×7 мм. У него 45 выводов общего назначения: GPIO0–21 и GPIO26–48 — номеров 22–25 нет. Сравнение с другими чипами семейства — на странице «ESP32 и другие чипы Espressif».

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

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

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

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

С оговорками — это выводы, у которых есть особая роль:

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

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

В таблице — все GPIO, номер вывода корпуса QFN56 и, если вывод называется не GPIOn, его имя в даташите. В колонке «Аналог и RTC» — канал АЦП, сенсор касания, кварц 32 кГц или линия USB и номер вывода RTC; в колонке «Функции IO MUX» — прямые функции, кроме самого GPIO. Каналы АЦП и сенсоры сверены с заголовками 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—с оговорками — strapping-вывод, источник сигналов JTAG, если это разрешено битами eFuseнизкий уровень
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свободеннизкий уровень
GPIO1723ADC2_CH6, RTC_GPIO17U1TXDсвободеннизкий уровень
GPIO1824ADC2_CH7, RTC_GPIO18U1RXD, CLK_OUT3свободеннизкий и высокий уровень
GPIO1925ADC2_CH8, USB_D-, RTC_GPIO19U1RTS, CLK_OUT2с оговорками — USB D−, по умолчанию у USB Serial/JTAGнизкий уровень и дважды высокий
GPIO2026ADC2_CH9, USB_D+, RTC_GPIO20U1CTS, CLK_OUT1с оговорками — USB D+, по умолчанию у USB Serial/JTAGподтяжка вниз и дважды высокий уровень
GPIO2127RTC_GPIO21—свободен—
GPIO26 (SPICS1)28—SPICS1занят — шина флеш-памяти и PSRAM (SPICS1)—
GPIO27 (SPIHD)30—SPIHDзанят — шина флеш-памяти и PSRAM (SPIHD)—
GPIO28 (SPIWP)31—SPIWPзанят — шина флеш-памяти и PSRAM (SPIWP)—
GPIO29 (SPICS0)32—SPICS0занят — шина флеш-памяти и PSRAM (SPICS0)—
GPIO30 (SPICLK)33—SPICLKзанят — шина флеш-памяти и PSRAM (SPICLK)—
GPIO31 (SPIQ)34—SPIQзанят — шина флеш-памяти и PSRAM (SPIQ)—
GPIO32 (SPID)35—SPIDзанят — шина флеш-памяти и PSRAM (SPID)—
GPIO3338—FSPIHD, SUBSPIHD, SPIIO4с оговорками — DQ4 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти—
GPIO3439—FSPICS0, SUBSPICS0, SPIIO5с оговорками — DQ5 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти—
GPIO3540—FSPID, SUBSPID, SPIIO6с оговорками — DQ6 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти—
GPIO3641—FSPICLK, SUBSPICLK, SPIIO7с оговорками — DQ7 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти—
GPIO3742—FSPIQ, SUBSPIQ, SPIDQSс оговорками — DQS восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти—
GPIO3843—FSPIWP, SUBSPIWPсвободен—
GPIO39 (MTCK)44—MTCK, CLK_OUT3, SUBSPICS1с оговорками — JTAG MTCK—
GPIO40 (MTDO)45—MTDO, CLK_OUT2с оговорками — JTAG MTDO—
GPIO41 (MTDI)47—MTDI, CLK_OUT1с оговорками — JTAG MTDI—
GPIO42 (MTMS)48—MTMSс оговорками — JTAG MTMS—
GPIO43 (U0TXD)49—U0TXD, CLK_OUT1с оговорками — UART0 TX: сообщения загрузчика и прошивка—
GPIO44 (U0RXD)50—U0RXD, CLK_OUT2с оговорками — UART0 RX: прошивка через UART—
GPIO4551——с оговорками — strapping-вывод, напряжение VDD_SPI: 1 при сбросе — 1,8 В вместо 3,3 В—
GPIO4652——с оговорками — strapping-вывод, режим загрузки вместе с GPIO0 и вывод сообщений загрузчика—
GPIO47 (SPICLK_P)37—SPICLK_P_DIFF, SUBSPICLK_P_DIFFсвободен — у ESP32-S3R8V и R16V работает от 1,8 В—
GPIO48 (SPICLK_N)36—SPICLK_N_DIFF, SUBSPICLK_N_DIFFсвободен — у ESP32-S3R8V и R16V работает от 1,8 В—

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

Программа ESP32-S3 хранится во внешней или встроенной в корпус флеш-памяти, подключённой к шине SPI0/1 на GPIO26–32 (выводы SPICS1, SPIHD, SPIWP, SPICS0, SPICLK, SPIQ, SPID): на SPICS0 — флеш-память, на SPICS1 — PSRAM. Даташит прямо запрещает использовать выводы, подключённые к памяти в корпусе, для других целей.

В восьмилинейном режиме к шине добавляются GPIO33–36 — линии данных DQ4–DQ7 — и GPIO37 — строб DQS. Восьмилинейная PSRAM стоит в чипах ESP32-S3R8, S3R8V и S3R16V и, соответственно, в модулях ESP32-S3-WROOM-1 с PSRAM на 8 и 16 МБ — N4R8, N8R8, N16R8 и N16R16VA. На выводы модуля WROOM-1 GPIO33 и GPIO34 не выведены вовсе, а у вариантов с восьмилинейной PSRAM заняты и выведенные IO35–37. Модули без PSRAM или с PSRAM на 2 МБ подключают память по четырём линиям, и GPIO33–37 у них свободны.

Память питается от вывода VDD_SPI: 3,3 В от шины VDD3P3_RTC через внутреннее сопротивление около 14 Ом или 1,8 В от встроенного стабилизатора. Чипы ESP32-S3R8V и S3R16V рассчитаны на 1,8 В — и у них от 1,8 В работают также GPIO47 и GPIO48, в отличие от остальных выводов.

Strapping-выводы

Четыре вывода при сбросе читаются как перемычки настройки. Если к ним ничего не подключено, уровень задают внутренние подтяжки:

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

Самый коварный — GPIO45: если внешняя схема поднимет его при сбросе, а напряжение памяти не закреплено битом eFuse, флеш-память на 3,3 В получит 1,8 В, на которые она не рассчитана. Подробнее — на странице «Strapping-выводы ESP32».

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

Выводы питаются от разных шин: GPIO0–21 — от VDD3P3_RTC, GPIO26–32 — от VDD_SPI, GPIO38–46 — от VDD3P3_CPU, а GPIO33–37, 47 и 48 — от VDD_SPI или VDD3P3_CPU, по настройке eFuse. Рекомендованное напряжение всех шин питания — 3,0–3,6 В. Высокий уровень на входе — от 0,75 VDD, низкий — до 0,25 VDD, а выше VDD + 0,3 В подавать нельзя: выводы ESP32-S3 не допускают 5 В. Внутренние подтяжки — около 45 кОм.

Сила выхода настраивается; по умолчанию это 20 мА, у GPIO17 и GPIO18 — 10 мА, у GPIO19 и GPIO20 — 40 мА. При наибольшей силе вывод отдаёт около 40 мА при напряжении не ниже 2,64 В и принимает около 28 мА при 0,495 В; суммарно все выводы могут отдать до 1500 мА — это предельное значение, а не рабочее.

Всплески при включении

При подаче питания на части выводов на время около 60 мкс появляется уровень, которого программа не задавала: на GPIO1–17 — низкий, на GPIO18 и GPIO19 — низкий и высокий, на GPIO20 — подтяжка вниз и высокий. У GPIO19 и GPIO20 высоких импульсов два. Для светодиода это незаметно, но реле, ключ питания или драйвер двигателя на таком выводе может кратко сработать. Без всплесков по таблице даташита включаются GPIO0, GPIO21 и выводы с номерами от 26 — однако из них свободны только GPIO21, 38, 47 и 48.

АЦП

Входы АЦП — на GPIO1–20: ADC1_CH0–9 на GPIO1–10 и ADC2_CH0–9 на GPIO11–20. По даташиту после калибровки погрешность составляет ±5 мВ в диапазоне 0–850 мВ, ±6 мВ до 1100 мВ, ±10 мВ до 1600 мВ и ±50 мВ до 2900 мВ при наибольшем ослаблении; эти значения измерены при выключенном Wi-Fi. Как выбирать ослабление и делитель, разобрано в статье «АЦП ESP32» на примере классического ESP32.

Какие выводы доступны на модулях — на страницах ESP32-S3-WROOM-1 и ESP32-S3-MINI-1, как они разведены на готовой плате — на странице ESP32-S3-DevKitC-1.

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

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

По даташиту Espressif свободны 21 вывод: GPIO1, 2, 4–18, 21, 38, 47 и 48. Ещё 17 — strapping-выводы, USB, JTAG, консоль UART0 и линии восьмилинейной памяти — применимы с оговорками, а семь, GPIO26–32, заняты шиной флеш-памяти и PSRAM, их трогать нельзя.

Почему на модуле ESP32-S3-WROOM-1 N16R8 не работают GPIO35, 36 и 37?

В модулях с PSRAM на 8 или 16 МБ память подключена по восьми линиям данных, и для старших линий чип берёт GPIO33–37. GPIO33 и GPIO34 на выводы модуля не выведены, а IO35, IO36 и IO37 выведены, но, как предупреждает даташит модуля, заняты PSRAM. У модулей без PSRAM или с PSRAM на 2 МБ эти выводы свободны.

Можно ли использовать GPIO19 и GPIO20 ESP32-S3?

Это линии USB D− и D+, по умолчанию подключённые к контроллеру USB Serial/JTAG — через него прошивают плату и выводят консоль. Как обычные GPIO они заработают после переключения бита IO_MUX_MCU_SEL, но тогда USB перестанет работать. Если плата прошивается через встроенный USB, эти выводы лучше не занимать.

Какой ток выдерживает вывод ESP32-S3?

По умолчанию сила выхода — 20 мА, у GPIO17 и GPIO18 — 10 мА, у GPIO19 и GPIO20 — 40 мА. При максимальной силе (PAD_DRIVER = 3) даташит указывает 40 мА от вывода при напряжении не ниже 2,64 В и 28 мА в вывод при 0,495 В; суммарный выходной ток всех выводов — не больше 1500 мА. Светодиод подключают через резистор, а реле и двигатели — через транзистор.

Источники

  1. Espressif. ESP32-S3 Series Datasheet, v2.2 — титул — 45 GPIO, QFN56 7×7 мм; табл. 1-1 — варианты ESP32-S3, S3FN8, S3RH2, S3R8, S3R16V, S3FH4R2 (S3R8V и S3R2 сняты с производства), флеш и PSRAM в корпусе, VDD_SPI 3,3 или 1,8 В; табл. 2-1 — номера выводов, домены питания, сила выхода по умолчанию: GPIO17 и 18 — 10 мА, GPIO19 и 20 — 40 мА, остальные — 20 мА; GPIO47 и 48 у S3R8V и S3R16V работают от 1,8 В; табл. 2-2 — всплески при включении; разд. 2.3.1 — функции IO MUX F0–F4 и матрица GPIO; табл. 2-4, 2-6, 2-8 — функции IO MUX, RTC и аналоговые; разд. 2.3.4–2.3.5 и табл. 2-9 — приоритеты выводов P1–P4 (эталон тестов); табл. 2-14 — выводы флеш-памяти и PSRAM в режимах SPI; разд. 3, табл. 3-1, 3-3, 3-4, 3-5 — strapping-выводы GPIO0, 3, 45, 46; табл. 5-1, 5-2, 5-4 — питание 3,0–3,6 В, суммарный выходной ток до 1500 мА, VIH 0,75 VDD, VIL 0,25 VDD, подтяжки 45 кОм, IOH 40 мА и IOL 28 мА при PAD_DRIVER = 3; табл. 5-6 — погрешность АЦП после калибровки
  2. Espressif. ESP32-S3-WROOM-1 & WROOM-1U Datasheet, v1.8 — табл. 1-1 — варианты модуля от N4 до N16R16VA, PSRAM 8 и 16 МБ — восьмилинейная; табл. 3-1 — выводы модуля, IO35, IO36, IO37 у модулей с восьмилинейной PSRAM заняты и недоступны; GPIO47 и 48 у модулей с ESP32-S3R16V работают от 1,8 В
  3. Espressif. ESP-IDF v5.4.1: soc/esp32s3/include/soc/adc_channel.h и touch_sensor_channel.h (Apache-2.0) — каналы ADC1_CH0–9 на GPIO1–10, ADC2_CH0–9 на GPIO11–20, сенсоры касания TOUCH1–14 на GPIO1–14 — сверка с таблицей 2-8 даташита

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