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, GPIO48 | 21 |
| С оговорками | GPIO0, GPIO3, GPIO19, GPIO20, GPIO33, GPIO34, GPIO35, GPIO36, GPIO37, GPIO39, GPIO40, GPIO41, GPIO42, GPIO43, GPIO44, GPIO45, GPIO46 | 17 |
| Заняты флеш-памятью и PSRAM | GPIO26, GPIO27, GPIO28, GPIO29, GPIO30, GPIO31, GPIO32 | 7 |
С оговорками — это выводы, у которых есть особая роль:
- 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 | Использование | При включении |
|---|---|---|---|---|---|
| GPIO0 | 5 | RTC_GPIO0 | — | с оговорками — strapping-вывод, режим загрузки: 0 вместе с GPIO46 = 0 — загрузка через USB или UART | — |
| GPIO1 | 6 | ADC1_CH0, TOUCH1, RTC_GPIO1 | — | свободен | низкий уровень |
| GPIO2 | 7 | ADC1_CH1, TOUCH2, RTC_GPIO2 | — | свободен | низкий уровень |
| GPIO3 | 8 | ADC1_CH2, TOUCH3, RTC_GPIO3 | — | с оговорками — strapping-вывод, источник сигналов JTAG, если это разрешено битами eFuse | низкий уровень |
| GPIO4 | 9 | ADC1_CH3, TOUCH4, RTC_GPIO4 | — | свободен | низкий уровень |
| GPIO5 | 10 | ADC1_CH4, TOUCH5, RTC_GPIO5 | — | свободен | низкий уровень |
| GPIO6 | 11 | ADC1_CH5, TOUCH6, RTC_GPIO6 | — | свободен | низкий уровень |
| GPIO7 | 12 | ADC1_CH6, TOUCH7, RTC_GPIO7 | — | свободен | низкий уровень |
| GPIO8 | 13 | ADC1_CH7, TOUCH8, RTC_GPIO8 | SUBSPICS1 | свободен | низкий уровень |
| GPIO9 | 14 | ADC1_CH8, TOUCH9, RTC_GPIO9 | SUBSPIHD, FSPIHD | свободен | низкий уровень |
| GPIO10 | 15 | ADC1_CH9, TOUCH10, RTC_GPIO10 | FSPIIO4, SUBSPICS0, FSPICS0 | свободен | низкий уровень |
| GPIO11 | 16 | ADC2_CH0, TOUCH11, RTC_GPIO11 | FSPIIO5, SUBSPID, FSPID | свободен | низкий уровень |
| GPIO12 | 17 | ADC2_CH1, TOUCH12, RTC_GPIO12 | FSPIIO6, SUBSPICLK, FSPICLK | свободен | низкий уровень |
| GPIO13 | 18 | ADC2_CH2, TOUCH13, RTC_GPIO13 | FSPIIO7, SUBSPIQ, FSPIQ | свободен | низкий уровень |
| GPIO14 | 19 | ADC2_CH3, TOUCH14, RTC_GPIO14 | FSPIDQS, SUBSPIWP, FSPIWP | свободен | низкий уровень |
| GPIO15 (XTAL_32K_P) | 21 | ADC2_CH4, XTAL_32K_P, RTC_GPIO15 | U0RTS | свободен | низкий уровень |
| GPIO16 (XTAL_32K_N) | 22 | ADC2_CH5, XTAL_32K_N, RTC_GPIO16 | U0CTS | свободен | низкий уровень |
| GPIO17 | 23 | ADC2_CH6, RTC_GPIO17 | U1TXD | свободен | низкий уровень |
| GPIO18 | 24 | ADC2_CH7, RTC_GPIO18 | U1RXD, CLK_OUT3 | свободен | низкий и высокий уровень |
| GPIO19 | 25 | ADC2_CH8, USB_D-, RTC_GPIO19 | U1RTS, CLK_OUT2 | с оговорками — USB D−, по умолчанию у USB Serial/JTAG | низкий уровень и дважды высокий |
| GPIO20 | 26 | ADC2_CH9, USB_D+, RTC_GPIO20 | U1CTS, CLK_OUT1 | с оговорками — USB D+, по умолчанию у USB Serial/JTAG | подтяжка вниз и дважды высокий уровень |
| GPIO21 | 27 | RTC_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) | — |
| GPIO33 | 38 | — | FSPIHD, SUBSPIHD, SPIIO4 | с оговорками — DQ4 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти | — |
| GPIO34 | 39 | — | FSPICS0, SUBSPICS0, SPIIO5 | с оговорками — DQ5 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти | — |
| GPIO35 | 40 | — | FSPID, SUBSPID, SPIIO6 | с оговорками — DQ6 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти | — |
| GPIO36 | 41 | — | FSPICLK, SUBSPICLK, SPIIO7 | с оговорками — DQ7 восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти | — |
| GPIO37 | 42 | — | FSPIQ, SUBSPIQ, SPIDQS | с оговорками — DQS восьмилинейной PSRAM у ESP32-S3R8, R8V, R16V и восьмилинейной флеш-памяти | — |
| GPIO38 | 43 | — | 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 | — |
| GPIO45 | 51 | — | — | с оговорками — strapping-вывод, напряжение VDD_SPI: 1 при сбросе — 1,8 В вместо 3,3 В | — |
| GPIO46 | 52 | — | — | с оговорками — 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 мА. Светодиод подключают через резистор, а реле и двигатели — через транзистор.
Источники
- 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 — погрешность АЦП после калибровки
- 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 В
- 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 даташита
Нашли ошибку?
Смотрите также
- ESP32ESP32, S2, S3, C2, C3, C5, C6, H2, P4: ядра, радио, USB, GPIO — сравнение и выбор
- ESP32-S3-MINI-1: выводы модуля65 площадок, 39 GPIO: функции, IO26 и PSRAM, strapping, USB, варианты
- ESP32-S3-WROOM-1: выводы модуля41 вывод: GPIO и функции, IO35–37 и PSRAM, варианты памяти, питание
- Strapping-выводы ESP32Какие GPIO читаются при сбросе: загрузка, напряжение флеш-памяти, JTAG — для ESP32, S2, S3, C2, C3, C5, C6, H2, P4
- АЦП ESP32Каналы ADC1 и ADC2, ослабление, калибровка, нелинейность, Wi-Fi и analogRead
- Прошивка ESP32Загрузчик ПЗУ, GPIO0 и автосброс, write-flash и адреса, ошибки esptool и питание
- ESP32-S3-DevKitC-144 контакта, АЦП, сенсоры, обвязка загрузки, два USB, RGB-светодиод, PSRAM
- Матрица GPIOПрограммное соединение сигналов периферии ESP32 с любыми выводами
- PSRAMВнешняя оперативная память на шине SPI: размеры, режимы, выводы
- USB Serial/JTAGВстроенный в ESP32 контроллер USB: COM-порт и JTAG без внешних микросхем
- Вывод обвязки загрузкиGPIO, уровень которого при сбросе задаёт режим загрузки