En mode 8N1, qui est le mode par défaut de Serial sur Arduino, chaque trame UART contient un bit de start, huit bits de données, aucun bit de parité et un bit de stop. La transmission commence par un bit de start à 0, suivi des huit bits de données envoyés du bit de poids faible au bit de poids fort, puis se termine par un bit de stop à 1.
Dans le cas d’une UART configurée en 9 bits, la structure de la trame est similaire, mais avec un bit de données supplémentaire. Cela signifie qu’après le bit de start, neuf bits de données sont transmis au lieu de huit, suivis du bit de stop. Ce neuvième bit peut être utilisé pour envoyer des données sur 9 bits au lieu de 8, ou servir à des usages spécifiques comme un indicateur d’adresse dans un protocole multiprocesseur ou une extension du bit de parité.
En mode 8E1, chaque trame UART contient un bit de start, huit bits de données, un bit de parité paire, et un bit de stop. Le bit de parité est ajusté pour que le nombre total de bits à 1, y compris le bit de parité, soit pair. Si le nombre de bits à 1 dans les données est impair, le bit de parité sera mis à 1 pour rendre ce total pair.
Si vous avez configuré l’UART en 9 bits équivalent, donc En mode 9E1, la trame contient un bit de start, neuf bits de données, un bit de parité paire, et un bit de stop. Le bit de parité fonctionne de la même manière que dans le mode 8E1, mais dans ce cas, il couvre neuf bits de données au lieu de huit.
Le hardware du uno ne supporte pas le mode 9 bits mais celui du Mega oui. Cependant il semble que l’API arduino ne gère pas ça, cf la discussion que j’ai mise en lien