/****************************************************************************** * * @brief Cyclic redundancy check (CRC) header file. * ******************************************************************************/ #ifndef CRC_H_ #define CRC_H_ #ifdef __cplusplus extern "C" { #endif /****************************************************************************** * Includes ******************************************************************************/ /****************************************************************************** * Constants ******************************************************************************/ /****************************************************************************** * Macros ******************************************************************************/ /****************************************************************************** * CRC control bit definition * *//*! @addtogroup crc_controlbit * @{ *******************************************************************************/ /*! * @brief CRC control register bit definition. * */ #define CRC_WIDTH_16BIT 0 /*!< select CRC16 protocol */ #define CRC_WIDTH_32BIT 1 /*!< select CRC32 protocol */ #define CRC_DATA_SEED 1 /*!< Write CRC Data Register are seed */ #define CRC_DATA_DATA 0 /*!< Write CRC Data Register are data */ #define CRC_READ_COMPLETE 1 /*!< Invert or complement read CRC Data register */ #define CRC_READ_NONE 0 /*!< No XOR on reading */ #define CRC_READ_TRANSPOSE_NONE 0 /*!< No transposition in read */ #define CRC_READ_TRANSPOSE_BIT 1 /*!< only bits in bytes are transposed in read */ #define CRC_READ_TRANSPOSE_ALL 2 /*!< both bits in bytes and bytes are transposed in read */ #define CRC_READ_TRANSPOSE_BYTE 3 /*!< only bytes are transposed in read */ #define CRC_WRITE_TRANSPOSE_NONE 0 /*!< No transposition write */ #define CRC_WRITE_TRANSPOSE_BIT 1 /*!< only bits in bytes are transposed in write */ #define CRC_WRITE_TRANSPOSE_ALL 2 /*!< both bits in bytes and bytes are transposed in write */ #define CRC_WRITE_TRANSPOSE_BYTE 3 /*!< only bytes are transposed in write */ /*! @} End of crc_controlbit */ /****************************************************************************** * Types ******************************************************************************/ /* CRC configuration structure */ /****************************************************************************** * CRC Configuration Structure type. * *//*! @addtogroup crc_config_type * @{ *******************************************************************************/ /*! * @brief CRC Configuration Structure. * */ typedef struct { uint8_t bWidth : 1; /*!< 1: 32-bit CRC protocol , 0: 16-bit CRC protocol */ uint8_t bDataType : 1; /*!< 1: write seed , 0: write data */ uint8_t bFinalXOR : 1; /*!< 1: Invert or complement read , 0: No XOR on reading */ uint8_t bRESERVED : 1; /*!< reserved bit */ uint8_t bTransposeReadType : 2; /*!< type of transpose For read, see reference manual */ uint8_t bTransposeWriteType : 2; /*!< type of transpose For write, see reference manual */ uint32_t u32PolyData ; /*!< 32bit or 16-biy poly data */ } CRC_ConfigType, *CRC_ConfigPtr ; /*! @} End of crc_config_type */ /****************************************************************************** * Global variables ******************************************************************************/ /****************************************************************************** * CRC API list * *//*! @addtogroup crc_api_list * @{ *******************************************************************************/ /****************************************************************************** * Global functions ******************************************************************************/ void CRC_Init(CRC_ConfigType *pConfig); uint32_t CRC_Cal16(uint32_t u32Seed, uint8_t *msg, uint32_t u32SizeBytes); uint32_t CRC_Cal32(uint32_t u32Seed, uint8_t *msg, uint32_t u32SizeBytes); void CRC_DeInit(void); /*! @} End of crc_api_list */ #ifdef __cplusplus } #endif #endif /* CRC_H_ */