8-bitový polynom CRC8-ATM se používá v mnoha vestavěných aplikacích, včetně Trinamic ovladačů krokových motorů řízených přes UART, jako je TMC2209:
$$\text{CRC} = x^8 + x^2 + x^1 + x^0$$Následující kód poskytuje příklad, jak vypočítat tento typ CRC v Pythonu:
crc8_atm.py
def compute_crc8_atm(datagram, initial_value=0):
crc = initial_value
# Iterovat bajty v datech
for byte in datagram:
# Iterovat bity v bajtu
for _ in range(0, 8):
if (crc >> 7) ^ (byte & 0x01):
crc = ((crc << 1) ^ 0x07) & 0xFF
else:
crc = (crc << 1) & 0xFF
# Posun na další bit
byte = byte >> 1
return crcTento kód byl ověřen v praxi pro TMC2209.
Podívejte se na podobné články podle kategorie:
Algoritmy Embedded MicroPython Python
Pokud vám tento článek pomohl, zvažte, zda mi nekoupíte kávu nebo nepřispějete přes PayPal na podporu výzkumu a publikování nových článků na TechOverflow