8-битный полином CRC8-ATM используется во многих встраиваемых приложениях, включая управляемые по UART драйверы шаговых двигателей Trinamic, такие как TMC2209:
$$\text{CRC} = x^8 + x^2 + x^1 + x^0$$Следующий код предоставляет пример того, как вычислить этот тип CRC в Python:
crc8_atm.py
def compute_crc8_atm(datagram, initial_value=0):
crc = initial_value
# Итерировать байты в данных
for byte in datagram:
# Итерировать биты в байте
for _ in range(0, 8):
if (crc >> 7) ^ (byte & 0x01):
crc = ((crc << 1) ^ 0x07) & 0xFF
else:
crc = (crc << 1) & 0xFF
# Сдвиг к следующему биту
byte = byte >> 1
return crcЭтот код был проверен на практике для TMC2209.
Check out similar posts by category:
Algorithms Embedded MicroPython Python
If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow