lzx600000 2023-05-24 22:06 采纳率: 20%
浏览 167
已结题

CRC校验码多项式问题

CRC校验算法,这是一段从设备上采集的一段MSB数据:
1 2 3 4 5 6 7 8 9 10 11
41 C0 0 0 0 0 0 0 0 0 48
41 C0 80 0 0 0 0 0 0 0 38
41 C0 80 0 0 0 0 0 0 0 38
41 C0 40 0 0 0 0 0 0 0 70
41 C0 40 0 0 0 0 0 0 0 70
41 C0 C0 0 0 0 0 0 0 0 0
41 C0 C0 0 0 0 0 0 0 0 0
41 C0 20 0 0 0 0 0 0 0 F8
41 C0 20 0 0 0 0 0 0 0 F8
41 C0 A0 0 0 0 0 0 0 0 88
41 C0 A0 0 0 0 0 0 0 0 88
41 C0 60 0 0 0 0 0 0 0 C0
41 C0 60 0 0 0 0 0 0 0 C0
41 C0 E0 0 0 0 0 0 0 0 B0
41 C0 E0 0 0 0 0 0 0 0 B0
41 C0 10 0 0 0 0 0 0 0 10
41 C0 10 0 0 0 0 0 0 0 10
41 C0 90 0 0 0 0 0 0 0 60
41 C0 90 0 0 0 0 0 0 0 60
41 C0 50 0 0 0 0 0 0 0 28
41 C0 50 0 0 0 0 0 0 0 28
41 C0 D0 0 0 0 0 0 0 0 58
41 C0 D0 0 0 0 0 0 0 0 58
41 C0 30 0 0 0 0 0 0 0 A0
41 C0 30 0 0 0 0 0 0 0 A0
41 C0 B0 0 0 0 0 0 0 0 D0
41 C0 B0 0 0 0 0 0 0 0 D0
41 C0 70 0 0 0 0 0 0 0 98
41 C0 70 0 0 0 0 0 0 0 98
41 C0 F0 0 0 0 0 0 0 0 E8
41 C0 F0 0 0 0 0 0 0 0 E8

下面是一段LSB采集的数据
82 3 0 0 0 0 0 0 0 0 12
82 3 1 0 0 0 0 0 0 0 1C
82 3 1 0 0 0 0 0 0 0 1C
82 3 2 0 0 0 0 0 0 0 0E
82 3 2 0 0 0 0 0 0 0 0E
82 3 3 0 0 0 0 0 0 0 0
82 3 3 0 0 0 0 0 0 0 0
82 3 4 0 0 0 0 0 0 0 1F
82 3 4 0 0 0 0 0 0 0 1F
82 3 5 0 0 0 0 0 0 0 11
82 3 5 0 0 0 0 0 0 0 11
82 3 6 0 0 0 0 0 0 0 3
82 3 6 0 0 0 0 0 0 0 3
82 3 7 0 0 0 0 0 0 0 0D
82 3 7 0 0 0 0 0 0 0 0D
82 3 8 0 0 0 0 0 0 0 8
82 3 8 0 0 0 0 0 0 0 8
82 3 9 0 0 0 0 0 0 0 6
82 3 9 0 0 0 0 0 0 0 6
82 3 0A 0 0 0 0 0 0 0 14
82 3 0A 0 0 0 0 0 0 0 14
82 3 0B 0 0 0 0 0 0 0 1A
82 3 0B 0 0 0 0 0 0 0 1A
82 3 0C 0 0 0 0 0 0 0 5
82 3 0C 0 0 0 0 0 0 0 5
82 3 0D 0 0 0 0 0 0 0 0B
82 3 0D 0 0 0 0 0 0 0 0B
82 3 0E 0 0 0 0 0 0 0 19
82 3 0E 0 0 0 0 0 0 0 19
82 3 0F 0 0 0 0 0 0 0 17
82 3 0F 0 0 0 0 0 0 0 17
82 3 10 0 0 0 0 0 0 0 13
82 3 10 0 0 0 0 0 0 0 13
82 3 11 0 0 0 0 0 0 0 1D
82 3 11 0 0 0 0 0 0 0 1D
82 3 12 0 0 0 0 0 0 0 0F
82 3 12 0 0 0 0 0 0 0 0F
82 3 13 0 0 0 0 0 0 0 1
82 3 13 0 0 0 0 0 0 0 1
82 3 14 0 0 0 0 0 0 0 1E
82 3 14 0 0 0 0 0 0 0 1E
82 3 15 0 0 0 0 0 0 0 10
82 3 15 0 0 0 0 0 0 0 10
82 3 16 0 0 0 0 0 0 0 2
82 3 16 0 0 0 0 0 0 0 2
82 3 17 0 0 0 0 0 0 0 0C
82 3 17 0 0 0 0 0 0 0 0C
82 3 18 0 0 0 0 0 0 0 9
82 3 18 0 0 0 0 0 0 0 9
82 3 19 0 0 0 0 0 0 0 7

最后一个字节为校验码,可能是帧校验序列码FCS,谁能帮忙分析一下这个校验码的规律

  • 写回答

13条回答 默认 最新

  • qllaoda 2023-05-29 16:02
    关注

    似乎找到了。是5bit的CRC,多项式对应的值是0x0B,计算结果后面用3个0补足为8bit,所有数据都通过这个在线CRC计算网页验证过


    img

    #include <stdio.h>
    #include <stdint.h>
    
    uint8_t crc5(const uint8_t *data, size_t length) {
        uint8_t crc = 0x00;
        for (size_t i = 0; i < length; i++) {
            crc ^= data[i];
            for (size_t j = 0; j < 8; j++) {
                if (crc & 0x80) {
                    crc = (crc << 1) ^ 0x58; //// 0x58 = 0x0B<<(8-5)
                } else {
                    crc <<= 1;
                }
            }
        }
        return crc ;
    }
     
    
    int main() {
        uint8_t data1[] = {0x41, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
        uint8_t data2[] = {0x41, 0xC0, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
        uint8_t crc1;
        uint8_t crc2;
     
        crc1 = crc5(data1, sizeof(data1));
        crc2 = crc5(data2, sizeof(data2));
         printf("CRC5: 0x%02X - 0x%02X\n", crc1, crc2);
        return 0;
    }
    
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
    1人已打赏
查看更多回答(12条)

报告相同问题?

问题事件

  • 系统已结题 6月6日
  • 已采纳回答 5月29日
  • 修改了问题 5月27日
  • 修改了问题 5月25日
  • 展开全部

悬赏问题

  • ¥15 Python中的request,如何使用ssr节点,通过代理requests网页。本人在泰国,需要用大陆ip才能玩网页游戏,合法合规。
  • ¥100 为什么这个恒流源电路不能恒流?
  • ¥15 有偿求跨组件数据流路径图
  • ¥15 写一个方法checkPerson,入参实体类Person,出参布尔值
  • ¥15 我想咨询一下路面纹理三维点云数据处理的一些问题,上传的坐标文件里是怎么对无序点进行编号的,以及xy坐标在处理的时候是进行整体模型分片处理的吗
  • ¥15 CSAPPattacklab
  • ¥15 一直显示正在等待HID—ISP
  • ¥15 Python turtle 画图
  • ¥15 stm32开发clion时遇到的编译问题
  • ¥15 lna设计 源简并电感型共源放大器