Le BUS 1 WIRE Documentation interne ELE D. MENESPLIER 2004 D. MENESPLIER ENAC 2

Le BUS 1 WIRE Documentation interne ELE D. MENESPLIER 2004 D. MENESPLIER ENAC 2004 1 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. Repos Repos Pulse RESET Maître Réponse présence Esclave Attente Esclave > 480 µs 60 à 240 µs 15 à 60 µs +Vcc 4,7K Maître Esclave 1 Esclave 2 Esclave n BUS 1 WIRE D. MENESPLIER ENAC 2004 2 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. 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. C R C Famille N° de série unique du circuit 1 octet 6 octets 1 octet LSB MSB "1" = 1 à 15 µs 60 µs max Lecture "0" = 60 µs max Lecture D. MENESPLIER ENAC 2004 3 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. COMMANDES ROM: Ces commandes sont constituées d'un octet que le maître devra envoyer après avoir fait un reset. h'33' = READ ROM Cette commande ne peut être utilisée que s'il n'y a qu'un seul esclave sur le bus. Celui ci répond alors ces 64 bits de code. h'55' = MATCH ROM Cette commande suivi de 64 bits de code, va permettre au maître de sélecter un esclave particulier. h'CC' = SKIP ROM Commande d'appel général, pour adresser tous les esclaves. Cette fonction est utile pour adresser un esclave qui est seul sur le bus, sans avoir à envoyer les 64 bits de son code. "1" = 1 µs min 15 µs max Lecture "1" "0" = 1 µs min 15 µs max Lecture "0" D. MENESPLIER ENAC 2004 4 h'F0' = SEARCH ROM Cette commande va permettre de rechercher bit à bit les codes de tous les esclaves raccordés au bus 1 Wire. En réponse à cette commande, les esclaves envoient leur premier bit, puis ce même bit inversé. Le maître émet à son tour ce premier bit. Les esclaves qui reconnaissent leur 1er bit restent à l'écoute, et les autres s'éliminent et ne répondront plus. Les esclaves toujours présents vont maintenant envoyer leur 2eme bit, puis ce même 2eme bit mais inversé. Le maître comme précédemment va émettre ce 2eme bit. Les esclaves qui ne reconnaissent pas leur 2eme bit vont s'éliminer. Quand le maître reçoit le bit et son inverse à : 1 1 c'est qu'il n'y a pas de circuit sur le bus 1Wire. Quand le maître reçoit le bit et son inverse à : 0 0 c'est qu'il y a conflit, car des esclaves ont un "1" et des autres un "0" à cette position. Dans ce cas il enverra en réponse un bit à "0" pour ne garder que les circuits ayant un "0" à cette position et éliminer ceux qui ont un "1". Quand le maître reçoit le bit et son inverse à : 0 1 c'est qu'il n'y a que des circuits ayant un bit à "0" à cette position. Il enverra un "0" pour garder tous ces circuits. Et s'il a reçu 1 0 il enverra "1", car le bit de cette position est à "1" et on gardera les circuits. Le principe général de la recherche est de désélecter les uns après les autres les circuits à chaque conflit sur les différentes positions des bits. A la fin de chaque étape de recherche, le maître connaît un nouveau code de 64 bits complet d'un circuit. L'étape suivante est identique jusqu'au niveau de la dernière décision après le conflit. Le maître part alors dans la direction opposée, il enverra un "1" alors qu'il n'avait gardé que les circuits ayant un "0" à cette position. Ainsi, bit par bit, on va arriver à lire les 64 bits de tous les esclaves. Le maître va ainsi savoir combien il y a d'esclaves sur le bus et quelles sont leurs codes propres. h'EC' = CONDITIONAL SEARCH Cette commande fonctionne comme la commande SEARCH ROM, à la différence que seul les circuits ayant une condition bien spécifiée participent à la recherche. Par exemple les circuits de mesure de la température qui ont le Flag d'alarme actif ou les port E/S qui ont leur sortie à "1". D. MENESPLIER ENAC 2004 5 Le CRC: Le polynôme générateur du CRC est : 1 4 5 8 + + + X X X Sa représentation est la suivante: Calcul pratique du CRC: Quand on aura reçu les 56 premiers bits du circuit, soit 7 octets, on devra calculer l'octet de CRC pour le comparer à celui que l'on va recevoir avec les 8 bits restants. Pour éviter les calculs complexes du polynôme, on va utiliser une table indexée de 256 valeurs décimales. index 0 0 94 188 226 97 63 221 131 194 156 126 32 163 253 31 65 16 157 195 33 127 252 162 64 30 95 1 227 189 62 96 130 220 32 35 125 159 193 66 28 254 160 225 191 93 3 128 222 60 98 48 190 224 4 92 223 129 99 61 124 34 192 158 29 67 161 255 64 70 24 250 164 39 121 155 197 132 218 56 102 229 187 89 7 80 219 133 103 57 186 228 6 88 25 71 165 251 120 38 196 154 96 101 59 217 135 4 90 184 230 167 249 27 69 198 152 122 36 112 248 166 68 26 153 199 37 123 58 100 134 216 91 5 231 185 128 140 210 48 110 237 179 81 15 78 16 242 172 47 113 147 205 144 17 79 173 243 112 46 204 146 211 141 111 49 178 236 14 80 160 175 241 19 77 206 144 114 44 109 51 209 143 12 82 176 238 176 50 108 142 208 83 13 239 177 240 174 76 18 145 207 45 115 192 202 148 118 40 171 245 23 73 8 86 180 234 105 55 213 139 208 87 9 235 181 54 104 138 212 149 203 41 119 244 170 72 22 224 233 183 85 11 136 214 52 106 43 117 151 201 74 20 246 168 240 116 42 200 150 21 75 169 247 182 232 10 84 215 137 107 53 Entrée data 8 7 6 1 2 3 4 5 D. MENESPLIER ENAC 2004 6 Exemple: On vient de recevoir les 7 octets suivants : 00 00 04 0C 38 F0 01 Le uploads/Litterature/ bus-1-wire-pdf.pdf

  • 34
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager