Added crc files
This commit is contained in:
commit
5fc3f95ee0
31
crc8.c
Normal file
31
crc8.c
Normal file
@ -0,0 +1,31 @@
|
||||
/*
|
||||
* crc.c
|
||||
*
|
||||
* Created on: Jun 9, 2021
|
||||
* Author: user
|
||||
*/
|
||||
|
||||
#include "crc8.h"
|
||||
|
||||
/* TODO add polynomial and init value to make this function
|
||||
* generic */
|
||||
|
||||
/* Stolen from Sensirion SCD4x datasheet, section 3.11 */
|
||||
uint8_t crc8_calculate(const uint8_t *data, uint16_t count)
|
||||
{
|
||||
uint16_t current_byte;
|
||||
uint8_t crc = CRC8_INIT;
|
||||
uint8_t crc_bit;
|
||||
/* calculates 8-Bit checksum with given polynomial */
|
||||
for (current_byte = 0; current_byte < count; ++current_byte) {
|
||||
crc ^= (data[current_byte]);
|
||||
for(crc_bit = 8; crc_bit > 0; --crc_bit) {
|
||||
if (crc & 0x80) {
|
||||
crc =(crc << 1) ^ CRC8_POLYNOMIAL;
|
||||
} else {
|
||||
crc = (crc << 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
return crc;
|
||||
}
|
22
crc8.h
Normal file
22
crc8.h
Normal file
@ -0,0 +1,22 @@
|
||||
/*
|
||||
* crc.h
|
||||
*
|
||||
* Created on: Jun 9, 2021
|
||||
* Author: user
|
||||
*/
|
||||
|
||||
#ifndef INC_CRC8_H_
|
||||
#define INC_CRC8_H_
|
||||
|
||||
#include "stdint.h"
|
||||
|
||||
/*
|
||||
* Definitions & macros
|
||||
*/
|
||||
|
||||
#define CRC8_POLYNOMIAL ((uint8_t)0x31)
|
||||
#define CRC8_INIT ((uint8_t)0xFF)
|
||||
|
||||
uint8_t crc8_calculate(const uint8_t *data, uint16_t count);
|
||||
|
||||
#endif /* INC_CRC8_H_ */
|
Loading…
Reference in New Issue
Block a user