Skip to content

Справочник по распиновке ESP32: Какие выводы GPIO следует использовать?

Pripekashkin edited this page Jun 13, 2024 · 13 revisions

Чип ESP32 поставляется с 48 контактами с разными функциями. Не все пины ESP32 доступны для использования. Есть много вопросов о том, как использовать ESP32 GPIO. Какие контакты необходимо использовать? Какие выводы лучше избегать в своих проектах? Этот пост призван стать простым и понятным справочным руководством для ESP32 GPIO.

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

К периферийным устройствам ESP32 относятся:

Краткая таблица

0 pulled up OK outputs PWM signal at boot
1 TX pin OK debug output at boot
2 OK OK connected to on-board LED
3 OK RX pin HIGH at boot
4 OK OK  
5 OK OK outputs PWM signal at boot
6 x x connected to the integrated SPI flash
7 x x connected to the integrated SPI flash
8 x x connected to the integrated SPI flash
9 x x connected to the integrated SPI flash
10 x x connected to the integrated SPI flash
11 x x connected to the integrated SPI flash
12 OK OK boot fail if pulled high
13 OK OK  
14 OK OK outputs PWM signal at boot
15 OK OK outputs PWM signal at boot
16 OK OK  
17 OK OK  
18 OK OK  
19 OK OK  
21 OK OK  
22 OK OK  
23 OK OK  
25 OK OK  
26 OK OK  
27 OK OK  
32 OK OK  
33 OK OK  
34 OK   input only
35 OK   input only
36 OK   input only
39 OK   input only

Описание

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

Пины, которые не могут работать как выходы

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

Пины, подключенные к внутренней SPI флешке

От GPIO 6 до GPIO 11 представлены в некоторых платах ESP32. Однако эти пины подключены к встроенной флэш-памяти 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 внутренних емкостных сенсорных датчиков. Они могут отслеживать всё, что содержит электрический заряд, например, они могут обнаруживать изменения, возникающие при касании пальцами GPIO. Эти контакты могут быть легко встроены в датчики касания и заменять механические кнопки. Емкостные сенсорные контакты также могут быть использованы для пробуждения ESP32 от глубокого сна. 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)

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

ESP32 имеет входные каналы АЦП 18 x 12 бит. Это 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_12 (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)

Important

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

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

Important

Выводы АЦП ESP32 работают не линейно. Об этом следует помнить при использовании выводов АЦП. Ниже представлен график получемых значений в зависимости от напряжения Graph

RTC GPIO

На ESP32 есть поддержка RTC GPIO. GPIO, маршрутизируемые в подсистему с низким энергопотреблением RTC, можно использовать, когда ESP32 находится в состоянии глубокого сна. Эти 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)

PWM

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

  • Частота сигнала;
  • Рабочий цикл;
  • ШИМ-канал;
  • GPIO, на которых вы хотите вывести сигнал.

I2C

При использовании ESP32 с Arduino IDE следует использовать выводы ESP32 I2C по умолчанию (поддерживаются библиотекой Wire):

  • GPIO 21 (SDA)
  • GPIO 22 (SCL)

SPI

Пины для SPI по умолчанию:

SPI MOSI MISO CLK CS
VSPI GPIO 23 GPIO 19 GPIO 18 GPIO 5
HSPI GPIO 13 GPIO 12 GPIO 14 GPIO 15

Прерывания

Все GPIO могут быть настроены для обработки прерываний.

Опасные пины

Задействованные пины

  • GPIO 0
  • GPIO 2
  • GPIO 4
  • GPIO 5
  • GPIO 12
  • GPIO 15

Они используются для перевода ESP32 в режим загрузчика или в режим перепрошивки. На большинстве плат разработки со встроенным USB / Serial вам не нужно беспокоиться о состоянии этих контактов. Плата переводит контакты в правильное состояние для перепрошивки или режима загрузки.

Однако, если к этим контактам подключены периферийные устройства, у вас могут возникнуть проблемы при попытке загрузить новый код, перепрошить ESP32 или перезагрузить плату.

Пины с изменением сигнала при загрузке

Некоторые GPIO изменяют свое состояние на Hight или выводят ШИМ-сигналы при загрузке или сбросе. Это означает, что если у вас есть выходы, подключенные к этим GPIO, вы можете получить неожиданные результаты при перезагрузке или загрузке ESP32.

  • GPIO 1
  • GPIO 3
  • GPIO 5
  • GPIO 6 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 7 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 8 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 9 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 10 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 11 (подключены к встроенной флэш-памяти SPI ESP32 - использовать не рекомендуется).
  • GPIO 14
  • GPIO 15
Clone this wiki locally