El polinomio CRC8-ATM de 8 bits se usa en muchas aplicaciones embebidas, incluyendo los drivers de motores paso a paso controlados por UART de Trinamic, como el TMC2209:
$$\text{CRC} = x^8 + x^2 + x^1 + x^0$$El siguiente código proporciona un ejemplo de cómo calcular este tipo de CRC en Python:
crc8_atm.py
def compute_crc8_atm(datagram, initial_value=0):
crc = initial_value
# Iterar los bytes en los datos
for byte in datagram:
# Iterar los bits en el byte
for _ in range(0, 8):
if (crc >> 7) ^ (byte & 0x01):
crc = ((crc << 1) ^ 0x07) & 0xFF
else:
crc = (crc << 1) & 0xFF
# Desplazar al siguiente bit
byte = byte >> 1
return crcEste código ha sido verificado en campo para el TMC2209.
Echa un vistazo a artículos similares por categoría:
Algoritmos Embebido MicroPython Python
Si este artículo te ha ayudado, considera invitarme a un café o hacer una donación vía PayPal para apoyar la investigación y publicación de nuevos artículos en TechOverflow