ESP32 использование выводов
При проектировании самодельных девайсов начинающие самодельщики допускают очень много ошибок считая, что в устройствах типа ESP32 архитекторы всё продумали и совершить ошибок нельзя. Тот кто работал с микроконтроллерами от Атмел будут немного разочарованы ESP. В начале пути разработчики считают, что используя цифровой выход, всегда можем подать на него логическую 1 или 0 и это не приведет в каким-либо последствиям. Например, недавно встретился с человеком который «навешивал» температурные датчики и столкнулся с тем, что на одних пинах он работает правильно, а при подключении к другим — контроллер перестаёт включаться. Я уже писал об этой проблеме на ESP8266, но пришло время описать ситуацию с ESP32 и потом я буду просто давать ссылку на эту статью, вместо пространственных объяснений почему нельзя использовать тот или иной вывод как душе угодно. Чтобы не расписывать все модификации существующих плат, я возьму ядро самой распространённой на Алиэкспресе и в среде знакомых мне самодельщиков ESP32-WROOM-32E. Еще есть модели ESP32-WROOM-32D — это абсолютно такая-же но с выводом для вешней Flash-памяти и ESP32-WROOM-32U — это с коннектором для внешней антенны (на самой плате она не разведена из-за чего занимает меньше места, плюс позволяет подключить внешнюю антенну при использовании железного корпуса самодельного устройства). Часть выводов ESP32 используются для служебных целей и процесс загрузки ядра зависит от состояния этих выводов.
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-06-14 13:58:38
Приветствую!
Готов купить ваш сайт orcinus.ru, в том числе по цене выше рыночной.
Меня зовут Дмитрий Купрацевич. В теме сайтов более 5 лет. Занимался улучшением более 50 проектов. Ищу качественные проекты, как ваш, чтобы продолжить их развитие.
Связь через Телеграм kupratsevich, почту kuprdimasites@gmail.com, whatsapp (+79959176538).
Предложение не интересует.