Можно ли свободно использовать UART0 при подключении ESP32 s3 через USB (D+, D-)?

esp32 uart gps esp32-s3

Я разработал тестовую плату, в которой используется ESP32 S3 и тестовые контакты. Во время загрузки программы я использую интерфейс USB через GPIO20 и GPIO19 как D+ и D-. В этой конфигурации все работает нормально. Однако я столкнулся с проблемой, когда UART0 становится неактивным после использования интерфейса USB. Теперь я хочу подключить контакт TX модуля GPS (NEO 6m) к контакту RX UART0, но я не могу это сделать. Непрактично запускать код как есть, поскольку при получении данных на RX0 он заполняет экран непрерывного последовательного интерфейса. Я ищу решение, позволяющее полностью отключить UART0 от интерфейса USB, чтобы можно было использовать его самостоятельно.

Короче: Как я могу получить дату из UART0, а затем через Serial.print на последовательный монитор через интерфейс USB?

#define RXD2 6
#define TXD2 7

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600);
  while (!Serial)
    delay(200);
  Serial.println("start GPS...");

  Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
}

void loop() {
  while (Serial.available()) {
    Serial.print(char(Serial.read()));
  }
}

, 👍2


1 ответ


Лучший ответ:

2

Последовательный — это COM-порт через USB на esp32 с собственным USB (и опцией «USB CDC при загрузке», выбранной в меню «Инструменты»). Для UART0 ядро затем создает Serial0.

Из документации:

Чтобы использовать UART в качестве последовательного вывода, вы можете использовать Serial0.print("Hello World!"); вместо Serial.print("Hello World!"); который будет распечатан с использованием USB CDC.

,