HPM SDK
HPMicro Software Development Kit
hpm_crc_drv.h File Reference
#include "hpm_common.h"
#include "hpm_crc_regs.h"

Go to the source code of this file.

Data Structures

struct  crc_channel_config
 Channel config. More...
 

Macros

#define CRC_POLY_WIDTH_4   (4U)
 
#define CRC_POLY_WIDTH_5   (5U)
 
#define CRC_POLY_WIDTH_6   (6U)
 
#define CRC_POLY_WIDTH_7   (7U)
 
#define CRC_POLY_WIDTH_8   (8U)
 
#define CRC_POLY_WIDTH_16   (16U)
 
#define CRC_POLY_WIDTH_24   (24U)
 
#define CRC_POLY_WIDTH_32   (32U)
 
#define CRC_REG_WRITE8(addr, data)
 
#define CRC_REG_WRITE16(addr, data)
 
#define CRC_REG_WRITE32(addr, data)
 

Typedefs

typedef enum crc_preset_enum crc_preset_t
 CRC preset definitions. More...
 
typedef enum crc_refin_enum crc_refin_t
 CRC Refin definitions. More...
 
typedef enum crc_refout_enum crc_refout_t
 CRC Refout definitions. More...
 
typedef enum crc_in_byte_order_enum crc_in_byte_order_t
 crc input data stream byte order definitions. More...
 
typedef struct crc_channel_config crc_channel_config_t
 Channel config. More...
 

Enumerations

enum  crc_preset_enum {
  crc_preset_none = 0 , crc_preset_crc32 , crc_preset_crc32_autosar , crc_preset_crc16_ccitt ,
  crc_preset_crc16_xmodem , crc_preset_crc16_modbus , crc_preset_crc16_dnp , crc_preset_crc16_x25 ,
  crc_preset_crc16_usb , crc_preset_crc16_maxim , crc_preset_crc16_ibm , crc_preset_crc8_maxim ,
  crc_preset_crc8_rohc , crc_preset_crc8_itu , crc_preset_crc8 , crc_preset_crc5_usb
}
 CRC preset definitions. More...
 
enum  crc_refin_enum { crc_refin_false = 0 , crc_refin_true = 1 }
 CRC Refin definitions. More...
 
enum  crc_refout_enum { crc_refout_false = 0 , crc_refout_true = 1 }
 CRC Refout definitions. More...
 
enum  crc_in_byte_order_enum { crc_in_byte_order_lsb = 0 , crc_in_byte_order_msb = 1 }
 crc input data stream byte order definitions. More...
 

Functions

void crc_get_default_channel_config (crc_channel_config_t *cfg)
 Get default channel config. More...
 
hpm_stat_t crc_setup_channel_config (CRC_Type *ptr, uint32_t ch_index, crc_channel_config_t *cfg)
 Setup CRC channel. More...
 
static void crc_calc_byte (CRC_Type *ptr, uint32_t ch_index, uint8_t data)
 Calculate one byte data crc. More...
 
void crc_calc_block_bytes (CRC_Type *ptr, uint32_t ch_index, uint8_t *pbuffer, uint32_t length)
 Calculate length bytes data block crc. More...
 
static void crc_calc_half_word (CRC_Type *ptr, uint32_t ch_index, uint16_t data)
 Calculate half-word data crc. More...
 
void crc_calc_block_half_words (CRC_Type *ptr, uint32_t ch_index, uint16_t *pbuffer, uint32_t length)
 Calculate length half-words data block crc. More...
 
static void crc_calc_word (CRC_Type *ptr, uint32_t ch_index, uint32_t data)
 Calculate word data crc. More...
 
void crc_calc_block_words (CRC_Type *ptr, uint32_t ch_index, uint32_t *pbuffer, uint32_t length)
 Calculate length words data block crc. More...
 
void crc_calc_large_block_fast (CRC_Type *ptr, uint32_t ch_index, uint8_t *pbuffer, uint32_t length)
 Fast calculate length bytes large data block crc. More...
 
static uint32_t crc_get_result (CRC_Type *ptr, uint32_t ch_index)
 Get CRC result. More...