比较常见是就是你说的CRC16,还有更简单的异或效验、累加和校验
串行通讯里CRC16算比较复杂和安全的了,一般就是简单是校验就可以。
校验有很多方式的,CRC16 、CRC32 、ADD8 、ADD16 、XOR8之类的。
常用的数据校验方法有
奇偶校验(Parity Check)
bcc异或校验法(block check character)
crc循环冗余校验(Cyclic Redundancy Check)
md5校验和数字签名
海明码校验
这种算法都是协议制定者自行定义的,目前我见过的校验包括
CRC16 CRC32
BCC校验
文件的md5校验
对于串行通讯,比如IIC,SPI,CAN,RS485,RS232等等用的比较多的算法是CRC校验,分为CRC8,CRC16,CRC32等等,现在大部分的MCU都带有硬件CRC模块,计算起来也很方便,还不用占用过多的CPU资源,只需给定合适的多项式即可。
在UART通讯中最常见的是奇偶校验,但是大部分情况下都是用的8位无校验的。