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),位宽更长、检错更强、适合高速大数据
相关推荐
网络研究院7 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智7 天前
ARP代理--工作原理
运维·网络·arp·arp代理
treesforest7 天前
AI安全系统如何识别异常访问?IP风险识别正在成为关键能力
网络·人工智能·tcp/ip·安全·web安全
shushangyun_7 天前
2026年快消品B2B系统推荐:支持终端门店订货、促销政策自动化的工具?
java·运维·网络·数据库·人工智能·spring·自动化
2601_961845157 天前
粉笔行测题库|系统班|刷题
网络·百度·微信·微信公众平台·facebook·新浪微博
程序猿阿伟7 天前
《Chrome离线扩展安装的底层逻辑与场景落地指南》
服务器·网络·chrome
InHand云飞小白7 天前
无人值守站点网络困境?工业级路由器IR315破解连接难题
网络·物联网·4g·工业路由器·4g路由器·iiot·蜂窝路由器
森G7 天前
75、服务器源码解析---------云视频服务项目
linux·服务器·网络·c++·qt
江华森7 天前
TCP/IP 协议栈实战 — 7 个实验详解
网络·tcp/ip·智能路由器
酉鬼女又兒7 天前
零基础入门计算机网络运输层:端到端通信核心作用、端口号分类规则、复用分用工作机制及UDP与TCP协议全方位对比详解
网络·网络协议·tcp/ip·计算机网络·考研·udp·php