ESP32-C3: справочник по выводам Печать
Добавил(а) microsin   

ESP32-C3 это одноядерный микроконтроллер SoC, основанный на открытой архитектуре RISC-V. В нем хорошо сбалансированы энергопотребление, возможности ввода/вывода, безопасность и производительность, что подходит для реализации недорогих беспроводных устройств. Доступность Wi-Fi и Bluetooth 5 (LE) позволяет не только просто конфигурировать устройства, но также увеличивает область применения благодаря возможностям беспроводных соединений по разным протоколам.

На популярных платах разработчика доступны не все выводы чипа, и некоторые из ножки кристалла использовать не получится. Возникает множество вопросов о том, какие выводы ESP32-C3 для чего нужны. Какие выводы GPIO нужно использовать? Какие выводы следует избегать в своих проектах? В этой статье (перевод блога [1]) представлено простое руководство, помогающее ответить на подобные вопросы.

[Голый чип ESP32-C3]

На следующем рисунке показана цоколевка корпуса чипа ESP32-C3 QFN 5×5. Используйте эту диаграмму, если применяете чипы ESP32-C3 напрямую, без готовых модулей.

ESP32 C3 QFN32 pinout

Периферия ESP32-C3. На борту чипа находятся следующие периферийные устройства:

• Максимум до 22 программируемых GPIO (обычно доступно меньше, в зависимости от условий применения).
• Все выводы портов GPIO могут генерировать прерывания.
• 3 интерфейса SPI.
• 2 интерфейса UART (один из них, UART0, используется для перепрошивки и вывода отладочных сообщений).
• 1 интерфейс I2C.
• 1 интерфейс I2S.
• Контроллер LED PWM, 6 каналов [2].
• 1 датчик температуры.
• Wi-Fi 802.11 bgn, 802.11mc (150 мегабит), Bluetooth 5 (+BLE).
• 2 преобразователя ADC (12 бит, 6 каналов).

Типовая нагрузочная способность одного выхода порта GPIO составляет 40 мА для лог. 1, 28 мА для лог. 0.

Функции ADC (Analogue to Digital Converter, АЦП) назначены на определенные ножки. Однако можно самому определить, на какие ножки будут выведены UART, I2C, SPI, PWM, и т. д., потому что это назначается в коде программы благодаря наличию функции мультиплексирования периферии и GPIO.

На следующей картинке показана цоколевка модуля Ai-Thinker ESP-C3-32S. Используйте эту диаграмму, если применяете в своих проектах готовый модуль Ai-Thinker ESP-C3-32S.

Ai Thinker ESP C3 12S pinout

На следующей картинке показана цоколевка модуля Ai-Thinker ESP-C3-12F. Используйте эту диаграмму, если применяете в своих проектах готовый модуль Ai-Thinker ESP-C3-12F.

Ai Thinker ESP C3 12F pinout

На следующей картинке показана цоколевка Ai-Thinker ESP-C3-12F Development board.

Ai Thinker ESP C3 12F devboard pinout

Примечание: в настоящий момент существует множество модулей, доступных как от компании Espressif (см. архив [4]), так и от сторонних разработчиков. У этих плат могут отличаться физические размеры, наличие антенны, количество выведенных портов GPIO, и т. п.

[Как лучше всего использовать ножки ESP32-C3]

В зависимости от конкретных условий некоторые выводы с определенными функциями могут подойти, а могут и не подойти для Вашего проекта. В следующей таблице показано, какие выводы лучше использовать как входы, какие как выходы, и какие выводы следует использовать с осторожностью.

Жирным шрифтом в таблице помечены функции по умолчанию. Ножки, помеченные зеленым цветом, можно использовать свободно. Ножки, помеченные желтым, также можно использовать, однако это следует делать с осторожностью, особенно при загрузке. Ножки, помеченные красным цветом, не рекомендуется использовать как входы или выходы.

Имя Тип Домен питания Функция
1 LNA_IN RF - Вход малошумящего усилителя и выход передатчика (антенна).
2 VDD3P3 PA - Аналоговое питание.
3 -
4 XTAL_32K_P I/O/T VDD3P3_RTC GPIO0, ADC1_CH0, XTAL_32K_P.
5 XTAL_32K_N GPIO1, ADC1_CH1, XTAL_32K_N.
6 GPIO2 GPIO2, ADC1_CH2, FSPIQ.
7 CHIP_EN I 1: питание кристалла разрешено, 0: кристалл выключен.
Внимание: не оставляйте CHIP_EN никуда не подключенным.
8 GPIO3 I/O/T GPIO3, ADC1_CH3.
9 MTMS GPIO4, ADC1_CH4, FSPIHD, MTMS.
10 MTDI GPIO5, ADC2_CH0, FSPIWP, MTDI.
11 VDD3P3_RTC PD - Вход питания для RTC.
12 MTCK I/O/T VDD3P3_CPU GPIO6, FSPICLK, MTCK.
13 MTDO GPIO7, FSPID, MTDO.
14 GPIO8 GPIO8.
15 GPIO9 GPIO9.
16 GPIO10 GPIO10, FSPICS0.
17 VDD3P3_CPU PD - Вход питания для CPU IO.
18 VDD_SPI I/O/T/PD VDD3P3_CPU GPIO11, выход питания для памяти SPI flash(6).
19 SPIHD(7) I/O/T GPIO12, SPIHD (FLASH_HOLD#).
20 SPIWP(7) GPIO13, SPIWP (FLASH_WP#).
21 SPICS0(7) GPIO14, SPICS0 (FLASH_CS#).
22 SPICLK(7) GPIO15, SPICLK (FLASH_SCK).
23 SPID(7) GPIO16, SPID (FLASH_SDI).
24 SPIQ(7) GPIO17, SPIQ (FLASH_SDO).
25 GPIO18 GPIO18, USB_D-.
26 GPIO19 GPIO19, USB_D+.
27 U0RXD GPIO20, U0RXD.
28 U0TXD GPIO21, U0TXD.
29 XTAL_N - - Подключение внешнего кварцевого резонатора (обычно 40 МГц).
30 XTAL_P - -
31 VDDA PA - Аналоговое питание.
32 -
33 GND G - Нижняя площадка меди, предназначенная для заземления и отвода тепла.

Примечания:

(1) PA: аналоговое питание, PD: питание для RTC IO, I: вход, O: выход, T: высокое сопротивление.
(2) Помеченные жирным шрифтом функции используются по умолчанию, в том числе во время режима загрузки (SPI boot).
(3) Порты для встроенной SPI flash у кристаллов ESP32-C3FN4 и ESP32-C3FH4 назначены следующим образом: CS# = SPICS0, IO0/DI = SPID, IO1/DO = SPIQ, CLK = SPICLK, IO2/WP# = SPIWP, IO3/HOLD# = SPIHD. Эти выводы не рекомендуется использовать для других целей.
(4) Для соединений порта данных между ESP32-C3 и внешней памятью flash см. секцию 3.4.2 "Serial Peripheral Interface (SPI)" документа [6].
(5) Информация по функции вывода в этой таблице относится только к некоторым фиксированным функциям, и не покрывает все возможные случаи назначения сигналов, которые можно реализовать с помощью матрицы GPIO. Для дополнительной информации по матрице GPIO, см. главу "IO MUX and GPIO Matrix (GPIO, IO_MUX)" документации [7].
(6) По умолчанию VDD_SPI работает как источник питания для встроенной или внешней памяти SPI flash. В качестве GPIO11 эту ножку можно использовать только когда чип подключен к внешней памяти SPI flash, и эта память получает питание от внешнего источника.
(7) Для кристалла ESP32-C3FH4AZ ножки корпуса 19 .. 24 нигде не используются и помечаются как "not connected" (не подключено).

SPI flash и VDD_SPI. На некоторых платах разработки (однако очень редко) могут быть выведены порты GPIO11 .. GPIO17. Однако эти выводы подключены к встроенной памяти SPI flash, где содержится код программы, и их не рекомендуется использовать для других целей.

По умолчанию ножка VDD_SPI используется для питания памяти VDD_SPI. В рабочем режиме это выход встроенного стабилизатора 3.3V, в режиме пониженного энергопотребления на VDD_SPI напряжение отсутствует, чем достигается дополнительное снижение потребляемого тока.

В некоторых случаях может использоваться внешняя память SPI flash, и если не требуется управление её питанием, то ножку VDD_SPI можно использовать как дополнительный порт GPIO11. Для этого необходимо перепрограммировать eFuse-бита VDD_SPI_AS_GPIO [3]. Имейте в виду, что после этого функцию VDD_SPI обратно вернуть будет невозможно!

ADC. ESP32-C3 содержит на кристалле два 12-битных SAR ADC (ADC1 и ADC2), до 6 каналов (для сравнения: у чипа ESP8266 только один 10-битный ADC). Ниже показан список каналов ADC и соответствующие им ножки портов GPIO.

ADC1_CH0 GPIO0
ADC1_CH1 GPIO1
ADC1_CH2 GPIO2
ADC1_CH3 GPIO3
ADC1_CH4 GPIO4
ADC2_CH0 GPIO5

• ADC1 поддерживает измерения на 5 каналах, и он был предварительно откалиброван на заводе.
• ADC2 поддерживает измерения на 1 каналах. Он не откалиброван.

PWM. Контроллер LED PWM [2] может одновременно формировать ШИМ-сигналы на 6 независимых каналах, причем каждый канал может быть выведен на любую из ножек порта GPIO. Период и скважность ШИМ можно конфигурировать программно, доступна точность скважности до 18 бит. Сигнал ШИМ может формироваться даже когда CPU находится в режиме пониженного энергопотребления Light-sleep. Контроллер ШИМ может аппаратно реализовать фейдинг (т. е. плавно увеличивать или уменьшать скважность периода ШИМ).

I2C. Интерфейс шины I2C может работать в режимах master или slave, в зависимости от программной конфигурации. Поддерживаются следующие функции I2C:

• Стандартный режим (скорость 100 килобит/сек) и быстрый режим (400 килобит/сек).
• Скорость может быть увеличена до 800 килобит/сек, в зависимости от подтягивающих резисторов SCL и SDA и емкостной нагрузки шины.
• Режимы адресации 7 бит и 10 бит, с поддержкой двойного режима адресации.
• 7-битный широковещательный адрес.

SPI. Чип ESP32-C3 имеет на кристалле 3 интерфейса SPI: SPI0, SPI1, SPI2. SPI0 и SPI1 могут работать только в режиме памяти SPI (SPI Memory mode), и используют одни и те же выводы корпуса. SPI2 может работать как в режиме памяти SPI, так и для подключения любых внешних устройств SPI (general-purpose SPI), с поддержкой до 6 сигналов выборки (CS).

SPI Memory mode. Интерфейсы SPI0 и SPI1 могут работать только в режиме подключения памяти SPI, и они работают как master. Данные передаются байтами. Поддерживается сигналы данных до 4 линий STR на операциях чтения и записи. Тактовая частота конфигурируется, в режиме STR она может быть до 120 МГц.

General-purpose SPI (GP-SPI). Когда SPI2 работает в качестве SPI общего назначения, он может быть сконфигурирован в режимах master и slave. SPI2 поддерживает двухпроводный полнодуплексный обмен, а также одно-/двух-/четырехпроводный полудуплексный обмен в обоих режимах master и slave. Тактовая частота хоста конфигурируется. Данные передаются байтами. Полярность тактов (CPOL) и их фаза (CPHA) также конфигурируется. SPI2 интерфейс можно подсоединить к GDMA.

– В режиме master тактовая частота обычно 80 МГц, и поддерживается 4 режима формата транзакции SPI.
– В режиме slave тактовая частота обычно 60 МГц, и также поддерживается 4 режима формата транзакции SPI.

Сответствие между сигналами шины SPI и ножками GPIO показаны в таблице ниже.

Full Dublex SPI
Half Duplex SPI
Сигнал чипа
Функция Сигналы FSPI
MOSI MOSI D FSPID
MISO (MISO) Q FSPIQ
CS CS CS FSPICS0 .. FSPICS5
CLK CLK CLK FSPICLK
- - WP FSPIWP
- - HD FSPIHD

В большинстве случаев соединение порта данных между ESP32-C3 и внешней SPI flash для 1-/2-/4-проводного режима организуется следующим образом:

Сигнал чипа SPI Single-Line Mode SPI Two-Line Mode SPI Four-Line Mode
SPID MOSI IO0 IO0
SPIQ (MISO) IO1 IO1
SPIWP WP# - IO2
SPIHD HOLD# - IO3

Датчик температуры. Встроенный сенсор температуры ESP32-C3 генерирует напряжение, которое зависит от температуры кристалла. Это напряжение внутренне преобразовывается с помощью ADC в цифровое значение. Диапазон измерения температуры составляет от –40°C до 125°C. Датчик температуры предназначен главным образом для анализа измерения температуры кристалла, которая может зависеть от многих факторов, таких как частота тактирования, рабочий режим, использования беспроводных соединений и нагрузки выходов. Обычно внутренняя температура кристалла выше, чем температура окружающей среды.

[Выводы управления загрузкой (Strapping Pins)]

Следующие ножки портов GPIO чипа ESP32-C3 могут управлять режимом загрузки программного обеспечения:

GPIO2
GPIO8
GPIO9

Эти выводы используются для активизации режима загрузчика (bootloader mode) ESP32-C3, иногда это называют режимом прошивки (flashing mode). На большинстве плат разработчика со встроенным преобразователем USB-UART не нужно беспокоиться о логическом состоянии этих выводов. Плата переведет эти выводы в нужное состояние, когда необходимо активизировать режим прошивки (flashing mode или boot mode).

Однако если к этим выводам Вы подключили периферийные устройства, то потенциально могут возникнуть проблемы при попытке загрузить новый код, когда нужно прошить SPI flash. Если такие проблемы возникли, то вероятно внешние периферийные устройства устанавливают на этих выводах уровни, которые не дают ESP32-C3 войти в нужный режим. После сброса, прошивки или загрузки эти выводы будут работать так, как ожидалось.

[Выводы, на которых лог. 1 во время загрузки]

Некоторые выводы GPIO при загрузке выводят уровень лог. 1 или выводят сигналы PWM. Это означает, что если Вы подсоединили к таким GPIO другие выходы, то после сброса или загрузки можно получить непредсказуемое поведение ESP32-C3.

GPIO0 .. GPIO8
GPIO10
GPIO11
GPIO18
GPIO19 (вход запрещен, разрешен pull-up резистор)

[Вывод разрешения (EN)]

Вывод EN (CHIP_EN) управляет работой встроенного регулятора 3.3V. Этот вывод подтянут к лог. 1, и для запрета регулятора 3.3V на него может быть подан лог. 0 (например, если внешняя цепь или кнопка подтянет уровень к GND). Таким образом, ножка EN может использоваться для перезапуска ESP32-C3.

1: ESP32-C3 включен, работа кристалла разрешена.
0: питание кристалла ESP32-C3 выключено.

Внимание: не оставляйте ножку EN висящей (никуда не подключенной).

[Ссылки]

1. ESP32-C3 Pinout site:studiopieters.nl.
2. ESP32-C3: контроллер ШИМ (LEDC).
3. ESP32-C3: управление выводом VDD_SPI как ножкой порта GPIO11.
4. 220909ESP32-C3-devkits-pinouts.zip - документация, принципиальные схемы плат разработчика, pdf-файлы с цоколевкой.
5. ESP32: справочник по выводам.
6. ESP32-C3 Series Datasheet site:espressif.com.
7. ESP32-C3 Technical Reference Manual site:espressif.com.
8ESP32: как реализовать автозагрузку прошивки.
9ESP32-C3: GPIO и RTC GPIO.