diff --git a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Abstraction.h b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Abstraction.h index 406e92c..8b1fdca 100644 --- a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Abstraction.h +++ b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_Abstraction.h @@ -8,10 +8,7 @@ #ifndef INC_ADBMS_ABSTRACTION_H_ #define INC_ADBMS_ABSTRACTION_H_ -#include "ADBMS_CMD_MAKROS.h" #include "ADBMS_Driver.h" -#include "ADBMS_LL_Driver.h" -#include "main.h" #define mV_from_ADBMS6830(x) (((((int16_t)(x))) * 0.150) + 1500) diff --git a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_LL_Driver.h b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_LL_Driver.h index 73a0156..cb785ce 100644 --- a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_LL_Driver.h +++ b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Inc/ADBMS_LL_Driver.h @@ -9,9 +9,7 @@ #define ADBMS_LL_DRIVER_H_ #include "config_ADBMS6830.h" -#include "stm32h7xx_hal.h" #include -#define TARGET_STM32 uint8_t adbmsDriverInit(SPI_HandleTypeDef* hspi); diff --git a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_LL_Driver.c b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_LL_Driver.c index 8d4a2b9..6f2520b 100644 --- a/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_LL_Driver.c +++ b/AMS_Master_Code/Core/Lib/ADBMS6830B_Driver/Core/Src/ADBMS_LL_Driver.c @@ -15,6 +15,13 @@ #define INITIAL_COMMAND_PEC 0x0010 #define INITIAL_DATA_PEC 0x0010 +// CRC polynomial constants +#define CRC15_POLY 0xC599 +#define CRC10_POLY 0x8F +#define CRC15_REMAINDER_MASK 0x4000 +#define CRC10_REMAINDER_MASK 0x200 +#define CRC10_RESULT_MASK 0x3FF + SPI_HandleTypeDef* adbmsspi; uint8_t adbmsDriverInit(SPI_HandleTypeDef* hspi) { @@ -49,8 +56,8 @@ static uint16_t computeCRC15(const uint8_t* data, size_t length) { for (size_t i = 0; i < length; i++) { remainder ^= (data[i] << 7); for (int b = 0; b < 8; b++) { - if (remainder & 0x4000) { - remainder = (uint16_t)((remainder << 1) ^ 0xC599); + if (remainder & CRC15_REMAINDER_MASK) { + remainder = (uint16_t)((remainder << 1) ^ CRC15_POLY); } else { remainder <<= 1; } @@ -81,13 +88,12 @@ static uint8_t checkCommandPEC(uint8_t* data, uint8_t datalen) { static uint16_t computeCRC10(const uint8_t* data, size_t length, bool rx_cmd) { uint16_t remainder = INITIAL_DATA_PEC; - const uint16_t poly = 0x8F; for (size_t i = 0; i < length; i++) { remainder ^= (uint16_t)(data[i] << 2); for (int b = 0; b < 8; b++) { - if (remainder & 0x200) { - remainder = (uint16_t)((remainder << 1) ^ poly); + if (remainder & CRC10_REMAINDER_MASK) { + remainder = (uint16_t)((remainder << 1) ^ CRC10_POLY); } else { remainder <<= 1; } @@ -98,14 +104,14 @@ static uint16_t computeCRC10(const uint8_t* data, size_t length, bool rx_cmd) { if (rx_cmd) { remainder ^= (uint16_t)((data[length] & 0xFC) << 2); for (int b = 0; b < 6; b++) { - if (remainder & 0x200) { - remainder = (uint16_t)((remainder << 1) ^ poly); + if (remainder & CRC10_REMAINDER_MASK) { + remainder = (uint16_t)((remainder << 1) ^ CRC10_POLY); } else { remainder <<= 1; } } } - return (uint16_t)(remainder & 0x3FF); + return (uint16_t)(remainder & CRC10_RESULT_MASK); } static uint8_t calculateDataPEC(uint8_t* data, uint8_t datalen) {