pont-uart.ino
El GD32 tiene tres UART y el core los expone como Serial/Serial2/Serial3. Este puente bidireccional sirve para configurar un módulo (comandos AT) o depurar un GPS sin desoldar nada.
Hardware necesario
Una placa de desarrollo GD32F103C8T6 (Cortex-M3 a 108 MHz, compatible pin a pin con Blue Pill), alimentada a 3,3 V/5 V, con un adaptador ST-Link o serie. 1 adaptador USB-serie de 3,3 V (para el primer puerto) + 1 módulo TTL a 9600 baudios.
Cableado
Adaptador en PA9/PA10 (cruce TX/RX, masas comunes, solo 3,3 V). Módulo en PA2/PA3. La placa se alimenta por ST-Link o 3,3 V externo.
Funcionamiento
Dos búferes FIFO en el núcleo; los while aseguran que se vacía todo cada vuelta. El caudal asimétrico 115200/9600 es el caso real (consola rápida, módulo lento). Con Arduino: instale el core « STM32F1 » (Roger Clark, gestor de placas) y elija la placa « GD32F103C »; el LED de usuario es PC13 (activo en LOW). En C: biblioteca de firmware GD32F10x + ST-Link.
Para ir más lejos
Filtren líneas (quedarse solo con $GPRMC), o conviertan el puente en traductor de protocolo serie.
pont-uart.ino
// Pont Serial (USB-Serie sur PA9/PA10) <-> Serial2 (PA2/PA3).
// Utile pour brancher un module GPS/GSM/Bluetooth 3,3 V.
void setup() {
Serial.begin(115200); // PA9 TX / PA10 RX : adaptateur USB-UART
Serial2.begin(9600); // PA2 TX / PA3 RX : le module
Serial.println("Pont actif : tapez, ca rebondit");
}
void loop() {
while (Serial.available()) // PC -> module
Serial2.write(Serial.read());
while (Serial2.available()) // module -> PC
Serial.write(Serial2.read());
}