1-Wire

Une technologie un peu ésotérique en fait, mais qui peut être pratique dans certains cas.

Dans l'objectif d'avoir le moins de fils possibles pour faire fonctionner et communiquer au moins 2 objets, Dallas Semiconductors -maintenant Maxim- a conçu la technologie 1-wire, qui, commme son nom ne l'indique pas, utilise au minimum 2 fils. Mais bon, c'est vrai qu'on ne peut pas faire moins, car on parle toujours de différence de potentiel en électricité, jamais de potentiel absolu. Ceci dit, si on ne compte pas la masse (référence), il reste effectivement un fil, d'où le nom 1-fil (et du point de vue marketing, ça jette un max).

C'est en fait un peu plus compliqué que cela. Comme il faut aussi passer de l'énergie, cela requiert un fil de plus en tension continue, soit 3 fils en tout: la masse, l'alimentation et la communication. Mais Dallas a trouvé une astuce pour n'avoir qu'un seul fil pour l'alimentation et la communication: la plupart du temps, les données seront "à 1", et donc le fil sera alimenté. Une (petite) capacité stockera l'énergie, et quand les données seront transmises (donc des "0" et des "1" = signal à la masse ou à l'alimentation, cette capacité servira de réservoir pour alimenter la puce quand les données sont à zéro.

Ceci dit, en mode 1-wire pur et dur, on ne peut pas passer beaucoup d'énergie, ou alors les capacités seraient trop grosses, et souvent, c'est finalement 2 fils + masse qui sont utilisés. On notera aussi que seul le contrôleur peut communiquer avec les autres puces, mais pas les puces entre-elles.

Toutes les puces utilisant ce protocole sont fabriquées par Maxim.

Le iButton (= Dallas Key) est un package standard contenant une puce 1-Wire, qui ressemble à une pile bouton.


Fonctionnement

Un maitre va discuter avec un ou plusieurs esclaves sur un seul fil, en mode half-duplex, c'est-à-dire qu'un seul parle à la fois sur la ligne, ce qui permet de discuter dans les deux directions.

Lorsque la ligne de donnée sert aussi de ligne d'alimentation, ce mode est appelé "parasitic supply". La tension d'alimentation peut varier entre 2.8 V et 5.25 V max.

Chaque esclave a une adresse unique: 64-bit ID. Parmi les 64 bits, on trouve 8 bit servant de family code, et 8 autres d'octet de contrôle. Cet identifiant servira au maitre pour retrouver ses esclaves. Seul le maitre parle, ce qui simplifie les problèmes de collision: si cela arrive, c'est le maitre qui refera une tentative, et ce sera codé dans le software.

Le protocole est basé sur des timings bien défini:

  1. La maitre envoie un reset
  2. Puis le maitre envoie des octets, lus par tous. Celui qui reconnait son ID va répondre.
  3. Le maitre envoie des impulsions qui permettent à l'esclave de répondre bit par bit.

Ce protocole permet des débits de 16.3 kbit/s en mode standard. Il existe également un mode overdrive permettant de lire une mémoire 64 kbit en moins d'une seconde.



Mode normal et mode parasite (en bas)
1-wire protocol
Chronogramme 1-Wire en mode standard

  • 1-Wire tutorial
  • liste des puces 1-wire (Maxim)