ESP32 использование выводов
При проектировании самодельных девайсов начинающие самодельщики допускают очень много ошибок считая, что в устройствах типа ESP32 архитекторы всё продумали и совершить ошибок нельзя. Если мы пользуемся цифровым выходом, то всегда можем на него подавать логическую 1 или 0 и это не приведет в каким-либо последствиям. Например, недавно встретился с человеком который «навешивал» температурные датчики и столкнулся с тем, что на одних пинах он работает правильно, а при подключении к другим — контроллер перестаёт включаться. Я уже писал об этой проблеме на ESP8266, но пришло время описать ситуацию с ESP32 и потом я буду просто давать ссылку на эту статью, вместо пространственных объяснений почему нельзя использовать тот или иной вывод как душе угодно. Чтобы не расписывать все модификации существующих плат, я возьму ядро самой распространённой на Алиэкспресе и в среде знакомых мне самодельщиков ESP32-WROOM-32E. Еще есть модели ESP32-WROOM-32D — это абсолютно такая-же но с выводом для вешней Flash-памяти и ESP32-WROOM-32U — это с коннектором для внешней антенны (на самой плате она не разведена из-за чего занимает меньше места, плюс позволяет подключить внешнюю антенну при использовании железного корпуса самодельного устройства).
GPIO0 (BootSelect) — это выбор устройства для загрузки. При подтяжке к земле устройство будет загружаться через UART0, а при подтяжке к питанию устройство будет загружаться со встроенной flash-памяти. Для принудительного перевода платы в режим программирования можно подключить к этому контакту землю и перезагрузить устройство. Так же на него подключается транзистор управляемый DTR выходом переходника USB-TTL.
GPIO1 (TX) и GPIO03 (RX) — это UART0 который используется в качестве порта для программирования в момент загрузки устройства. Вполне логично его использовать как порт для программирования и коммуникаций с UART устройствами. На различных отладочных платах он используется совместно с USB-TTL переходником. Через него выводится отладочная информация при загрузке.
GPIO2 — этот вход так же управляет загрузкой/прошивкой контроллера. Он должен быть притянут к земле в момент загрузки, у него уже имеется подтяжка к земле. По этому до полной загрузки контроллера этот контакт нельзя притягивать к питанию. Так же его часто подключают к внешнему синему светодиоду, которым в дальнейшем можно управлять.
GPIO5 — управление Flash-памятью установленной внутри контроллера. При загрузке он будет притянут к питанию.
От GPIO6 до GPIO11 — это пины для подключения внешней flash-памяти, для того, чтобы их не трогали на ESP32-WROOM-32E их даже отключили, они все в состоянии NC. Но при проектировании своего собственного устройства нужно понимать, что это неиспользуемые контакты.
GPIO12 — управление питанием встроенной flash-памяти, состояние зависит от модели, почти на всех используемых мной платах используется подтяжка к земле. При загрузке нельзя манипулировать этим выводом.
GPIO15 — управление отладочной информацией, при подтягивании к питанию — вывод есть, при подтягивании к земле — вывода нет. При включении подтянуто к питанию.
Остальные выводы можно использовать согласно их назначению.
Основные выводы ESP32-WROOM-32D перечислены на картинке. Список немного «обрезанный», но можно понять для чего служат основные выводы.
Если использовать Arduino Studio для программирования этого контроллера, то можно сразу выделить порты по назначению:
UART0: GPIO1 (TX) и GPIO03 (RX)
UART2: GPIO17 (TX) и GPIO16 (RX)
SPI: GPIO23 (MOSI), GPIO19 (MISO), GPIO18 (CLK), GPIO5 (CS)
I2C: GPIO22 (SCL) и GPIO21 (SDA)
Цифроаналоговый преобразователь: GPIO25 (DAC1) и GPIO26 (DAC2)
Аналоговый вход не мешающий WiFi: GPI34, GPI35, GPI36 и GPI39
RTC: часовой кварц GPIO32 и GPIO33 (так же можно использовать как аналоговый вход или цифровой вход/выход)
Получается, что для произвольного использования: GPIO13, GPIO16, GPIO17, GPIO25, GPIO26, GPIO27, GPIO32 и GPIO33.
Очень даже нормально иметь 8 абсолютно произвольных пина ввода/вывода. При условии, что остается UART, SPI и I2C в запасе.
Тэги: микроконтроллеры, ESP32 и ESP8266
Отредактировано:2023-03-14 13:57:10