MXC-A36_2024.04.17/MXC-Screen_display/components/drivers/peripheral/Inc/driver_crc.h

80 lines
2.8 KiB
C

/*
******************************************************************************
* @file driver_crc.h
* @author FreqChip Firmware Team
* @version V1.0.0
* @date 2023
* @brief Header file of CRC module.
******************************************************************************
* @attention
*
* Copyright (c) 2023 FreqChip.
* All rights reserved.
******************************************************************************
*/
#ifndef __DRIVER_CRC_H__
#define __DRIVER_CRC_H__
#include "fr30xx.h"
/** @addtogroup CRC_Registers_Section
* @{
*/
/* ################################ Register Section Start ################################ */
#define CRC_START (0x01)
#define CRC_CLEAR (0x08)
typedef struct
{
volatile uint32_t CRC_CTRL; /* Offset 0x00 */
volatile uint32_t CRC_STATUS; /* Offset 0x04 */
volatile uint32_t CRC_FIFO_DATA; /* Offset 0x08*/
volatile uint32_t CRC_RESULT; /* Offset 0x0C */
}struct_CRC_t;
#define CRC ((struct_CRC_t *)CRC_BASE)
/* ################################ Register Section END ################################## */
/**
* @}
*/
/** @addtogroup CRC_Initialization_Config_Section
* @{
*/
/* ################################ Initialization_Config Section Start ################################ */
typedef enum
{
CRC_INITVALUE_0 = 0x08u,
CRC_INITVALUE_1 = 0x18u,
CRC_MULTINOMIAL_16_1021 = 0x02u,
CRC_MULTINOMIAL_16_8005 = 0x04u,
CRC_MULTINOMIAL_32 = 0x06u,
}HAL_CRC_Accumulate;
typedef enum
{ // bit wide | polynomial | init value | Result XOR value | Input invert | Output invert
CRC8 = (CRC_INITVALUE_0), // 8 | 07 | 00 | 00 | fasle | fasle
CRC16_CCITT_FALSE = (CRC_INITVALUE_1 | CRC_MULTINOMIAL_16_1021), // 16 | 1021 | FFFF | FFFF | fasle | fasle
CRC16_XMODEM = (CRC_INITVALUE_0 | CRC_MULTINOMIAL_16_1021), // 16 | 1021 | 0000 | 0000 | fasle | fasle
CRC32_MPEG2 = (CRC_INITVALUE_1 | CRC_MULTINOMIAL_32), // 32 | 04C11DB7 | FFFFFFFF | 00000000 | fasle | fasle
}enum_CRC_MODE_SEL_t;
/* ################################ Initialization_Config Section END ################################## */
/**
* @}
*/
/* Exported functions ---------------------------------------------------------*/
/* Initial crc with initial value and mode */
void crc_init(enum_CRC_MODE_SEL_t fe_crc_mode);
/* CRC Calculate */
uint32_t crc_Calculate(uint8_t *fp_Data, uint32_t fu32_size);
#endif