pont-uart.ino
Le GD32 a trois UART : le core les expose en Serial/Serial2/Serial3. Ce pont bidirectionnel sert à configurer un module (AT commands) ou à déboguer un GPS sans le souder ailleurs.
Matériel requis
Une carte de développement GD32F103C8T6 (Cortex-M3 108 MHz, compatible broche à broche Blue Pill), alimentée en 3,3 V/5 V, avec un adaptateur ST-Link ou série. 1 adaptateur USB-série 3,3 V (pour le premier port) + 1 module TTL à 9600 bauds.
Branchement
Adaptateur sur PA9/PA10 (croisez TX/RX, masses communes, 3,3 V uniquement). Module sur PA2/PA3. L'alimentation USB de la carte se fait par ST-Link ou 3,3 V externe.
Fonctionnement
Deux buffers FIFO côté cœur ; les while assurent que tout est vidé à chaque tour. Le débit 115200/9600 asymétrique est le cas réel (console rapide, module lent). Avec Arduino : installez le core « STM32F1 » (Roger Clark, gestionnaire de cartes) et choisissez la carte « GD32F103C » ; le LED utilisateur est PC13 (actif à LOW). En C : bibliothèque GD32F10x + ST-Link.
Pour aller plus loin
Filtrez les lignes (ne garder que $GPRMC), ou transformez le pont en traducteur de protocole série.
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());
}