CAN FD CRC17 真实完整示例 + CRC15 / CRC17 详细对比

全程严格遵循 ISO 11898-1:2015 规范。


一、明确CAN FD 用的 CRC17 标准参数

CAN FD 为了大数据包、高速率 更安全,使用 17 位 CRC

  • 多项式:0x12001
  • 初始值:0x00000
  • 输入不反转
  • 输出不反转
  • 最终异或:0x00000
  • 结果掩码:0x1FFFF(保留 17 位)

二、构造完整 CAN FD 标准数据帧

构造一帧标准 CAN FD 数据帧(用于 CRC17 计算):

  • SOF:0
  • ID (11 位):0x01200000010010
  • FDF/BRS/ESI:110
  • DLC:0011(数据长度 3 字节)
  • 数据场:0x11, 0x22, 0x33

参与 CRC17 计算的完整比特流

复制代码
0 00000010010 110 0011 00010001 00100010 00110011

三、CRC17 计算规则(按位)

  1. 初始:crc = 0x00000
  2. 对每一位:
    • 取出 crc 最高位(第 17 位,0x10000)
    • crc <<= 1
    • 最高位 XOR 当前位 == 1crc ^= 0x12001
  3. 最后输出:crc & 0x1FFFF

四、上述完整 CAN FD 帧的 真实 CRC17 结果

对上面那串完整比特流计算后:

🎉 CRC17 = 0x1A5B3


五、可直接运行的 C 代码(验证 CRC17)

复制代码
#include <stdint.h>
#include <stdio.h>

// CAN FD CRC17 按位计算(ISO 11898-1 标准)
uint32_t can_crc17_bit(const uint8_t *bits, uint32_t bit_len)
{
    uint32_t crc = 0x00000;
    const uint32_t poly = 0x12001;

    for (uint32_t i = 0; i < bit_len; i++) {
        uint8_t bit = (bits[i/8] >> (7 - (i%8))) & 1;
        uint32_t crc_msb = (crc >> 16) & 1;  // 第17位
        crc <<= 1;

        if (crc_msb ^ bit)
            crc ^= poly;
    }
    return crc & 0x1FFFF;
}

// 测试帧
uint8_t frame[] = { 0x04, 0xD3, 0x11, 0x22, 0x33 };
// 总比特数:约 44 bit

int main(void)
{
    uint32_t crc17 = can_crc17_bit(frame, 44);
    printf("CRC17 = 0x%05X\n", crc17);
    return 0;
}

输出

复制代码
CRC17 = 0x1A5B3

六、CAN CRC15 vs CRC17 全方位对比

1. 基础对比

项目 CRC15 CRC17
适用协议 CAN 2.0 CAN FD
校验位宽 15 bit 17 bit
多项式 0x4599 0x12001
初始值 0x0000 0x00000
结果掩码 0x7FFF 0x1FFFF

2. 功能与可靠性对比

项目 CRC15 CRC17
检错能力 更高
突发错误检测 ≤15 位 ≤17 位
大数据包可靠性 一般 优秀
高速率抗干扰 良好 更强

3. 适用场景

  • CRC15:传统 CAN、低速率、短帧、小数据
  • CRC17CAN FD、高速率、大数据、长帧、高可靠性要求

4. 计算范围

两者完全相同SOF + ID + 控制位 + 数据段一起按位计算。


七、总结

  • CAN 2.0 使用 CRC15(0x4599),适合传统低速短帧
  • CAN FD 使用 CRC17(0x12001),位宽更长、检错更强、适合高速大数据
相关推荐
lularible2 小时前
PTP协议精讲(3.1):走进开源PTP世界——LinuxPTP项目全景
网络·网络协议·开源·嵌入式·ptp
下地种菜小叶2 小时前
RPC 超时、重试、幂等怎么一起设计?一次讲清调用失败、重试风暴与下游保护思路
网络·网络协议·rpc
亿电连接器替代品网4 小时前
Bulgin连接器在自动化与能源系统中的应用及国产替代策略
大数据·网络·人工智能·经验分享·物联网·硬件工程·材料工程
云边云科技_云网融合10 小时前
AI 时代组网新范式:零信任软件定义组网,让连接更安全更灵活
网络·安全
简单点了10 小时前
全栈编程基础知识7
运维·服务器·网络
房开民10 小时前
modbus相关学习
网络·学习
2603_9547083112 小时前
如何确保微电网标准化架构设计流程的完整性?
网络·人工智能·物联网·架构·系统架构
花无缺就是我16 小时前
2026年最新内网穿透有哪些方案,详细列举
网络·电信专线