Berechnung des CRC8-ATM-CRC in Python

English Deutsch

Das 8-Bit-CRC8-ATM-Polynom wird in vielen Embedded-Anwendungen verwendet, einschließlich Trinamic UART-gesteuerter Schrittmotor-Treiber wie dem TMC2209:

$$\text{CRC} = x^8 + x^2 + x^1 + x^0$$

Der folgende Code bietet ein Beispiel, wie dieser CRC-Typ in Python berechnet wird:

crc8_atm.py
def compute_crc8_atm(datagram, initial_value=0):
    crc = initial_value
    # Bytes in Daten iterieren
    for byte in datagram:
        # Bits in Byte iterieren
        for _ in range(0, 8):
            if (crc >> 7) ^ (byte & 0x01):
                crc = ((crc << 1) ^ 0x07) & 0xFF
            else:
                crc = (crc << 1) & 0xFF
            # Zum nächsten Bit wechseln
            byte = byte >> 1
    return crc

Dieser Code wurde für den TMC2209 im Feld verifiziert.


Check out similar posts by category: Algorithms, Embedded, MicroPython, Python