wow-crc文件说明

wow-crc文件说明

  • 项目地址:https://gitee.com/wow-iot/wow-iot7
  • 本文件的的功能实现crc-8、crc-16、crc-32各种模式下的计算。

crc-8计算

计算模式包括:
CRC-8 x8+x2+x+1
CRC-8/ITU x8+x2+x+1
CRC-8/ROHC x8+x2+x+1
CRC-8/MAXIM x8+x5+x4+1

 uint8_t wow_crc8(uint8_t *pu8Data, uint32_t u32Size)
{
	uint8_t wCRCin = 0x00;
	uint8_t wCPoly = 0x07;
	int i = 0;
	while (u32Size--) 	
	{
		wCRCin ^= *(pu8Data++);
		for(i = 0;i < 8;i++)
		{
			if(wCRCin & 0x80)
				wCRCin = (wCRCin << 1) ^ wCPoly;
			else
				wCRCin = wCRCin << 1;
		}
	}
	return (wCRCin);
}

crc-16计算

计算模式包括:
CRC-16/CCITT x16+x12+x5+1
CRC-16/XMODEM x16+x12+x5+1
CRC-16/X25 x16+x12+x5+1
CRC-16/IBM x16+x15+x2+1
CRC-16/MAXIM x16+x15+x2+1
CRC-16/USB x16+x15+x2+1
CRC-16/DNP x16+x13+x12+x11+x10+x8+x6+x5+x2+1

uint16_t wow_crc16_modbus(uint8_t *pu8Data, uint32_t u32Size)
{
	uint16_t wCRCin = 0xFFFF;
	uint16_t wCPoly = 0x8005;
	int i = 0;
	
	InvertUint16(&wCPoly,&wCPoly);
	while (u32Size--) 	
	{
		wCRCin ^= *(pu8Data++);
		for(i = 0;i < 8;i++)
		{
			if(wCRCin & 0x01)
				wCRCin = (wCRCin >> 1) ^ wCPoly;
			else
				wCRCin = wCRCin >> 1;
		}
	}
	return (wCRCin);
}

crc-32计算

计算模式包括:
CRC-32 x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1
CRC-32/MPEG-2 x32+x26+x23+x22+x16+x12+x11+x10+x8+x7+x5+x4+x2+x+1

uint32_t wow_crc32(uint8_t *pu8Data, uint32_t u32Size)
{
	uint32_t wCRCin = 0xFFFFFFFF;
	uint32_t wCPoly = 0x04C11DB7;
 	int i = 0;
	
	InvertUint32(&wCPoly,&wCPoly);
	while (u32Size--) 	
	{
		wCRCin ^= *(pu8Data++);
		for(i = 0;i < 8;i++)
		{
			if(wCRCin & 0x01)
				wCRCin = (wCRCin >> 1) ^ wCPoly;
			else
				wCRCin = wCRCin >> 1;
		}
	}
	return (wCRCin ^ 0xFFFFFFFF) ;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值