打印

MSP 学院 – CRC 简介

[复制链接]
1071|25
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xyz549040622|  楼主 | 2023-5-21 16:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
tpgf| | 2023-6-6 11:49 | 只看该作者
CRC即循环冗余校验码:是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定

使用特权

评论回复
板凳
nawu| | 2023-6-6 12:16 | 只看该作者
循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性

使用特权

评论回复
地板
aoyi| | 2023-6-6 13:15 | 只看该作者
CRC根本思想就是先在要发送的帧后面附加一个数(这个就是用来校验的校验码,但要注意,这里的数也是二进制序列的,下同),生成一个新帧发送给接收端

使用特权

评论回复
5
zljiu| | 2023-6-6 14:08 | 只看该作者
CRC校验中有两个关键点,一是预先确定一个发送送端和接收端都用来作为除数的二进制比特串(或多项式),可以随机选择,也可以使用国际标准,但是最高位和最低位必须为1;二是把原始帧与上面计算出的除数进行模2除法运算,计算出CRC码。

使用特权

评论回复
6
gwsan| | 2023-6-6 14:22 | 只看该作者
附加的数要使所生成的新帧能与发送端和接收端共同选定的某个特定数整除

使用特权

评论回复
7
tfqi| | 2023-6-6 14:41 | 只看该作者
模2除法与算术除法类似,但每一位除的结果不影响其它位,即不向上一位借位,所以实际上就是异或。在循环冗余校验码(CRC)的计算中有应用到模2除法。

使用特权

评论回复
8
caigang13| | 2023-6-8 23:07 | 只看该作者
最实用的校验算法CRC

使用特权

评论回复
9
chenjun89| | 2023-6-8 23:42 | 只看该作者
一看标题还以为是什么学院,原来是MSP430的代号。

使用特权

评论回复
10
wwppd| | 2023-6-10 13:34 | 只看该作者
crc算法在单片机上的实现              

使用特权

评论回复
11
pentruman| | 2023-6-10 16:59 | 只看该作者
CRC 校验因其简单、快速、易于实现等特点,广泛应用于数据通信领域。

使用特权

评论回复
12
pixhw| | 2023-6-10 17:18 | 只看该作者
常用的数据校验方法,它可以检测出数据在传输过程中出现的错误。

使用特权

评论回复
13
麻花油条| | 2023-6-11 10:24 | 只看该作者
这种数据校验方法很实用,方便快捷

使用特权

评论回复
14
usysm| | 2023-6-13 22:50 | 只看该作者
不同的应用场景需要选择不同的 CRC 标准,如CRC-8、CRC-16和CRC-32等。

使用特权

评论回复
15
zerorobert| | 2023-6-13 22:56 | 只看该作者
,CRC 校验会在待传输的数据末尾添加N位校验码,使得整个数据帧长度为k+N位。

使用特权

评论回复
16
kkzz| | 2023-6-14 09:35 | 只看该作者
MSP 单片机有没有crc寄存器

使用特权

评论回复
17
hilahope| | 2023-6-14 09:50 | 只看该作者
#define POLYNOMIAL   0x1021      // CRC生成多项式
#define DATA_LEN    20          // 数据长度
uint8_t data[DATA_LEN] = {...}; // 待校验数据
uint16_t crc_received;           // 接收到的CRC校验码

uint16_t calc_crc16(uint8_t *data, uint8_t len)
{
    uint16_t crc = 0xFFFF;
    for (uint8_t i = 0; i < len; i++) {
        crc ^= (uint16_t)data[i] << 8;
        for (uint8_t j = 0; j < 8; j++) {
            if (crc & 0x8000) {
                crc = (crc << 1) ^ POLYNOMIAL;
            } else {
                crc <<= 1;
            }
        }
    }
    return crc;
}

if (calc_crc16(data, DATA_LEN) == crc_received) {
    // 数据正确
} else {
    // 数据错误
}

使用特权

评论回复
18
wengh2016| | 2023-6-14 10:36 | 只看该作者
单片机中的CRC技术是一种非常重要的数据校验技术,能够在数据传输过程中自动检测错误并纠正。

使用特权

评论回复
19
uiint| | 2023-6-14 12:41 | 只看该作者
CRC算法将原始数据看作一个二进制数,再与一个预设的生成多项式进行除法运算,得到余数即为校验码。在接收端,同样使用相同的生成多项式对接收到的数据进行除法运算,如果余数为0,则说明接收到的数据没有发生错误,否则说明数据发生了错位或改变等错误。

使用特权

评论回复
20
lihuami| | 2023-6-14 12:56 | 只看该作者
用 汇编语言 实现CRC校验码              

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:qq群: 嵌入式系统arm初学者 224636155←← +→→点击-->小 i 精品课全集,21ic公开课~~←←→→点击-->小 i 精品课全集,给你全方位的技能策划~~←←

2813

主题

19300

帖子

105

粉丝