PEC与CRC是否为同一协议?ADBMS6830集成中的PEC计算咨询
ADBMS6830的PEC计算方法及与CRC的关系
PEC与CRC的关系
- PEC(Packet Error Code)并非独立于CRC的全新协议,它本质是厂商定制化的CRC校验变种。
- 二者核心原理一致:都基于多项式除法的余数校验,但芯片厂商会根据自家通信链路的需求(比如ADBMS系列的电池管理串行通信场景),对CRC的参数(多项式、初始值、移位规则、结果处理等)做针对性调整,然后将这种定制后的校验码命名为PEC。
ADBMS6830的PEC计算步骤
ADBMS6830采用16位PEC,具体计算流程如下:
- 初始化:将PEC寄存器初始化为
0xFFFF - 逐字节处理数据:
- 取当前数据字节,与PEC寄存器的高8位进行异或操作,结果存回PEC寄存器的高8位
- 对PEC寄存器进行8次循环移位:
- 每次将PEC寄存器整体左移1位
- 如果移位前寄存器的最高位(第15位)为1,则将移位后的结果与多项式
0x8005进行异或 - 如果最高位为0,则直接保留移位结果
- 最终结果:所有数据字节处理完成后,PEC寄存器中的值即为计算得到的16位PEC码
- 校验逻辑:发送方将计算出的PEC码附加在数据包末尾发送;接收方对收到的数据包(不含PEC)重新计算PEC,与收到的PEC码比对,不一致则判定数据包传输错误
注意:不同型号的ADI芯片PEC参数可能存在差异,务必以目标芯片的官方数据手册为准。
内容的提问来源于stack exchange,提问作者Lucien950
相关产品推荐
相关产品推荐

