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

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

У ESP32-C3 22 вывода общего назначения, а у вариантов FH4AZ и FH4X — 16, и по даташиту без оговорок свободны только четыре. Остальные заняты флеш-памятью, читаются при сбросе, отданы USB, JTAG или консоли. Здесь — таблица всех GPIO с функциями и номерами выводов корпуса и разбор ограничений по даташиту Espressif.

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

ESP32-C3 — чип Espressif на одном ядре RISC-V с Wi-Fi и Bluetooth LE в корпусе QFN32 размером 5×5 мм. У него 22 вывода общего назначения, GPIO0–21, а у вариантов ESP32-C3FH4AZ и FH4X выводы шины флеш-памяти не подключены, и GPIO остаётся 16. Сравнение с другими чипами семейства — на странице «ESP32 и другие чипы Espressif».

Как и у других чипов Espressif, у каждого вывода есть несколько прямых функций IO MUX — JTAG, UART0, шина SPI, — а почти любой сигнал периферии можно вывести на любой GPIO через матрицу GPIO. Аналоговые функции есть у GPIO0–5: входы АЦП, а на GPIO0 и GPIO1 — ещё и кварц 32 кГц.

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

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

ГруппаВыводыЧисло
СвободныеGPIO0, GPIO1, GPIO3, GPIO104
С оговоркамиGPIO2, GPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO11, GPIO18, GPIO19, GPIO20, GPIO2112
Заняты флеш-памятьюGPIO12, GPIO13, GPIO14, GPIO15, GPIO16, GPIO176

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

  • GPIO2, GPIO8, GPIO9 — strapping-выводы: их уровень при сбросе выбирает режим загрузки.
  • GPIO4–7 — JTAG (MTMS, MTDI, MTCK, MTDO); их можно освободить, отлаживая чип через USB Serial/JTAG.
  • GPIO18 и GPIO19 — линии USB D− и D+, по умолчанию подключённые к контроллеру USB Serial/JTAG.
  • GPIO20 и GPIO21 — UART0: через него загрузчик выводит сообщения и принимает прошивку.
  • GPIO11 — вывод VDD_SPI, питание флеш-памяти. Как GPIO он работает, только если флеш-память внешняя и питается отдельно.

Поэтому на практике для своих схем берут и выводы с оговорками, понимая, что за этим стоит: strapping-выводы — с учётом уровня при сбросе, JTAG — если отлаживают через USB, UART0 — если консоль идёт через USB.

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

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

GPIOВывод QFN32АналогФункции IO MUXИспользованиеПри включении
GPIO0 (XTAL_32K_P)4ADC1_CH0, XTAL_32K_P—свободен—
GPIO1 (XTAL_32K_N)5ADC1_CH1, XTAL_32K_N—свободен—
GPIO26ADC1_CH2FSPIQс оговорками — strapping-вывод, режим загрузки не выбирает, но даташит советует подтяжку вверх—
GPIO38ADC1_CH3—свободен—
GPIO4 (MTMS)9ADC1_CH4MTMS, FSPIHDс оговорками — JTAG MTMS—
GPIO5 (MTDI)10ADC2_CH0MTDI, FSPIWPс оговорками — JTAG MTDI—
GPIO6 (MTCK)12—MTCK, FSPICLKс оговорками — JTAG MTCKнизкий уровень, 5 нс
GPIO7 (MTDO)13—MTDO, FSPIDс оговорками — JTAG MTDOнизкий уровень, 5 нс
GPIO814——с оговорками — strapping-вывод, для загрузки через USB или UART должен быть 1; управляет выводом сообщений загрузчика—
GPIO915——с оговорками — strapping-вывод, режим загрузки: 0 при сбросе — загрузка через USB или UART—
GPIO1016—FSPICS0свободеннизкий уровень, 5 нс
GPIO11 (VDD_SPI)18——с оговорками — вывод питания флеш-памяти VDD_SPI; GPIO — только при внешнем питании флеш-памяти—
GPIO12 (SPIHD)19—SPIHDзанят — шина флеш-памяти (SPIHD); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO13 (SPIWP)20—SPIWPзанят — шина флеш-памяти (SPIWP); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO14 (SPICS0)21—SPICS0занят — шина флеш-памяти (SPICS0); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO15 (SPICLK)22—SPICLKзанят — шина флеш-памяти (SPICLK); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO16 (SPID)23—SPIDзанят — шина флеш-памяти (SPID); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO17 (SPIQ)24—SPIQзанят — шина флеш-памяти (SPIQ); у ESP32-C3FH4AZ и FH4X не подключён—
GPIO1825USB_D-—с оговорками — USB D−, по умолчанию у USB Serial/JTAGвысокий уровень, 50 мкс
GPIO1926USB_D+—с оговорками — USB D+, по умолчанию у USB Serial/JTAG—
GPIO20 (U0RXD)27—U0RXDс оговорками — UART0 RX: прошивка через UARTнизкий уровень, 5 нс
GPIO21 (U0TXD)28—U0TXDс оговорками — UART0 TX: сообщения загрузчика и прошивка—

Флеш-память

Программа ESP32-C3 хранится во флеш-памяти на шине SPI0/1: GPIO12–17 — выводы SPIHD, SPIWP, SPICS0, SPICLK, SPID и SPIQ. Варианты с флеш-памятью в корпусе — FH4, FH4AZ и FH4X на 4 МБ, FH8X на 8 МБ и снятый с производства FN4 — уже подключены к ней изнутри, и даташит запрещает занимать эти выводы чем-то ещё; у FH4AZ и FH4X они даже не выведены наружу. Чип без флеш-памяти в корпусе подключают к внешней памяти через те же выводы.

Память питается от вывода VDD_SPI, на который подаётся напряжение шины VDD3P3_CPU через внутреннее сопротивление около 7,5 Ом. Если внешняя флеш-память питается отдельно, VDD_SPI можно перенастроить в GPIO11.

Strapping-выводы

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

ВыводПо умолчаниюЗапуск программыЗагрузка прошивки
GPIO2без подтяжкилюбой1 — даташит советует подтяжку вверх
GPIO8без подтяжкилюбой1
GPIO9подтяжка вверх, 110

GPIO2 режим загрузки не выбирает, но из-за всплесков его рекомендуют подтягивать вверх. GPIO8 ещё и управляет выводом сообщений загрузчика в UART0. Подробнее — на странице «Strapping-выводы ESP32».

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

GPIO0–5 питаются от шины VDD3P3_RTC, GPIO6–11 и GPIO18–21 — от VDD3P3_CPU, а выводы флеш-памяти GPIO12–17 — от VDD_SPI или VDD3P3_CPU, по настройке регистра. Рекомендованное напряжение всех шин — 3,0–3,6 В. Высокий уровень на входе — от 0,75 VDD, низкий — до 0,25 VDD, выше VDD + 0,3 В подавать нельзя. Внутренние подтяжки — около 45 кОм.

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

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

При подаче питания на GPIO6, GPIO7, GPIO10 и GPIO20 на 5 нс появляется низкий уровень, а на GPIO18 — высокий на 50 мкс. Импульс 5 нс почти ничего не включит, а 50 мкс на GPIO18 могут кратко открыть транзисторный ключ, поэтому управлять нагрузкой лучше с другого вывода.

АЦП

Входы АЦП — на GPIO0–5: ADC1_CH0–4 на GPIO0–4 и ADC2_CH0 на GPIO5. По даташиту после калибровки погрешность — ±10 мВ в диапазонах 0–750, 0–1050 и 0–1300 мВ и ±35 мВ в диапазоне 0–2500 мВ при наибольшем ослаблении; нелинейность в таблице характеристик измерена при выключенном Wi-Fi. Принципы выбора ослабления и делителя — в статье «АЦП ESP32».

Какие выводы доступны на модулях — на страницах ESP32-C3-MINI-1 и ESP32-C3-WROOM-02, как они разведены на готовой плате — на странице ESP32-C3-DevKitM-1, а у чипа ESP32-S3 с вдвое большим числом выводов — на странице «ESP32-S3: выводы чипа и GPIO».

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

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

По даташиту Espressif — только четыре: GPIO0, GPIO1, GPIO3 и GPIO10, причём GPIO0 и GPIO1 заняты, если к чипу подключён кварц 32 кГц. Ещё 12 выводов применимы с оговорками: strapping-выводы GPIO2, 8, 9, JTAG на GPIO4–7, USB на GPIO18 и 19, UART0 на GPIO20 и 21 и вывод питания флеш-памяти GPIO11. Выводы JTAG можно освободить: отлаживать ESP32-C3 можно и через USB.

Можно ли использовать GPIO12–GPIO17 ESP32-C3?

Нет: это шина SPI, по которой чип читает программу из флеш-памяти, и даташит запрещает использовать выводы, подключённые к памяти в корпусе. У вариантов ESP32-C3FH4AZ и FH4X эти выводы вообще не подключены, поэтому у них 16 GPIO вместо 22.

Какой вывод ESP32-C3 переводит его в режим прошивки?

GPIO9: если при сбросе на нём 0, чип входит в режим загрузки прошивки через USB или UART, а внутренняя подтяжка держит на нём 1 — запуск программы из флеш-памяти. GPIO8 при этом должен быть в 1, а GPIO2 даташит советует подтянуть вверх. На плате ESP32-C3-DevKitM-1, например, кнопка Boot замыкает GPIO9 на землю.

Можно ли подавать на выводы ESP32-C3 5 В?

Нет. Напряжение на входе не должно превышать напряжение питания домена плюс 0,3 В, то есть около 3,6 В при питании 3,3 В. Сигналы 5 В подают через делитель, преобразователь уровней или транзисторный ключ.

Источники

  1. Espressif. ESP32-C3 Series Datasheet, v2.4 — титул — одно ядро RISC-V, QFN32 5×5 мм; табл. 1-1 — варианты ESP32-C3, C3FN4 (снят с производства), C3FH4, C3FH4AZ, C3FH4X, C3FH8X, флеш-память 4 или 8 МБ в корпусе, 22 или 16 GPIO; табл. 2-1 — номера выводов, домены питания, сила выхода по умолчанию: GPIO2–5 — 10 мА, GPIO18 и 19 — 40 мА, остальные — 20 мА; выводы 19–24 у FH4AZ и FH4X не подключены; VDD_SPI — GPIO только при внешнем питании флеш-памяти; табл. 2-2 — всплески при включении; разд. 2.3.3–2.3.4 и табл. 2-7 — приоритеты выводов P1–P4 (эталон тестов); табл. 2-4, 2-6 — функции IO MUX и аналоговые; табл. 2-12 — выводы флеш-памяти; разд. 3, табл. 3-1, 3-2, 3-3 — strapping-выводы GPIO2, 8, 9, удержание уровней 3 мс; табл. 5-1–5-4 — питание 3,0–3,6 В, суммарный выходной ток до 1000 мА, VIH 0,75 VDD, VIL 0,25 VDD, подтяжки 45 кОм, IOH 40 мА и IOL 28 мА при PAD_DRIVER = 3; табл. 5-3 — VDD_SPI от VDD3P3_CPU через 7,5 Ом; табл. 5-6 — погрешность АЦП после калибровки
  2. Espressif. ESP-IDF v5.4.1: soc/esp32c3/include/soc/adc_channel.h (Apache-2.0) — каналы ADC1_CH0–4 на GPIO0–4 и ADC2_CH0 на GPIO5 — сверка с таблицей 2-6 даташита

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