ESP32, инициализация портов UART Serial0, Serial1, Serial2

Перенос портов UART Serial0, Serial1, Serial2 на другие GPIO

Контроллеры на основе ESP32
Ответить
Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

ESP32, инициализация портов UART Serial0, Serial1, Serial2

#1

Сообщение Serg_Grn » 25.03.2021{, 22:21}

В модуле ESP32 wroom-32 (и в платах на основе этого модуля) UART Serial1 по умолчанию "сидит" на GPIO Rx9, Tx10, а они используются для внешней flash-памяти. Поэтому Serial1 нельзя использовать в FLProg, а он иногда бывает нужен...
Serial0 использовать можно, но он сидит на пинах 1 и 3, а они привязаны к USB-UART поэтому его применение тоже затруднено...
В итоге нам остаётся один только Serial2.
Для меня это явилось проблемой, т.к. нужен ещё один порт Serial. Начитался я в интернетах что портам Serial можно назначать различные пины - инициализировать порт.
К сожалению в FLProg нельзя выбрать порт Serial1, поэтому и инициализировать его и применить совместно с Serial0 и Serial2 не представляю возможности...
Однако можно использовать порт Serial0, перенаправив его на другие пины. Правда тогда не будет работать загрузка программ через USB, как вариант, загружать можно по воздуху.
Как провести инициализацию порта, для примера Serial0.
В программе используем Serial0 (например в блоке "отправка переменной в uart"), затем после компиляции в IDE находим строку

Код: Выделить всё

Serial0.begin(9600, SERIAL_8N1);
и после 8N1 пишем номера Rx и Tx пинов.
Пример, в котором Serial0 назначаются пины Rx21, Tx22:

Код: Выделить всё

Serial0.begin(9600, SERIAL_8N1, 21, 22);
Судя по той информации, что я нашёл, большинство GPIO могут быть использованы для UART:
СпойлерПоказать
Serial.jpg
Проверил у себя на ESP32 devkit v1, переназначив Serial2 на GPIO 21, 22. Работает.
Может кому-то это будет полезно.
Кстати, таким образом можно использовать Serial1 вместо Serial0, если последний используется для USB. В FLProg подключить Serial0, а затем в коде изменить на Serial1 и указать желаемые номера пинов.
Последний раз редактировалось Serg_Grn 26.03.2021{, 10:15}, всего редактировалось 1 раз.

Аватара пользователя
DrMario
Лейтенант
Сообщения: 371
Зарегистрирован: 07.11.2016{, 13:11}
Репутация: 58
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

ESP32, инициализация портов UART Serial0, Serial1, Serial2

#2

Сообщение DrMario » 26.03.2021{, 07:33}

Serial2 замечательно работает на IO16, IO 17, вот фрагмент из мануала к контроллеру.
Function:
GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT
GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
Вложения
Снимок.PNG

Serg_Grn
Лейтенант
Сообщения: 333
Зарегистрирован: 11.02.2018{, 13:07}
Репутация: 36
Имя: Сергей

ESP32, инициализация портов UART Serial0, Serial1, Serial2

#3

Сообщение Serg_Grn » 26.03.2021{, 09:28}

DrMario писал(а):
26.03.2021{, 07:33}
Serial2 замечательно работает на IO16, IO 17
Вы тему читали? :) То, что Serial2 замечательно работает, я знаю. Тема об использовании Serial0 - переносе его на другие GPIO и вообще о возможности использования портов Serial на других пинах.

Ответить

Вернуться в «ESP32»