Texte original : https://www.sparkfun.com/tutorials/215

Un des outils que nous utilisons le plus quand nous déboguons nos projets est la communication série. C’est vraiment très facile à mettre en place, et cela vous permet d’envoyer et recevoir n’importe quelle donnée de votre microcontrôleur à un port série d’ordinateur pour être visualisé sur un émulateur terminal. Ces deux éléments sont compatibles d’un point de vu logiciel, malgré tout, vous ne pouvez pas connecter un microcontrôleur à un ordinateur directement car la connexion matérielle vous en empêche.

La plupart des microcontrôleurs aujourd’hui ont directement intégré un module UART (universally asynchronous receiver/transmitter) qui peut être utilisé pour recevoir et transmettre des données en série.  Les UART transmettent un bit à la fois à une vitesse spécifique (ex. 9600 b/s, 115200 baudes). Cette méthode de transmission série fait parfois référence à une communication TTL série (transistor-transistor logic). La communication série à niveau TTL sera toujours entre 0V et le VCC (souvent 5V ou 3.3V). Un bit de valeur 1 (haut) sera représenté par un courant fort au niveau Vcc, et un bit bas (0) par le niveau 0V ou masse.

Le port série de votre ordinateur (si vous avez la chance d’en avoir un, ils deviennent rapidement des reliques) fonctionnent avec la norme RS-232 (Recommended Standard 232) de télécommunication. Le signal est similaire à celui de votre microcontrôleur en communication série car la transmission se fait aussi en bit à bit à une vitesse spécifique, avec ou sans bit de parité ou bit de stop. Les deux grosses différences sont au niveau matériel. Avec la norme RS-232 le bit logique 1 est représenté par une tension négative –  n’importe quoi entre -3 et -25V – alors qu’un bit bas (0) est transmis par une tension positive entre 3 et 25V. Sur la plupart des ordinateurs c’est entre -13 et 13 Volts.

La tension plus importante d’un signal RS-232 participe à le rendre moins sensible au bruit et perturbations. Cela signifie qu’un signal RS-232 peut généralement parcourir une plus grande distance qu’un même signal en niveau TTL.

ttl-timing
Ce diagramme de temps représente un signal carré sur RS-232 (haut) et TTL (bas)

Solutions

Donc, vous pouvez maintenant voir que le problème se situe dans l’échange des deux signaux. Et pour connecter ces deux ports vous ne pouvez pas uniquement inverser signaux, mais vous devez aussi résoudre le problème de tension au risque de détruire le port série de votre microcontrôleur. La manière la plus conventionnel de résoudre ce problème est d’intercaler un MAX-232 entre les deux connexions TTL et RS-232

ttl-MAX232

Il y a pleins de dérivé générique de cette puce. Maxim IC semble être le premier à avoir vendu cet indispensable élément (depuis des années déjà) donc nous appelons tous les contrôleurs qui font un boulot similaire des ‘MAX-232’.

Une solution moins chère, comme note RS-232 Shifter, utiliser des transistors pour inverser le signal et des convertisseurs à transfert de charge pour obtenir la bonne tension.

rs-232-transistor