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

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

ESP32-C6 выпускается в двух корпусах: QFN40 с 30 GPIO для внешней флеш-памяти и QFN32 с 22 GPIO и флеш-памятью внутри. Здесь — таблица всех выводов для обоих корпусов с функциями IO MUX, АЦП и малопотребляющего домена LP и разбор того, какие из них свободны, по даташиту Espressif.

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

ESP32-C6 — чип Espressif на ядре RISC-V с Wi-Fi 6 в диапазоне 2,4 ГГц, Bluetooth LE и радио IEEE 802.15.4 для Zigbee и Thread; рядом с основным ядром работает малопотребляющее ядро LP. Чип выпускается в двух корпусах размером 5×5 мм: QFN40 — ESP32-C6 без флеш-памяти, 30 GPIO, и QFN32 — ESP32-C6FH4 и FH8 с флеш-памятью 4 или 8 МБ внутри, 22 GPIO. Сравнение с другими чипами — на странице «ESP32 и другие чипы Espressif».

У каждого вывода до трёх прямых функций IO MUX — JTAG, UART0, шины SPI, интерфейс ведомого SDIO, — а почти любой сигнал периферии можно вывести на любой GPIO через матрицу GPIO. GPIO0–7 подключены ещё и к LP IO MUX: в глубоком сне ими управляют ядро LP и периферия LP — UART и I²C.

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

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

ГруппаВыводыЧисло
СвободныеGPIO0, GPIO1, GPIO2, GPIO3, GPIO10, GPIO11, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO2312
С оговоркамиGPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO12, GPIO13, GPIO15, GPIO16, GPIO17, GPIO2712
Заняты внешней флеш-памятьюGPIO24, GPIO25, GPIO26, GPIO28, GPIO29, GPIO306

Для корпуса QFN32 (ESP32-C6FH4 и FH8):

ГруппаВыводыЧисло
СвободныеGPIO0, GPIO1, GPIO2, GPIO3, GPIO14, GPIO18, GPIO19, GPIO20, GPIO21, GPIO22, GPIO2311
С оговоркамиGPIO4, GPIO5, GPIO6, GPIO7, GPIO8, GPIO9, GPIO12, GPIO13, GPIO15, GPIO16, GPIO1711

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

  • GPIO4, 5, 8, 9, 15 — strapping-выводы: режим загрузки, фронты SDIO, источник JTAG.
  • GPIO4–7 — JTAG (MTMS, MTDI, MTCK, MTDO); отлаживать можно и через USB Serial/JTAG, тогда эти выводы свободны.
  • GPIO12 и GPIO13 — USB D− и D+, по умолчанию у контроллера USB Serial/JTAG.
  • GPIO16 и GPIO17 — UART0: сообщения загрузчика и прошивка через UART.
  • GPIO27 (только QFN40) — вывод VDD_SPI, питание внешней флеш-памяти; как GPIO — только при отдельном питании памяти.

Выводы GPIO18–23, на которые выведен интерфейс ведомого SDIO, даташит относит к свободным.

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

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

GPIOQFN40QFN32Аналог и LPФункции IO MUXИспользование
GPIO0 (XTAL_32K_P)66ADC1_CH0, XTAL_32K_P, LP_GPIO0, LP_UART_DTRN—свободен
GPIO1 (XTAL_32K_N)77ADC1_CH1, XTAL_32K_N, LP_GPIO1, LP_UART_DSRN—свободен
GPIO288ADC1_CH2, LP_GPIO2, LP_UART_RTSNFSPIQсвободен
GPIO399ADC1_CH3, LP_GPIO3, LP_UART_CTSN—свободен
GPIO4 (MTMS)1010ADC1_CH4, LP_GPIO4, LP_UART_RXDMTMS, FSPIHDс оговорками — strapping-вывод, фронты тактов ведомого SDIO вместе с MTDI; JTAG MTMS
GPIO5 (MTDI)1111ADC1_CH5, LP_GPIO5, LP_UART_TXDMTDI, FSPIWPс оговорками — strapping-вывод, фронты тактов ведомого SDIO вместе с MTMS; JTAG MTDI
GPIO6 (MTCK)1212ADC1_CH6, LP_GPIO6, LP_I2C_SDAMTCK, FSPICLKс оговорками — JTAG MTCK
GPIO7 (MTDO)1313LP_GPIO7, LP_I2C_SCLMTDO, FSPIDс оговорками — JTAG MTDO
GPIO81414——с оговорками — strapping-вывод, для загрузки через USB, UART или SDIO должен быть 1; управляет сообщениями загрузчика в UART0
GPIO91515——с оговорками — strapping-вывод, режим загрузки: 0 при сбросе — загрузка прошивки
GPIO1016———свободен
GPIO1117———свободен
GPIO121816USB_D-—с оговорками — USB D−, по умолчанию у USB Serial/JTAG
GPIO131917USB_D+—с оговорками — USB D+, по умолчанию у USB Serial/JTAG
GPIO14—18——свободен
GPIO152719——с оговорками — strapping-вывод, источник сигналов JTAG, если это разрешено битами eFuse; подтяжки нет
GPIO16 (U0TXD)2921—U0TXD, FSPICS0с оговорками — UART0 TX: сообщения загрузчика и прошивка
GPIO17 (U0RXD)3022—U0RXD, FSPICS1с оговорками — UART0 RX: прошивка через UART
GPIO18 (SDIO_CMD)3123—SDIO_CMD, FSPICS2свободен
GPIO19 (SDIO_CLK)3224—SDIO_CLK, FSPICS3свободен
GPIO20 (SDIO_DATA0)3325—SDIO_DATA0, FSPICS4свободен
GPIO21 (SDIO_DATA1)3426—SDIO_DATA1, FSPICS5свободен
GPIO22 (SDIO_DATA2)3527—SDIO_DATA2свободен
GPIO23 (SDIO_DATA3)3628—SDIO_DATA3свободен
GPIO24 (SPICS0)20——SPICS0занят — шина внешней флеш-памяти (SPICS0)
GPIO25 (SPIQ)21——SPIQзанят — шина внешней флеш-памяти (SPIQ)
GPIO26 (SPIWP)22——SPIWPзанят — шина внешней флеш-памяти (SPIWP)
GPIO27 (VDD_SPI)23—VDD_SPI—с оговорками — вывод питания флеш-памяти VDD_SPI; GPIO — только при внешнем питании флеш-памяти
GPIO28 (SPIHD)24——SPIHDзанят — шина внешней флеш-памяти (SPIHD)
GPIO29 (SPICLK)25——SPICLKзанят — шина внешней флеш-памяти (SPICLK)
GPIO30 (SPID)26——SPIDзанят — шина внешней флеш-памяти (SPID)

Флеш-память

У ESP32-C6 в корпусе QFN40 флеш-память внешняя: она подключается к выводам SPICS0, SPIQ, SPIWP, SPIHD, SPICLK и SPID — это GPIO24–26 и GPIO28–30, — и даташит запрещает использовать их для чего-то ещё. Питание памяти — вывод VDD_SPI, GPIO27: на него подаётся напряжение шины VDDPST2 через внутреннее сопротивление около 3 Ом. У вариантов в корпусе QFN32 флеш-память внутри, и её выводы наружу не выведены.

Strapping-выводы

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

ВыводПо умолчаниюЧто задаёт
GPIO9подтяжка вверх, 11 — запуск программы, 0 — загрузка прошивки через USB, UART или SDIO
GPIO8без подтяжкидля загрузки прошивки должен быть 1; вместе с eFuse управляет сообщениями загрузчика в UART0
GPIO4 (MTMS), GPIO5 (MTDI)без подтяжкифронты выборки и выдачи сигналов ведомого SDIO
GPIO15без подтяжкиисточник сигналов JTAG, если это разрешено битами eFuse

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

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

GPIO0–7 питаются от шины VDDPST1 — это выводы домена LP, — остальные от VDDPST2, а выводы внешней флеш-памяти — от VDD_SPI. Рекомендованное напряжение всех шин — 3,0–3,6 В. Высокий уровень на входе — от 0,75 VDD, низкий — до 0,25 VDD, выше VDD + 0,3 В подавать нельзя: 5 В выводы не допускают. Внутренние подтяжки — около 45 кОм.

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

АЦП

У ESP32-C6 один АЦП на семь каналов: ADC1_CH0–6 на GPIO0–6. По даташиту после калибровки погрешность составляет ±12 мВ в диапазонах 0–1000 и 0–1300 мВ, ±23 мВ в диапазоне 0–1900 мВ и ±40 мВ в диапазоне 0–3300 мВ при наибольшем ослаблении; измерения сделаны при выключенном Wi-Fi. Эти цифры относятся к чипам с кодом даты не раньше 212023 на экране или 2321 на этикетке; для более ранних даташит предлагает запросить данные у Espressif. Как выбирать ослабление и делитель — в статье «АЦП ESP32».

Какие выводы доступны на модуле — на странице «ESP32-C6-WROOM-1: выводы модуля». Выводы других чипов — на страницах ESP32, ESP32-S3, ESP32-C3 и ESP32-H2.

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

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

У чипа в корпусе QFN40 свободны 12 выводов: GPIO0–3, 10, 11 и 18–23; у вариантов ESP32-C6FH4 и FH8 в корпусе QFN32 — 11: GPIO0–3, 14 и 18–23. GPIO0 и GPIO1 заняты, если подключён кварц 32 кГц. Остальные — strapping-выводы, JTAG, USB, UART0, а у QFN40 ещё и выводы внешней флеш-памяти.

Чем отличаются ESP32-C6 и ESP32-C6FH4?

ESP32-C6 — в корпусе QFN40 без флеш-памяти: её подключают снаружи к GPIO24–26 и GPIO28–30, а GPIO27 служит её питанием. ESP32-C6FH4 и FH8 — в корпусе QFN32 с флеш-памятью 4 или 8 МБ внутри: выводы памяти наружу не выведены, зато есть GPIO14, которого нет у QFN40. Итого 22 GPIO.

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

GPIO9: если при сбросе на нём 0, чип входит в режим загрузки прошивки через USB, UART или SDIO; внутренняя подтяжка держит на нём 1 — запуск программы. GPIO8 для загрузки прошивки должен быть в 1, а уровни надо удерживать не меньше 3 мс после включения CHIP_PU.

Какие выводы ESP32-C6 работают в глубоком сне?

GPIO0–7: они питаются от шины VDDPST1 и подключены к LP IO MUX, через который ими управляют малопотребляющее ядро LP и периферия LP — UART и I²C. Обычный IO MUX в глубоком сне не работает.

Источники

  1. Espressif. ESP32-C6 Series Datasheet, v1.5 — титул — основное ядро RISC-V и малопотребляющее LP-ядро, Wi-Fi 6, Bluetooth 5 (LE), Zigbee и Thread, 30 или 22 GPIO, QFN40 или QFN32 5×5 мм; табл. 1-1 — ESP32-C6 (QFN40, без флеш-памяти), C6FH4 и C6FH8 (QFN32, флеш-память 4 и 8 МБ); табл. 2-1, 2-2 — выводы корпусов, домены VDDPST1, VDDPST2, VDD_SPI, сила выхода 20 мА, у GPIO12 и 13 — 40 мА; табл. 2-4, 2-5 — функции IO MUX F0–F2; табл. 2-7 — LP IO MUX на GPIO0–7; табл. 2-9 — АЦП, кварц 32 кГц, USB, VDD_SPI; разд. 2.3.4–2.3.5, табл. 2-10, 2-11 — приоритеты выводов P1–P4 (эталон тестов; в табл. 2-11 в строке вывода 9 опечатка GPIO1); табл. 2-16 — выводы внешней флеш-памяти, у QFN32 выводы памяти наружу не выведены; разд. 3, табл. 3-1, 3-3, 3-4, 3-7 — strapping-выводы MTMS, MTDI, GPIO8, 9, 15, удержание уровней 3 мс; табл. 5-1–5-4 — питание 3,0–3,6 В, суммарный выходной ток до 1000 мА, VDD_SPI от VDDPST2 через 3 Ом, VIH 0,75 VDD, VIL 0,25 VDD, подтяжки 45 кОм, IOH 40 мА и IOL 28 мА при PAD_DRIVER = 3; табл. 5-6 — погрешность АЦП после калибровки
  2. Espressif. ESP-IDF v5.4.1: soc/esp32c6/include/soc/adc_channel.h и rtc_io_channel.h (Apache-2.0) — каналы ADC1_CH0–6 на GPIO0–6 и выводы LP_GPIO0–7 на GPIO0–7 — сверка с таблицами 2-7 и 2-9 даташита

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