import binascii # FLASH前16字节 data = bytes.fromhex('55AA3C1002000000AB0D416900000000') print(f"Data: {data.hex().upper()}") print(f"Length: {len(data)} bytes") print() # 测试不同的CRC32配置 print("CRC32 Results:") print("=" * 60) # 1. 初始值 0 crc1 = binascii.crc32(data, 0) & 0xFFFFFFFF print(f"1. Init=0x00000000, No XOR: 0x{crc1:08X}") # 2. 初始值 0xFFFFFFFF crc2 = binascii.crc32(data, 0xFFFFFFFF) & 0xFFFFFFFF print(f"2. Init=0xFFFFFFFF, No XOR: 0x{crc2:08X}") # 3. 初始值 0,最终XOR 0xFFFFFFFF crc3 = (~binascii.crc32(data, 0)) & 0xFFFFFFFF print(f"3. Init=0x00000000, XOR=0xFFFFFFFF: 0x{crc3:08X}") # 4. 初始值 0xFFFFFFFF,最终XOR 0xFFFFFFFF (标准CRC32) crc4 = (~binascii.crc32(data, 0xFFFFFFFF)) & 0xFFFFFFFF print(f"4. Init=0xFFFFFFFF, XOR=0xFFFFFFFF: 0x{crc4:08X}") print("=" * 60) print() print("STM32配置应该是:") print(" - Polynomial: 0x04C11DB7 (标准CRC-32)") print(" - Init Value: 需要确认") print(" - Input Data Format: Bytes") print(" - Input Data Inversion: None") print(" - Output Data Inversion: Disable")