Pages

mardi 18 avril 2023

Utiliser l'UART d'une carte Arduino avec des caractéristiques non standard

Sur ce blog, vous avez sans doute déjà vu des articles concernant les liaisons séries (UART, RS232)  :

  • Lecture GPS
  • Lecture de badges RFID
  • Connexion à des écrans (NEXTION)
  • Module HC11 (sans fil)
  • Module Bluetooth
  • ...
Et quasiment à chaque fois, on utilise des connexions séries "standard" comme par exemple "9600 bauds" ou "115200 bauds" sur 8 bits et un bit de stop.
Exemple directement pris de l'IDE Arduino (légèrement nettoyé et retouché ;-))


    Il faut bien se dire qu'il existe des systèmes qui communiquent différemment. Il se peut que l'on communique avec un système avec 7 bits de données, un bit de parité paire et un bit de stop.
Cet article n'est pas un cours sur le port série, il est écrit pour utiliser autrement le port série d'une carte Arduino.
Pour rappel, ci-dessous le tableau résumant les connexions séries matérielles sur les cartes Arduino actuelles :

    Sur ces cartes, nous pourrons configurer les UART matériels avec des caractéristiques "exotiques". Cette configuration est très facile à mettre en œuvre sur les cartes "classiques" comme les UNO, NANO et surtout les MEGA qui possèdent 4 UART matériels de base.

Attention, ne pas essayer avec SoftSerial, vous allez avoir des soucis ;-)

👉Méthode :

Dans l'Example au-dessus, on peut lire ligne 4 :

Cela veut dire que l'on ouvre le port série (natif) avec 8 bits de données, pas de parité et 1 bit de stop et un débit binaire à 9600 bauds. C'est la configuration la plus standard que l'on connaisse (au collège, au lycée et chez les bidouilleurs).

MAIS, que faire quand la configuration n'est pas comme cette dernière ?
Arduino nous le dit !

    Pour faire simple, si on a une configuration classique, on écrit uniquement le débit binaire en paramètre de la méthode Serial.begin comme Serial.begin(115200). Si on a besoin d'une configuration différente, on ajoute un second paramètre qui donne le nombre de bits de données, la parité et le nombre de bits de STOP.

  • 8N1 par exemple veut dire : 8 bits de données - No Parity - 1 bit de STOP
  • 7E1 par exemple veut dire : 7 bits de données - Even Parity - 1 bit de STOP
  • 8O2 par exemple veut dire : 8 bits de données - Odd Parity - 2 bits de STOP

Even signifie paire et Odd signifie impaire.

Au final, si je veux configurer par exemple le port série 2 d'une carte MEGA avec 4800 bauds, 7 bits de données, une parité paire et 1 bit de stop, cela donnera une ligne comme celle-ci :