Liaison filaire
Type | Fils | Modes de transmission | Tension | Débit | Distance | Protocole | Commentaire |
1-Wire | 2 (DATA+GND) | Synchrone multi-points | 3 à 5V | 16kbits/s | 500 m | | Adresse physique unique |
I²C | 3 (SDA+SLC+GND) | Synchrone half-duplex multi-points | "1" ≥ 0.7xVcc "0" ≤ 0.3xVcc
| 100 kbit/s ou 400 kbit/s | <1 m | multi-maître => 127 esclaves |
SPI | 4 (SCLK+MOSI+MISO+SS) | Synchrone full-duplex multi-points | TTL/CMOS | 25Mbit/s | | Simple maître | Pas sur ATTiny |
RS232C | 3 (RX+TX+GND) | Asynchrone point à point | TTL | 115kbits/s | | |
RS485 | 2 (RX+TX) | Asynchrone half-duplex point à point/multi-points | ΔVcc ≥ 1.5V | 110kbits/s | 1200 m | 1 maître => 32 esclaves |
USB | 4 (D+/D-/Vbus/GND) | Asynchrone, half-duplex point à point | TTL | | 5 m | |
OneWire ou 1-Wire
Développeur :Dallas semi-conducteur
Spécifications :
Les niveaux de tension : TTL
Débit : 16kbits/s
Distance :
Le protocol 1-wire 64bits: Famille 8bits+ ID 48bits + crc 8bits
Le bus 1 WIRE de DALLAS, permet de connecter et de faire dialoguer entre eux des circuits sur un seul fil.
Ce système de bus utilise un seul maître, qui pourra dialoguer avec un ou plusieurs esclaves.
Toutes les commandes et données sont envoyées avec le bit LSB en tête.
Le fil unique du bus doit être tiré au +Vcc par une résistance de 4,7KΩ.
L'état repos du bus est donc un état haut.
Si le bus est maintenu à l'état bas plus de 480μs par le maître, tous les composants sur le bus sont remis à zéro.
C'est le pulse d'initialisation ou de Reset.
Après un délai de 15 à 60μs, le ou les esclaves raccordés, forcent le bus à l'état bas pendant 60 à 240 μs pour signaler leur présence.
Chaque circuit possède une adresse physique unique, gravée dans la puce à la fabrication.
Cette adresse est constituée de 64 bits soit 8 octets. Le premier octet détermine le type de famille auquel appartient le circuit.
Les 6 octets suivants, constituent le code propre du circuit.
Le dernier octet est le CRC.
C'est un octet de contrôle calculé à partir des 56 bits précédents.
CRC | N° de série unique du circuit | Famille |
1 octet | 6 octets | 1 octet |
5E | 00 04 0C 38 F0 | 01 |
Toute transaction entre un maître et un ou plusieurs esclaves, débute par une initialisation, constituée par l'envoi du pulse de Reset par le maître.
Le maître doit ensuite envoyer une commande de type ROM qui est propre au protocole 1 Wire, et que tous les circuits de ce type vont reconnaître.
Cela va permettre entre autre de sélectionner un circuit parmi les différents esclaves qui ont répondu présents au pulse de Reset.
Le dialogue et l'échange de données pourra ensuite commencer, entre le maître et l'esclave sélectionné.
Emission d'un bit du maître vers l'esclave:
Le maître force le bus à "0" pendant 1 à 15 μs.
L'esclave va lire le bus entre 15 et 45 μs après le front descendant ( valeur typique 30 μs).
Si on veut émettre un "1", il faut repasser le bus à "1" immédiatement, et ne plus rien faire jusqu'à t = 60 μs.
Pour émettre un "0" il faut laisser le bus à "0" jusqu'à t = 60 μs, puis repasser le bus à "1".
La durée du bit est donc de 60 μs, ce qui donne un débit de 16 kbits/sec.
Réception d'un bit par le maître:
Le maître force le bus à "0" pendant au moins 1 μs.
Si l'esclave veut émettre un "1", il laisse le bus libre donc tiré à "1".
Pour émettre un "0", l'esclave doit tirer le bus à "0" pendant 15 μs au minimum.
Le maître devra donc dans tous les cas lire le bus 15 μs maximum après avoir tiré le bus à "0" pendant 1 μs.
L'état du bus donnera alors le bit transmis par l'esclave.
CRC
Le polynôme générateur du CRC est : X8 + X5 + X4 +1
Les fonctions
- Search Rom [F0h] : Le maître identifie les codes ROM de tous les dispositifs esclaves sur le bus,
S'il n'y a qu'un seul esclave sur le bus, la commande simple Lire ROM [33h] peut être utilisé à la place du processus de recherche de ROM.
Après chaque cycle "Search Rom", le maître de bus doit revenir à l'étape 1 (Initialisation) dans la séquence de transaction.
- Read Rom [33h] : Cette commande ne peut être utilisée que quand il n'y a qu'un esclave sur le bus.
Il permet au maître de lire le code ROM 64 bits de l'esclave sans utiliser la procédure Recherche ROM.
- Match Rom [55H] : La commande "Match Rom" suivie d'une séquence de code ROM 64 bits permet au maître de bus de répondre à un dispositif esclave spécifique sur un bus multipoints ou simple.
Seul l'esclave qui correspond exactement à la séquence de code ROM 64 bits va répondre à la commande délivré par le maître; tous les autres esclaves sur le bus attendent.
- Skip Rom [CCh] : Le maître peut utiliser cette commande pour répondre à tous les périphériques du bus en même temps sans envoyer des informations de code ROM.
Par exemple, le maître peut faire tous les DS18B20s sur le bus effectuent des conversions de température simultanées en émettant une commande de ROM Passer suivi d'une commande "Convert T" [44h].
Notez que la commande "Read Scratchpad" [BEh] peut suivre la commande "Skip Rom" seulement s'il y a un dispositif esclave unique sur le bus.
Dans ce cas, le temps est enregistré en permettant au maître de lire depuis l'esclave sans envoyer le code ROM 64 bits de l'appareil.
Une commande "Skip Rom" suivi d'une commande "Read Scratchpad" provoquera une collision de données sur le bus s'il y a plus d'un esclave.
- Alarm Search [ECh] : Le fonctionnement de cette commande est identique au fonctionnement de la commande "Match Rom" sauf que seuls les esclaves avec une alarme réglée répondra.
Cette commande permet à l'appareil maître pour déterminer si des DS18B20s ont connu un état d'alarme lors de la conversion de la température la plus récente. Le maître de bus doit revenir à l'étape 1 (Initialisation)
- Convert T [44h] : Cette commande déclenche une conversion de température unique. Après la conversion, les données thermiques résultant est stocké dans le registre de température de 2 octets dans la mémoire de travail et le DS18B20 retourne à son état de repos à faible puissance.
- Write Scratchpad [4Eh] : Cette commande permet au maître d'écrire 3 octets de données à la scratchpad du DS18B20.
Le premier octet de données est écrite dans le registre TH (octet 2 scratchpad), le deuxième octet est écrit dans le registre de TL (octet 3), et le troisième octet est écrit dans le registre de configuration (octet 4). Les données doivent être transmis avec le bit le moins significatif en premier. Les trois octets DOIVENT être écrits avant que de maître envoie les questions ou une ré-initialisation, sinon les données peuvent être endommagées.
- Read Scratchpad [BEh] : Cette commande permet au maître de lire le contenu du bloc-notes. Le transfert de données commence par le bit le moins significatif de l'octet 0 et se poursuit jusqu'à 9 octet (octet 8 - CRC) lu.
Le maître peut émettre une ré-initialisation afin de mettre fin à la lecture, à tout moment si seulement une partie des données de scratchpad est nécessaire.
- Copy Scratchpad [48h] : Cette commande copie le contenu du scratchpad TH, TL et registres de configuration (octets 2, 3 et 4) de l'EEPROM.
- Recall E2 [B8h] : Cette commande rappelle les valeurs de déclenchement d'alarme (TH et TL) et les données de configuration de l'EEPROM et place les données en octets 2, 3, et 4, dans la mémoire de travail.
- Read Power Supply [B4h] : Les problèmes de l'appareil maître cette commande suivie d'un intervalle de temps de lecture pour déterminer si des DS18B20s sur le bus utilisent la puissance de parasite.
Pendant l'intervalle de temps de lecture, parasite alimenté DS18B20s va tirer le bus bas et DS18B20s alimentés en externe vous permettra de le bus restent élevés.
PRincipe du 1-wire Search Rom
Le processus de recherche dans la ROM est la répétition d'une routine simple en trois étapes: lire un bit, lire le complément du bit, puis écrire la valeur souhaitée de ce bit.
Le maître de bus exécute cette procédure simple en trois étapes sur chaque bit de la ROM.
Après un passage complet, le maître du bus connaît le contenu de la ROM dans un appareil.
Le nombre restant d'appareils et leurs codes ROM peuvent être identifiés par des passes supplémentaires.
L'exemple suivant de processus de recherche dans la ROM suppose que quatre périphériques différents sont connectés au même bus 1-wire.
Les données ROM des quatre périphériques sont les suivantes:
ROM1 00110101 ...
ROM2 10101010 ...
ROM3 11110101 ...
ROM4 00010001 ...
Le processus de recherche est le suivant:
- Le maître du bus commence la séquence d'initialisation en émettant une impulsion de réinitialisation.
Les dispositifs esclaves répondent en émettant des impulsions de présence simultanées.
- Le maître de bus émettra ensuite la commande Search ROM sur le bus 1-Wire.
- Le maître du bus lit un bit à partir du bus 1-Wire. Chaque appareil répondra en plaçant la valeur du premier bit de leurs données ROM respectives sur le bus 1-wire.
ROM1 et ROM4 placent un 0 sur le bus 1-Wire, c’est-à-dire qu’il tire vers le bas.
ROM2 et ROM3 placeront un 1 sur le bus 1-Wire en permettant à la ligne de rester haute.
Le résultat est le ET logique de tous les appareils de la ligne. Le maître du bus voit donc un 0.
Le maître de bus lit un autre bit. Comme la commande Search ROM est en cours d'exécution, tous les périphériques du bus 1-Wire répondent à cette seconde lecture en plaçant le complément du premier bit de leurs données ROM respectives sur le bus 1-Wire.
ROM1 et ROM4 placent un 1 sur le 1-Wire, permettant à la ligne de rester haute.
ROM2 et ROM3 placeront un 0 sur le 1-Wire, ainsi il sera abaissé.
Le maître du bus observe à nouveau un 0 pour le complément du premier bit de données ROM.
Le maître de bus a déterminé que certains périphériques du bus 1-Wire ont un 0 en première position et d’autres un.
Les données obtenues à partir des deux lectures de la routine en trois étapes ont les interprétations suivantes :
bit | complément | Commentaire |
0 | 0 | Il existe encore des périphériques connectés qui ont des bits en conflit dans cette position. |
0 | 1 | Tous les appareils toujours couplés ont un bit 0 dans cette position de bit. |
1 | 0 | Tous les appareils encore couplés ont un bit dans cette position. |
1 | 1 | Aucun périphérique n'est connecté au bus 1-Wire. |
- Le maître du bus écrit 0. Cela désélectionne ROM2 et ROM3 pour le reste de cette recherche, ne laissant que ROM1 et ROM4 connectées au bus à 1-wire.
- Le maître de bus effectue deux autres lectures et reçoit un bit 0 suivi d'un bit.
Cela indique que tous les périphériques toujours couplés au bus ont 0 comme deuxième bit de données de la ROM.
- Le maître du bus écrit ensuite un 0 pour conserver les deux ROM1 et ROM4 couplées.
- Le maître du bus exécute deux lectures et reçoit deux bits nuls.
Cela indique qu'il existe à la fois des bits 1 et 0 en tant que troisième bit des données ROM des périphériques connectés
- Le maître du bus écrit 0 bit. Cela désélectionne ROM1, laissant ROM4 comme le seul périphérique encore connecté.
- Le maître du bus lit le reste des bits de la ROM pour la ROM4 et continue à accéder à la pièce, le cas échéant. Ceci termine la première passe et identifie de manière unique une partie sur le bus 1-Wire.
- Le maître du bus commence une nouvelle séquence de recherche dans la ROM en répétant les étapes 1 à 7.
- Le maître du bus écrit 1 bit . Cela dissocie ROM4, ne laissant que ROM1 encore couplé.
- Le maître du bus lit le reste des bits de la ROM pour la ROM1 et communique avec le sous-jacent. logique si vous le souhaitez. Ceci termine la deuxième passe de recherche de ROM, dans laquelle une autre des ROM a été trouvée.
- Le maître du bus lance une nouvelle recherche dans la ROM en répétant les étapes 1 à 3.
- Le maître du bus écrit un bit. Ceci désélectionne ROM1 et ROM4 pour le reste de cette passe de recherche, ne laissant que ROM2 et ROM3 couplés au système.
- Le maître du bus exécute deux créneaux temporels de lecture et reçoit deux 0.
- Le maître du bus écrit un 0 bit. Cela sépare ROM3 en ne laissant que ROM2.
- Le maître du bus lit le reste des bits de la ROM pour la ROM2 et communique éventuellement avec la logique sous-jacente. Ceci termine la troisième passe de recherche de ROM, dans laquelle une autre des ROM a été trouvée.
- Le maître du bus lance une nouvelle recherche dans la ROM en répétant les étapes 13 à 15.
- Le maître du bus écrit un bit. Cela sépare ROM2, ne laissant que ROM3.
- Le maître du bus lit le reste des bits de la ROM pour la ROM3 et communique éventuellement avec la logique sous-jacente. Ceci termine la quatrième passe de recherche dans la ROM, dans laquelle une autre des ROM a été trouvée.
Calcul du CRC-8 en Python
#!/usr/bin/python
"""Polynome = X^8+X^5+X^4+1"""
import binascii
def calcCheckSum(incoming):
msgByte = hexStr2Byte(incoming)
check = 0
for i in msgByte:
check = AddToCRC(i, check)
print "CRC %02X" % check
return check
def AddToCRC(b, crc):
b2 = b
for i in xrange(8):
odd = ((b2^crc) & 1) == 1
crc >>= 1
b2 >>= 1
if (odd):
crc ^= 0x8C # this means crc ^= 10001100
return crc
def hexStr2Byte(msg):
hex_data = msg.decode("hex")
msg = bytearray(hex_data)
return msg
if __name__ == '__main__':
#msg = sys.argv[1]
msg="021CB801000000" #7 bits pour retrouver le CRC8=A2
#msg="4501ffff7fff0b10" #->E3
print "L'adresse du DS: %s " % msg
print "CRC-8 Maxim/Dallas: %02X " % calcCheckSum(msg)
Single-Bus communication
Symbole | Paramètre | MIN | TYP | MAX | Unité |
Tbe | Host starting signal low time | 0.8 | 1 | 20 | ms |
Tgo | Host Bus release time | 20 | 30 | 200 | us |
Tre | Response time low | 75 | 80 | 85 | us |
TLOW | Signal "0", "1" low time | 48 | 50 | 55 | us |
TH0 | Signal "0" High Time | 22 | 26 | 30 | us |
TH1 | Signal "1" High Time | 68 | 70 | 75 | us |
Ten | Sensor releases the bus time | 45 | 50 | 55 | us |
SPI : Serial Peripheral Interface
Développeur :Motorola
Spécifications :
Les niveaux de tension :TTL/CMOS
Nombre de fils :4 (SCLK+MOSI+MISO+SS)
Type de signal: Full-duplex
- SCLK — Serial Clock, Horloge (généré par le maître)
- MOSI — Master Output, Slave Input (généré par le maître)
- MISO — Master Input, Slave Output (généré par l'esclave)
- SS — Slave Select, Actif à l'état bas (généré par le maître)
Il existe d'autres noms qui sont souvent utilisés :
- SCK, SCL — Horloge (généré par le maître)
- SDI, DI, SI — Serial Data IN, MISO
- SDO, SDA, DO, SO — Serial Data OUT, MOSI
- nCS, CS, nSS, STE, CSN— SS
I²C : Inter-Integrated Circuit
Développeur :Philips en 1982
Spécifications : bidirectionnel, transmission half-duplex synchrone
Les niveaux de tension : TTL
Nombre de fils :3 (SDA+SLC+GND)
- SDA (Serial DAta Line) : ligne de données bidirectionnelle
- SCL (Serial Clock Line) : ligne d'horloge de synchronisation bidirectionnelle.
"1" ≥ 0.7xVCC ; "0" ≤ 0.3xVCC
Désignation | Vitesse |
Standard mode | ≤ 100 kbit/s |
Fast mode | ≤ 400 kbit/s |
Fast plus mode | ≤ 1 Mbit/s |
High-speed mode | ≤ 3,4 Mbit/s |
Ultra-fast mode | ≤ 5 Mbit/s |
Cette condition est caractérisée par le passage de la ligne SDA du niveau « HIGH » au niveau « LOW » pendant que la ligne « SCL » est maintenue au niveau « HIGH ». |
|
« ACK », en forçant la ligne SDA au niveau « LOW », pour signaler la bonne réception de l'octet, équivalent à un bit à 0,
« NACK », en laissant la ligne SDA au niveau « HIGH », pour signaler un défaut dans la réception de l'octet, équivalent à un bit à 1. |
La condition de RESTART est similaire à la condition de START, à cela près que la ligne SCL doit d'abord passer du niveau « LOW » au niveau « HIGH ». |
À tout moment, l'esclave peut « bloquer » la ligne SCL au niveau « LOW » pour signaler qu'il est occupé.
Lorsque le maître fournit un niveau « HIGH » sur la ligne SCL, il détecte l'écrasement. Le maître doit continuer à fournir le niveau « HIGH » sur la ligne.
Lorsque l'esclave est à nouveau prêt, il libère la ligne SCL et celle-ci prend alors immédiatement le niveau « HIGH », le cycle reprend.
|
Cette condition est caractérisée par le passage de la ligne SDA du niveau « LOW » au niveau « HIGH » pendant que la ligne SCL est maintenue au niveau « HIGH ». |
Échange maître-esclave
MAITRE
ESCLAVE
Si le maitre envoi un "ACK" accusé de réception est donné à l'esclave indiquant plus de données.
Si aucun accusé de réception n'est donné à l'esclave "NACK" indiquant la dernière opération de lecture avant un STOP.
USB
Spécifications :
Débit :
Version | USB 1.0 | USB 1.1 | USB 2.0 | Wireless USB | USB 3.0 | USB 3.1 |
Année | 1996 | 1998 | 2000 | 2005 | 2008 | 2013 |
Débit | 1,5 Mbit/s 0,19 Mo/s | 12 Mbit/s 1,5 Mo/s |
480 Mbit/s 60 Mo/s | 480 Mbit/s 60 Mo/s |
5 Gbit/s 600 Mo/s | 10 Gbit/s 1,2 Go/s |
UART : Universal Asynchronous Receiver Transmitter
Caractéristiques
Les niveaux de tension : TTL
RS232C
Caractéristiques
standardisé par l'EIA en 1962.
Longueur (m) | 60 | 30 | 15 |
7,6 | 3,7 | 2,6 |
Débit (bit/s) | 2 400 | 4 800 | 9 600 | 19 200 | 38 400 | 56 000 |
Tableau décrivant le connecteur DB-9 et la compatibilité avec le DB-25
Signal | DB-25 | DE-9 |
Name | Abréviation | | |
Transmitted Data | TxD | 2 | 3 |
Received Data | RxD | 3 | 2 |
Data Terminal Ready | DTR | 20 | 4 |
Data Carrier Detect | DCD | 8 | 1 |
Data Set Ready | DSR | 6 | 6 |
Ring Indicator | RI | 22 | 9 |
Request To Send | RTS | 4 | 7 |
Clear To Send | CTS | 5 | 8 |
Signal Ground | G | 7 | 5 |
Protective Ground | PG | 1 | NC |
Voir les cables "null modem" pour les connexions RS232.
RS485
Spécifications :
Les niveaux de tension : TTL
de 100 kbit/s sur ligne de 1200 m à 35 Mbit/s sur ligne de 10 m
Débit :
Longueur (m) | 1200 | 100 | 15 | 10 |
Débit | 100kbit/s | 1Mbit/s | 10Mbit/s | 35 Mbit/s |
La communication ebus
Le protocole ebus
Le protocole OT est un moyen de transférer des données entre un dispositif maître (par exemple, le thermostat d'ambiance) et un dispositif esclave (le dispositif de chauffage).
L'échange de données s'effectue en mode demande / réponse, où le maître initie la communication et attend une réponse de l'esclave dans un certain laps de temps.
Si les données sont incomplètes ou corrompues, elles seront ignorées et la conversation terminée.
Si la communication est terminée prématurément ou lorsque l'esclave ne répond pas dans le délai spécifié dans le protocole, le maître renvoie la requête à l'esclave.
Le protocole spécifie qu'au moins un message par seconde doit être affiché par le maître.
Les données échangées se composent de 32 bits (donc, 4 octets de données) auxquels sont ajoutés un bit de début et d'arrêt, et il est codé Manchester.
Une trame se compose d'un certain nombre de blocs de données:
Vitesse de transfert : 2400 Bauds
Protection par CRC 8 bits : suivant le polynome x8+x7+x4+x3+x+1
Frame de 32 bits entre Start et Stop.
- 1 bit de start (toujours 1)
- 1 bit de parité (défini de manière à ce qu'il y ait un nombre pair de 1 dans l'ensemble du message)
- 3 bits pour le type de message
- 4 bits de rechange (qui sont tous 0)
- 8 bits de donnée ID
- 16 bits de données valeur
- 1 bit de stop
Start | Parité | Type message | Message de rechange | 8 bits d'adresse | 16 bits de données | Stop |
1 | | | | | 0 | 0 | 0 | 0 | b7 | b6 | b5 | b4 | b3 | b2 | b1 | b0 | | | | | | | | | | | | | | | | | 1 |
Type de message
Message Maitre vers Esclave | | Message Esclave vers Maitre |
Valeur | Type de message | | Valeur | Type de message |
000 | Lecture de données | | 100 | Lecture ACK |
001 | Écriture de données | | 101 | Écriture ACK |
010 | Données non valides | | 110 | Données non valides |
011 | Réservé | | 111 | DataID Inconnu |
A voir (source wikipedia) EBUS :
- 8-bit source address (lower 4 bits: priority class, higher 4 bits: bus master address)
- 8-bit destination address (254 unicast destinations, 0xff = broadcast)
- 16-bit command code (8 bit primary command byte and 8 bit secondary command byte)
- 8-bit data length indicator: 0–16 (not counting additional bytes inserted by the byte stuffing rule)
- 0–16 data bytes
- 8-bit cyclic redundancy check byte (generator: x8+x7+x4+x3+x+1)
Pour communiquer avec l'esclave, le dispositif maître modifie la tension sur le fil. Pour retourner au maître, l'esclave modifie le courant à travers le fil.
Les niveaux de tension / courant sont les suivants:
| Logique 0 | Logique 1 |
Tension | ≤ 7V | 15-18V |
Courant | 5-9mA | 17-23mA |
La communication Ethernet
Format standardisé typique (IEEE 802.3)
Préambule (7 octets + 1 octet pour le délimiteur), adresse destination (6 octets), adresse source (6 octets), longueur (taille réelle du paquet transmis par la source), données (en fonction du champ LLC utilisé les données devront atteindre au moins 38 ou 43 octets, et au plus la valeur du MTU), et CRC (4 octets).