vendredi 14 mai 2010

Liaison série : RS232 vs TTL

Un petit article pour rappeler quelques bases, ça ne fait jamais de mal. Outre les niveaux de voltage tension, il existe une autre différence de taille entre le RS232 et le TTL, la représentation des 0 et des 1 ! Tout le monde le sait[1]. Mais habitués que nous sommes à  utiliser des MAX232 & co[2], quand il s'agit de manipuler les signaux, il arrive qu'on mette du temps à  s'en souvenir[3]. Vous l'aurez compris, cela m'est arrivé récemment :) Donc petit rappel.

La liaison série RS232 utilise pour représenter le 1 un niveau compris entre -3V et -25V et pour le 0 entre +3V et +25V. Généralement en sortie de nos PC on trouve -12V et +12V.

En TTL par contre le 0 est représenté par une tension entre 0 et 0.7V alors que le 1 est entre 2.2V et 5V.

La conversion ne se borne donc pas à  ramener les -12/+12 vers 0V et 5V, il faut aussi inverser les signaux[4] !

Preuve par l'exemple, voici un port série de PC branché sur un MAX3235 le tout relié à  un oscillo.

montage

En rouge, channel 1, une sonde x10 sur le fil 3 de la DB9, Tx du RS232 donc. En bleu, channel 2, une sonde x10 sur la patte 1 du max3235 soit Rx en TTL. Du PC, on envoi 2 caractères C en 9600-8N1. Nous sortons à  l'oscillo la jolie trace suivante : trace

  • En Idle la ligne est à  1, -10V en RS232 et +5V en TTL
  • le bit de start S passe à  0
  • les 8 bits de données pour C, caractère ascii 0x43 soit b01000011, sachant que le LSB est transmit en 1er
  • le bit de stop S' à  1
  • le caractère suivant ...

Voila, voila, du très simple, la base, mais si cela permet à  quelqu'un d'éviter de perdre autant de temps que moi, c'est déjà  cela de gagné :)

Aller et pour essayer de donner un peu de contenu à  cet article, j'ai trouvé des vidéos sur l'utilisation de l'oscilloscope très bien faites. C'est chez BTCinstrumentation.

Notes

[1] ou au moins l'a su

[2] on préfèrera les nouveaux modèles sans capa externes !

[3] surtout la nuit

[4] youhou, coucou la NAND


Commentaires du post original