在嵌入式产品应用中,常常需要应对系统数据在存储或者传输过程中的完整性问题。本文来聊聊使用较为广泛的循环冗余校验技术,以及在STM32中的一些具体使用体会。
在嵌入式产品应用中,常常需要应对系统数据在存储或者传输过程中的完整性问题。所谓完整性是指数据在其生命周期中的准确性和一致性。这些数据可能存储在EEPROM/FLASH里,或者基于通信协议进行传输,它们有可能因为外界干扰或者程序错误,甚至系统入侵而导致被破坏。如果这些数据在使用前不做校验,产品功能可能失效。在一些特定领域,严重时可能会危及用户财产甚至生命安全。本文就来聊聊使用较为广泛的循环冗余校验技术,以及在STM32中的一些具体使用体会。
关于CRC校验有以下几个方面1.模2除(也就是异或)。2.多项式与二进制关系(x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0,x的最高幂次为R,转换成对应的二进制数
【例子】通过CRC-16循环冗余校验的方式实现数据传输与控制,例如控制LED灯、蜂鸣器、发送数据到上位机。由于是数据传输与控制,需要定制一个结构体、共用体方便数据识别,同时增强可读性。从数据帧格式定义中可以定义