calculates CRC16 as per EN13757-4

2019-07-14 14:40发布

做个笔记:
#include "crc.h"
#include <stdint.h>
//------------------------------------------------------------------------------------------------
-------
// uint16 crcCalc(uint16 crcReg, uint8 crcData)
//
// DESCRIPTION:
// Calculates the 16-bit CRC. The function requires that the CRC_POLYNOM
// is defined, which gives the wanted CRC polynom.
//
// ARGUMENTS:
// uint8 crcData - Data to perform the CRC-16 operation on.
// uint16 crcReg - Current or initial value of the CRC calculation
//
// RETURN:
// The value returned is the 16-bit CRC (of the data supplied so far).
//------------------------------------------------------------------------------------------------
-------
uint16_t crcCalc(uint16_t crcReg, uint8_t crcData)
{
uint8_t i;
for (i = 0; i < 8; i++)
{
// If upper most bit is 1
if (((crcReg & 0x8000) >> 8) ^ (crcData & 0x80))
crcReg = (crcReg << 1) ^ CRC_POLYNOM;
else
crcReg = (crcReg << 1);
crcData <<= 1;
}
return crcReg;
}
// CRC_POLYNOM 0x3D65

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
wwppd
1楼-- · 2019-07-14 17:29
 精彩回答 2  元偷偷看……
jkl21
2楼-- · 2019-07-14 22:06
以前在FPGA上做过CRC校验,麻烦多了。
maqianqu
3楼-- · 2019-07-15 02:34
EN13757-4是什么?
dspmana
4楼-- · 2019-07-15 08:04
请问,msp430执行这个代码需要多个周期?
wwppd
5楼-- · 2019-07-15 13:03
校验的速度应该快不了。
jkl21
6楼-- · 2019-07-15 17:52
 精彩回答 2  元偷偷看……

一周热门 更多>