CRC计算选择
CRC即循环冗余校验码(Cyclic Redundancy Check):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。CRC算法参数模型解释:
POLY:生成项的简写,以16进制表示。例如:CRC-32即是0x04C11DB7,忽略了最高位的"1",即完整的生成项是0x104C11DB7。
INIT:这是算法开始时寄存器(crc)的初始化预置值,十六进制表示。
REFIN:待测数据的每个字节是否按位反转,True或False。
REFOUT:在计算后之后,异或输出之前,整个数据是否按位反转,True或False。
XOROUT:计算结果与此参数异或后得到最终的CRC值。
国民芯片的硬件CRC仅支持BUYPASS模式,其他模式比如MODBUS,可以自己添加软件代码进行计算。
AlgorithmCheckPolyInitRefInRefOutXorOut
CRC-16/ARC
0xBB3D0x80050x0000TRUETRUE0x0000
CRC-16/AUG-CCITT
0xE5CC0x10210x1D0FFALSEFALSE0x0000
CRC-16/BUYPASS
0xFEE80x80050x0000FALSEFALSE0x0000
CRC-16/CCITT-FALSE
0x29B10x10210xFFFFFALSEFALSE0x0000
CRC-16/CDMA2000
0x4C060xC8670xFFFFFALSEFALSE0x0000
CRC-16/DDS-110
0x9ECF0x80050x800DFALSEFALSE0x0000
CRC-16/DECT-R
0x007E0x05890x0000FALSEFALSE0x0001
CRC-16/DECT-X
0x007F0x05890x0000FALSEFALSE0x0000
CRC-16/DNP
0xEA820x3D650x0000TRUETRUE0xFFFF
CRC-16/EN-13757
0xC2B70x3D650x0000FALSEFALSE0xFFFF
CRC-16/GENIBUS
0xD64E0x10210xFFFFFALSEFALSE0xFFFF
CRC-16/KERMIT
0x21890x10210x0000TRUETRUE0x0000
CRC-16/MAXIM
0x44C20x80050x0000TRUETRUE0xFFFF
CRC-16/MCRF4XX
0x6F910x10210xFFFFTRUETRUE0x0000
CRC-16/MODBUS
0x4B370x80050xFFFFTRUETRUE0x0000
CRC-16/RIELLO
0x63D00x10210xB2AATRUETRUE0x0000
CRC-16/T10-DIF
0xD0DB0x8BB70x0000FALSEFALSE0x0000
CRC-16/TELEDISK
0x0FB30xA0970x0000FALSEFALSE0x0000
CRC-16/TMS37157
0x26B10x10210x89ECTRUETRUE0x0000
CRC-16/USB
0xB4C80x80050xFFFFTRUETRUE0xFFFF
CRC-16/X-25
0x906E0x10210xFFFFTRUETRUE0xFFFF
CRC-16/XMODEM
0x31C30x10210x0000FALSEFALSE0x0000
CRC-A
0xBF050x10210xC6C6TRUETRUE0x0000
页:
[1]