从TI官网资料DN502看,采用的是CRC16 (x16 + x15 + x2 + 1) ,即CRC-16(IBM)格式,以下是程序代码:
#define CRC16_POLY 0x8005
UINT16 culCalcCRC(BYTE crcData, UINT16 crcReg) {
UINT8 i;
for (i = 0; i < 8; i++) {
if (((crcReg & 0x8000) >> 8) ^ (crcData & 0x80))
crcReg = (crcReg << 1) ^ CRC16_POLY;
else
crcReg = (crcReg << 1);
crcData <<= 1;
}
return crcReg;
}// culCalcCRC
//—————————————————————-
// Example of Usage
#define CRC_INIT 0xFFFF
UINT8 txBuffer = {0, 1, 2, 3, 4, 5};
UINT16 checksum;
UINT8 i;
checksum = CRC_INIT; // Init value for CRC calculation
for (i = 0; i < sizeof(txBuffer); i++)
checksum = culCalcCRC(txBuffer[i], checksum);
请问对于数组 data[8]={0xFE,0x01,0x02,0x03,0x02,0x0C,0x1A,0x43};
其CRC16计算的中间过程的checksum,分别是多少?我用程序跑下来的结果,差异太大,已经不知道CRC-16(IBM)的基准值是多少了?
另外,请问有无CC1101的CRC16计算软件提供?
Peter_Zheng:
请参看www.ti.com/…/getliterature.tsp 关于CRC部分的解释。