ESP32:Основы/Справочник выводов ESP32

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Перевод: Мякишев Е.А.
Проверка/Оформление/Редактирование: Мякишев Е.А.


Справочник выводов ESP32[1]

Микроконтроллер ESP32 имеет 48 выводов с несколькими функциями. Не все пины доступны на всех платах разработки ESP32, и некоторые из них нельзя использовать.

Возникает множество вопросов о том, как правильно использовать GPIO-пины на ESP32. Какие пины следует использовать в своем проекте, а какие лучше избегать? Целью данной статьи является создание простого и легкодоступного справочника по GPIO-пинам на ESP32.

На рисунке ниже представлена распиновка модуля ESP-WROOM-32. Этот рисунок может быть использован в качестве справочника при создании пользовательских плат на базе ESP32:

Рис. 1. Распиновка модуля ESP-WROOM-32
Рис. 1. Распиновка модуля ESP-WROOM-32
Примечание

Обратите внимание, что не все GPIO доступны на всех платах разработки, но каждый конкретный GPIO будет работать одинаково, независимо от платы разработки, которую вы используете.

Рис. 2. Плата ESP32
Рис. 2. Плата ESP32

Периферийные устройства ESP32

Периферийные устройства ESP32 включают в себя следующие компоненты:

  • 18 каналов АЦП (аналого-цифровой преобразователь);
  • 3 интерфейса SPI (последовательный периферийный интерфейс);
  • 3 интерфейса UART (универсальный асинхронный приемопередатчик);
  • 2 интерфейса I2C (интеркоммуникационная шина);
  • 16 каналов ШИМ (широтно-импульсная модуляция);
  • 2 ЦАП (цифро-аналоговый преобразователь);
  • 2 интерфейса I2S (звуковая передача данных);
  • 10 программируемых пинов общего назначения с возможностью емкостного сенсорного ввода.

Характеристики АЦП и ЦАП зафиксированы на определенных статических пинах. Однако, пользователь может назначить любой пин на функцию UART, I2C, SPI, PWM или другую - для этого достаточно задать нужную конфигурацию в коде. Возможность такого мультиплексирования функций реализуется за счет особенностей микросхемы ESP32.

Хотя конфигурацию свойств пинов можно задать программно, некоторые из пинов уже имеют определенную функцию по умолчанию. На приведенном ниже рисунке приведен пример расположения пинов на плате ESP32 DEVKIT V1 DOIT с 36 контактами (расположение пинов может меняться в зависимости от производителя).

Рис. 3. Расположения пинов на плате ESP32 DEVKIT V1 DOIT с 36 контактами.
Рис. 3. Расположения пинов на плате ESP32 DEVKIT V1 DOIT с 36 контактами.
Рис. 4. Расположения пинов на плате ESP32 DEVKIT V1 DOIT с 30 контактами.
Рис. 4. Расположения пинов на плате ESP32 DEVKIT V1 DOIT с 30 контактами.

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

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

GPIO Вход Выход Примечания
0 Подтянут к + Выходной сигнал ШИМ на старте, должен быть НИЗКИМ для входа в режим прошивки
1 TX Отладочный вывод при старте устройства
2 Подключен к встроенному светодиоду, должен быть оставлен в плавающем состоянии (не подключен) или установлен в низкое состояние для входа в режим прошивки
3 RX Установлено в высокое состояние при загрузке
4
5 Выходной ШИМ-сигнал при старте устройства, связывающий вывод; связывающий контакт (переопределяющий назначение других выводов при подаче на него сигнала)
6 Подключено к интегрированной SPI-флеш-памяти
7 Подключено к интегрированной SPI-флеш-памяти
8 Подключено к интегрированной SPI-флеш-памяти
9 Подключено к интегрированной SPI-флеш-памяти
10 Подключено к интегрированной SPI-флеш-памяти
11 Подключено к интегрированной SPI-флеш-памяти
12 Ошибка загрузки при подключении стрэппинг(связывающий вывод; связывающий контакт (переопределяющий назначение других выводов при подаче на него сигнала)) пина к высокому уровню напряжения
13
14 Генерирует сигнал ШИМ при запуске
15 Выходной ШИМ-сигнал при старте устройства, связывающий вывод; связывающий контакт (переопределяющий назначение других выводов при подаче на него сигнала)
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 Только ввод
35 Только ввод
36 Только ввод
39 Только ввод

Пины только для ввода

GPIO 34-39 - пины только для ввода. Они не имеют встроенных подтягивающих или стягивающих резисторов и поэтому не могут быть использованы как пины вывода. Рекомендуется использовать эти пины только в качестве входов.

  • GPIO 34
  • GPIO 35
  • GPIO 36
  • GPIO 39

Интегрированная SPI-флэш память находится на чипе ESP-WROOM-32

На некоторых платах разработки ESP32 доступны выводы GPIO 6-11. Однако эти выводы соединены с интегрированной SPI-флэш памятью на чипе ESP-WROOM-32 и не рекомендуются для использования в других целях. Поэтому не используйте эти выводы в своих проектах:

  • GPIO 6 (SCK/CLK)
  • GPIO 7 (SDO/SD0)
  • GPIO 8 (SDI/SD1)
  • GPIO 9 (SHD/SD2)
  • GPIO 10 (SWP/SD3)
  • GPIO 11 (CSC/CMD)

Емкостные GPIO

В ESP32 реализовано 10 внутренних емкостных сенсоров, позволяющих регистрировать изменения в электрически заряженных объектах, таких как человеческая кожа. Благодаря этому они могут обнаруживать изменения, возникающие при касании указанных выводов с помощью пальца. Они легко интегрируются в емкостные платы и могут использоваться для замены механических кнопок. Встроенные емкостные сенсоры также могут быть использованы для "разбуживания" ESP32 из глубокого сна.

Эти внутренние емкостные сенсоры подключены к следующим GPIO:

  • T0 (GPIO 4)
  • T1 (GPIO 0)
  • T2 (GPIO 2)
  • T3 (GPIO 15)
  • T4 (GPIO 13)
  • T5 (GPIO 12)
  • T6 (GPIO 14)
  • T7 (GPIO 27)
  • T8 (GPIO 33)
  • T9 (GPIO 32)

Аналого-цифровой преобразователь (ADC)

ESP32 обладает 18 входными каналами АЦП с разрешением 12 бит, в то время как у ESP8266 имеется только один входной канал АЦП с разрешением 10 бит. GPIO, которые могут использоваться в качестве входа для АЦП и соответствующие им каналы:

  • ADC1_CH0 (GPIO 36)
  • ADC1_CH1 (GPIO 37)
  • ADC1_CH2 (GPIO 38)
  • ADC1_CH3 (GPIO 39)
  • ADC1_CH4 (GPIO 32)
  • ADC1_CH5 (GPIO 33)
  • ADC1_CH6 (GPIO 34)
  • ADC1_CH7 (GPIO 35)
  • ADC2_CH0 (GPIO 4)
  • ADC2_CH1 (GPIO 0)
  • ADC2_CH2 (GPIO 2)
  • ADC2_CH3 (GPIO 15)
  • ADC2_CH4 (GPIO 13)
  • ADC2_CH5 (GPIO 12)
  • ADC2_CH6 (GPIO 14)
  • ADC2_CH7 (GPIO 27)
  • ADC2_CH8 (GPIO 25)
  • ADC2_CH9 (GPIO 26)
Примечание

Выводы ADC2 нельзя использовать при использовании Wi-Fi. Если вы используете Wi-Fi и испытываете проблемы с получением значений из GPIO, связанного с ADC2, рекомендуется использовать вместо этого GPIO, связанный с ADC1. Это поможет решить проблему.

Входные каналы АЦП имеют разрешение 12 бит. Это означает, что аналоговые значения могут находиться в диапазоне от 0 до 4095, где 0 соответствует 0 В, а 4095 - 3,3 В. Также можно установить разрешение каналов в коде и диапазон АЦП.

Выходы ADC ESP32 не имеют линейного поведения. Вероятно, вы не сможете различить между 0 и 0,1 В или между 3,2 и 3,3 В. Нужно иметь это в виду при использовании выходов ADC. Поведение будет похожим на то, которое показано на следующей картинке.

Цифро-аналоговый преобразователь (ЦАП)

На микроконтроллере ESP32 имеется два канала цифро-аналогового преобразователя (ЦАП), каждый из которых имеет разрешение 8 бит. ЦАП позволяет преобразовывать цифровой сигнал в аналоговый, который может быть использован для управления напряжением на выходе.

  • DAC1 (GPIO25)
  • DAC2 (GPIO26)

RTC GPIO

ESP32 поддерживает RTC GPIO, т.е. GPIO, связанные с RTC, могут использоваться в режиме глубокого сна, когда устройство работает на энергосберегающем режиме. Эти RTC GPIO могут быть использованы для пробуждения ESP32 из глубокого сна при работе сопроцессора Ultra Low Power (ULP). Следующие GPIO могут быть использованы в качестве внешнего источника пробуждения.

  • RTC_GPIO0 (GPIO36)
  • RTC_GPIO3 (GPIO39)
  • RTC_GPIO4 (GPIO34)
  • RTC_GPIO5 (GPIO35)
  • RTC_GPIO6 (GPIO25)
  • RTC_GPIO7 (GPIO26)
  • RTC_GPIO8 (GPIO33)
  • RTC_GPIO9 (GPIO32)
  • RTC_GPIO10 (GPIO4)
  • RTC_GPIO11 (GPIO0)
  • RTC_GPIO12 (GPIO2)
  • RTC_GPIO13 (GPIO15)
  • RTC_GPIO14 (GPIO13)
  • RTC_GPIO15 (GPIO12)
  • RTC_GPIO16 (GPIO14)
  • RTC_GPIO17 (GPIO27)

ШИМ

Контроллер ШИМ (Широтно-Импульсная Модуляция) на ESP32 имеет 16 независимых каналов, которые могут быть настроены для генерации ШИМ-сигналов с различными параметрами. Все выводы микроконтроллера, которые могут использоваться в качестве выходов, могут быть использованы как ШИМ-выводы (GPIO 34-39 не могут генерировать ШИМ).

Для установки ШИМ-сигнала необходимо определить следующие параметры в коде:

  • Частота сигнала;
  • Соотношение заполнения (отношение длительности импульса к периоду);
  • Канал ШИМ;
  • GPIO-пин, на который требуется выводить сигнал.

См.также

Внешние ссылки