ESP32: справочник по выводам |
![]() |
Добавил(а) microsin | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Микросхемы микроконтроллера ESP32 имеют 48 ножек, но не все они доступны на популярных отладочных платах. В этой статье (перевод [1]) приведено описание назначения основных выводов ESP32 и портов GPIO. На рисунке ниже показана цоколевка модуля ESP-WROOM-32. Эту цоколевку можно использовать в качестве образца для разработки своей собственной платы на основе чипа ESP32. Нагрузочная способность GPIO. В даташите на ESP32 указан предельно допустимый ток 40 мА, который может обеспечить ножка выхода порта GPIO. [Периферийные устройства ESP32] На чипе ESP32 реализованы следующие аппаратные периферийные устройства: • 18 каналов АЦП (ADC) Блоки ADC (аналого-цифровой преобразователь) и DAC (цифро-аналоговый преобразователь) статически привязаны к определенным выводам. Сигналы интерфейсов UART, I2C, SPI, PWM можно привязывать к разным выводам, это делается с помощью внутренней матрицы мультиплексирования кристалла ESP32. Хотя можно назначать свойства выводов программно, у выводов есть настройки по умолчанию, что показано на следующей картинке (для примера показана плата ESP32 DEVKIT V1-DOIT с 36 выводами, цоколевка выводов может меняться в зависимости от производителя платы). Дополнительно на выводах присутствуют специальные функции, которые могут подойти для определенного проекта, или могут не понадобиться. В следующей таблице показано, какие выводы лучше использовать как входы, какие как выходы, и с какими выводами корпуса следует быть осторожным. Помеченные зеленым цветом выводы можно использовать свободно. Те, которые подсвечены желтым, тоже можно использовать, но на них нужно обратить особое внимание из-за их неожиданное поведение при загрузке (boot). Выводы, помеченные красным, не рекомендуется использовать как входы или выходы.
[Ножки, работающие только как входы] GPIO34 .. GPIO39 это GPI (General Purpose Input) – они работают только на ввод, как выходы их использовать нельзя. На них нет внутренних резисторов подтяжки (pull-up или pull-down). GPIO34 GPI [Выводы для подключения SPI Flash] GPIO6 .. GPIO11 выведены на некоторых платах разработчика ESP32. Однако они соединяются с микросхемой SPI flash на модуле ESP-WROOM-32 и многих других подобных модулях, поэтому выводы GPIO6 .. GPIO11 не рекомендуется использовать для других целей. GPIO6 SCK/CLK [Capacitive Touch GPIO] У ESP32 есть 10 внутренних входов емкостных сенсоров. Они чувствительны к изменениям емкости на входе, т. е. ко всему, что может удерживать электрический заряд, наподобие человеческой кожи. Таким образом, эти выводы могут обнаруживать такие события, как касания пальцами емкостных датчиков. Эти выводы могут быть легко интегрированы в интерфейс пользователя для создания сенсорных кнопок, заменяющих механические. Также выводы Capacitive Touch могут использоваться для вывода ESP32 из состояния глубокого сна (deep sleep, режим пониженного энергопотребления). GPIO4 T0 Как использовать эти выводы в среде Arduino IDE, см. [3]. [ADC] У ESP32 есть 18 каналов ADC с разрешающей способностью 12 бит (для сравнения: у ESP8266 есть только 1 канал ADC с разрешающей способностью 10 бит). GPIO36 ADC1_CH0 Как использовать эти выводы, см. [4, 5]. Примечание: выводы ADC2 нельзя использовать, когда работает Wi-Fi. Таким образом, если Вы используете Wi-Fi, и испытываете проблемы с чтением аналоговых значений каналов ADC2, то для оцифровки аналоговых величин, то используйте вместо них каналы ADC1. Входные каналы ADC могут оцифровывать сигналы с 12-битной разрешающей способностью. Это значит, что результаты измерений могут быть в диапазоне 0 .. 4095, где 0 соответствует уровню напряжения 0V, и 4095 уровню 3.3V. Также в коде программы можно программно установить разрешающую способность используемых каналов и рабочий диапазон ADC. Некоторые уровни, близкие к уровням шин питания, нельзя оцифровать строго линейно. Скорее всего Вы не сможете надежно различить уровни 0 и 0.1V, или 3.2 и 3.3V. Характеристика оцифровки будет примерно такой, как показана на рисунке ниже. [DAC] Имеется 2 канала DAC с разрешающей способностью 8 бит. Они позволяют преобразовать цифровые значения в аналоговые сигналы. GPIO25 DAC1 [RTC GPIO] Выводы RTC поддерживают специальное функционирования в режимах пониженного энергопотребления [6], они могут сохранять запрограммированные уровни в режиме deep sleep. Также эти ножки могут выводить ESP32 из режима deep sleep, когда работает сопроцессор сверхнизкого энергопотребления ULP [7]. GPIO36 RTC_GPIO0 Как использовать RTC GPIO для пробуждения ESP32 см. [8]. [PWM] Контроллер LED PWM [9] имеет 16 независимых каналов, которые можно сконфигурировать для генерации сигналов ШИМ. Все ножки GPIO могут использоваться для функций PWM, кроме GPIO34 .. GPIO39. Более подробно о том, как использовать ESP32 PWM в среде Arduino IDE, см. [10]. [I2C] У ESP32 есть 2 канала I2C, и любые ножки GPIO можно использовать как сигналы интерфейса SDA или SCL. В Arduino IDE по умолчанию настроены следующие выводы I2C: GPIO21 SDA Можно при желании настроить другие выводы при инициализации библиотеки Wire с помощью вызова конструктора с параметрами: Wire.begin(SDA, SCL); Более подробно про использование протокола обмена I2C в Arduino IDE см. [11]. [SPI] По умолчанию сигналы SPI настроены на следующие выводы: GPIO23 VSPI MOSI GPIO13 HSPI MOSI [Прерывания] Все ножки GPIO могут быть сконфигурированы для генерации прерывания по изменению уровня. Более подробно про использованию прерываний см. [12, 13]. [Управление загрузкой] У ESP32 имеются следующие выводы для управления загрузкой (strapping pins): GPIO0 Эти ножки используются для перевода ESP32 в режим загрузчика (bootloader) или режим прошивки. На большинстве отладочных плат со встроенным интерфейсом USB (используется как мост для UART) не нужно беспокоиться о состоянии этих выводов. Схема на плате переводит эти выводы в правильные уровни, чтобы активировать режим прошивки или загрузки. Более подробно про выбор ESP32 Boot Mode см. официальную документацию на чип ESP32. Следует иметь в виду, что если Вы подключили к этим выводам внешние устройства, то можете столкнуться с проблемами при прошивке нового кода ESP32 или со сбросом платы. Причина может быть в том, что эти периферийные устройства в момент сброса устанавливают недопустимые уровни на выводах управления загрузкой, не давая ESP32 войти в необходимый режим. После завершения сброса, прошивки или загрузки эти выводы могут работать как обычные выводы GPIO или запрограммированные выводы внутренних периферийных устройств. [Лог. 1 на выводах во время загрузки] Некоторые ножки GPIO меняют уровень на лог. 1, или выводят сигналы PWM во время загрузки (boot) или сброса. Это значит, что если на эти ножки что-то подключено снаружи, то это может привести при сбросе или загрузке к непредсказуемому поведению устройства ESP32. GPIO1 Примечание (*): эти выводы используется для соединения с памятью SPI flash, не рекомендуется применять для других целей. [Ножка EN] Enable (EN) это вывод, разрешающий работу регулятора 3.3V. На этом выводе имеется встроенная подтяжка к лог. 1 (pull-up), для запрета регулятора 3.3V соедините EN с GND (лог. 0). Это значит, что вывод EN можно подключить к кнопке, чтобы сбрасывать ESP32. [Ссылки] 1. ESP32 Pinout Reference: Which GPIO pins should you use? site:randomnerdtutorials.com. |