Berechnung des CRC-Bytes einer 1-Wire ID

Hier gibt es die Möglichkeit, den CRC8 Code für eigene 1-Wire-Slaves zu berechnen. Dies ist das letzte Byte in der 8 Byte (64 Bit) langen ID mit der jedes 1-Wire Gerät eindeutig adressiert wird. Bei den Original-Chips von MAXIM ist die Eindeutigkeit von Haus aus gegeben. Bei eigenen 1-Wire-Geräten muss selbst auf eindeutige IDs geachtet werden.

Das erste Byte gibt immer die Gerätefamilie an, einige Codes stehen unten.

Die 1-Wire ID mit korrektem CRC lautet:

–


Erzeugen einer „eindeutigen“ ID

Zur Vereinfachung kann hier eine eindeutige ID generiert werden, die zumindest unter allen hier erzeugten IDs (und bei allen von mir bestellten Platinen mit 1-Wire-Simulation) einzigartig ist.

Sicherheitscode

Einige oft verwendete Family-IDs

PHP-Quellcode zur Berechnung

// $ra enthält mind. die ersten 7 Bytes der ID
$lscrc = 0x0;
for ($i = 0; $i < 7; $i++) {
    for ($bit = 1; $bit < 256; $bit = $bit * 2) {
        $lactbit = (($ra[$i] & $bit) == $bit) ? 1 : 0;
        if (($lscrc & 1) != $lactbit) $lscrc = ($lscrc >> 1) ^ 0x8c; else $lscrc = ($lscrc >> 1);
    }
}
$ra[7] = $lscrc;
Zum Seitenanfang