素材来源:网络
编辑整理:strongerHuang
UART有一个奇偶校验,CAN通信有CRC校验。Modbus、MAVlink、USB等通信协议也有校验信息。
在自定义数据存储时,有经验的工程师都会添加一定校验信息。
你平时通信,或者数据存储时,你有用到校验信息吗?下面就介绍几种常见的校验算法。
一、校验和
校验和是最基本,也是嵌入式工程师最常用的一种校验算法,其实现方法很简单,简单到只有几行代码。
实现的方式方法很多,不同的编程语言,不同的应用有所不同,下面以C语言8位校验和为例:uint8_t CheckSum(uint8_t *Buf, uint8_t Len){uint8_t i = 0;uint8_t sum = 0;uint8_t checksum = 0;for(i=0; i
二、异或校验
【异或校验】与【校验和】类似,对数据进行“异或”,最终得到一个“异或值”。uint8_t CheckXOR(uint8_t *Buf, uint8_t Len){uint8_t i = 0;uint8_t x = 0;for(i=0; i
校验和、异或校验的方式有很多种,比如有的还会传入一个参数作为异或校验的值。
当然,以上代码仅供学习参考,实际应用需结合项目情况修改代码。
三、CRC校验
CRC:Cyclic Redundancy Check,即循环冗余校验。
CRC是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输