Le polynôme CRC8-ATM 8 bits est utilisé dans de nombreuses applications embarquées, y compris les pilotes de moteurs pas-à-pas contrôlés par UART de Trinamic comme le TMC2209 :
$$\text{CRC} = x^8 + x^2 + x^1 + x^0$$Le code suivant fournit un exemple sur la façon de calculer ce type de CRC en Python :
crc8_atm.py
def compute_crc8_atm(datagram, initial_value=0):
crc = initial_value
# Itère sur les octets des données
for byte in datagram:
# Itère sur les bits de l'octet
for _ in range(0, 8):
if (crc >> 7) ^ (byte & 0x01):
crc = ((crc << 1) ^ 0x07) & 0xFF
else:
crc = (crc << 1) & 0xFF
# Passe au bit suivant
byte = byte >> 1
return crcCe code a été vérifié sur le terrain pour le TMC2209.
Consultez les articles similaires par catégorie :
Algorithmes Embarqué MicroPython Python
Si cet article vous a aidé, pensez à m'offrir un café ou à faire un don via PayPal pour soutenir la recherche et la publication de nouveaux articles sur TechOverflow