Problemas al inicializar cualqueir UART que no sea el UART0

Hola,
Estoy desarrollando un programa y necesito comunicar dos MCU, uno de ellos es un ESP32 que programo en Arduino, e intentado con muchos pines, y no consigo inicializar el UART1 o UART2 para enviar datos, les muestro mi codigo.

#include <stdbool.h>                    //Libreria para constantes booleanas true y false
#include <HardwareSerial.h>             //Libreria para configuraciones de los modulos UART
#include <String.h> 


const int GPIO_Error = 16;              // Pin de funcion Error
const int GPIO_Modo = 4;                // Pin de funcion Modo

HardwareSerial MySerial(2);                //Creamos el objeto manipulador del uart 2

void setup() {

  /*  Inicializo el puerto serie a 115200 baudios  */
  Serial.begin(115200); 
  MySerial.begin(115200, SERIAL_8N1, 35, 34);  

  /*  Inicializo los LED indicadores  */
  //Configuro ambos leds como salidas
  pinMode(GPIO_Error, OUTPUT);    
  pinMode(GPIO_Modo, OUTPUT);

  //Ambos inicializan apagados
  digitalWrite(GPIO_Modo, true);  
  digitalWrite(GPIO_Error, true);  
}

void loop() {

  MySerial.print("Hola mundo jejeje");

  delay(500);
}

E probado con varios pines, e probado con los GPIO16 y GPIO32 y lo unico que consigo es frustrarme mas jajaja, pero no sale nada por el serial, se que no se inicializa porque cuando coloca un osciloscopio en el pin TX, el voltaje marcado es de 0V siempre y nunca cambia.

¿Qué librería software serial estas usando ? Asegúrate que sea compatible con esp32.
Saludos

No todos los pines están disponibles para cualquier uso, por ej. intentas usar los GPIO 34 y 35 que solo pueden ser entradas entonces no puedes usar uno de ellos para Tx (si para Rx).

En este art. de Luis Llamas tienes la lista de pines "conflictivos".

Más allá de que la reasignación debería funcionar (usando los pines correctos, claro), ¿Por qué no usas la UART2 con los GPIO 16 y 17, que son los que usa por defecto, y mueves el LED GPIO_Error a otro pin?

No usa SoftwareSerial, con ESP32 se usa HardwareSerial para habilitar las UART's 1 y 2.

Hola, use el pin GPIO16 como Tx y sigue sin funcionar, realmente no entiendo xq no funciona

Te cuento que tu código funciona perfectamente, tanto en Nodemcu como en Devkit e incluso simulado en wokwi.
Probé con las combinaciones (Rx/Tx): 16/17*; 35/17; 35/16; 35/25; 16/25 y todas funcionaron.
(*) Pines por defecto para UART2.

¿Cómo estás haciendo la conexión entre placas?

Estas compartiendo GND entre los dos MCUs no?

Hola a todos, gracias por sus comentarios, tal vez debi agregar que estoy usando un MCU ESP32-WROOOM-32UE- N8 y que es un diseño personalizado

Tu diseño de PCB será personalizado pero el ESP32 no lo es.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.