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

Контроллеры на основе ESP32
Ответить
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

В модуле 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:
[spoiler]
Serial.jpg
[/spoiler]
Проверил у себя на ESP32 devkit v1, переназначив Serial2 на GPIO 21, 22. Работает.
Может кому-то это будет полезно.
Кстати, таким образом можно использовать Serial1 вместо Serial0, если последний используется для USB. В FLProg подключить Serial0, а затем в коде изменить на Serial1 и указать желаемые номера пинов.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Serg_Grn 26 мар 2021, 10:15, всего редактировалось 1 раз.
Аватара пользователя
DrMario
Лейтенант
Сообщения: 378
Зарегистрирован: 07 ноя 2016, 13:11
Откуда: Камень-на-Оби
Имя: Евгений
Контактная информация:

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

Сообщение DrMario »

Serial2 замечательно работает на IO16, IO 17, вот фрагмент из мануала к контроллеру.
Function:
GPIO16, HS1_DATA4, U2RXD, EMAC_CLK_OUT
GPIO17, HS1_DATA5, U2TXD, EMAC_CLK_OUT_180
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Serg_Grn
Лейтенант
Сообщения: 338
Зарегистрирован: 11 фев 2018, 13:07
Имя: Сергей
Благодарил (а): 5 раз
Поблагодарили: 1 раз

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

Сообщение Serg_Grn »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость