8-бітовий поліном CRC8-ATM використовується у багатьох вбудованих застосунках, включаючи Trinamic UART-керовані драйвери крокових моторів на кшталт 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.
Дивіться схожі статті за категоріями:
Алгоритми Вбудовані системи MicroPython Python
Якщо ця стаття допомогла вам, будь ласка, подумайте про те, щоб купити мені каву або зробити пожертву через PayPal на підтримку досліджень та публікації нових статей на TechOverflow