A31L12x F/W Packages  1.4.0
ABOV Cortex-M0+ Core based MCUs Integrated Driver
A31L12x_hal_crc.h
Go to the documentation of this file.
1 /***************************************************************************//****************************************************************************/
34 
35 #ifndef _CRC_H_
36 #define _CRC_H_
37 
38 #include "A31L12x.h"
39 #include "A31L12x_hal_aa_types.h"
40 
41 #ifdef __cplusplus
42 extern "C" {
43 #endif
44 
45 //******************************************************************************
46 // Constant
47 //******************************************************************************
48 
49 // User/Auto Mode Selection Control
50 /*
51 #define CRC_USER_M (0x0uL << 7)
52 #define CRC_AUTO_M (0x1uL << 7)
53 */
54 #define MODS_UserMode (CRC_CR_MODS_UserMode << CRC_CR_MODS_Pos)
55 #define MODS_AutoMode (CRC_CR_MODS_AutoMode << CRC_CR_MODS_Pos)
56 
57 // CRC/Checksum Result Data Register (CRC_RLT) Initialization Control
58 /*
59 #define CRC_RLTCLR (0x1uL << 6)
60 */
61 #define RLTCLR_NoEffect (CRC_CR_RLTCLR_NoEffect << CRC_CR_RLTCLR_Pos)
62 #define RLTCLR_Init (CRC_CR_RLTCLR_Init << CRC_CR_RLTCLR_Pos)
63 
64 // CRC/Checksum Selection Control
65 /*
66 #define CRC_CRC (0x0uL << 5)
67 #define CRC_CHECKSUM (0x1uL << 5)
68 */
69 #define MDSEL_CRC (CRC_CR_MDSEL_CRC << CRC_CR_MDSEL_Pos)
70 #define MDSEL_Checksum (CRC_CR_MDSEL_Checksum << CRC_CR_MDSEL_Pos)
71 
72 // Polynomial Selection Control (CRC only)
73 /*
74 #define CRC_CCITT (0x0uL << 4)
75 #define CRC_16 (0x1uL << 4)
76 */
77 #define POLYS_CRC16_CCITT (CRC_CR_POLYS_CRC16_CCITT << CRC_CR_POLYS_Pos)
78 #define POLYS_CRC16 (CRC_CR_POLYS_CRC16 << CRC_CR_POLYS_Pos)
79 #define POLYS_CRC8 (CRC_CR_POLYS_CRC8 << CRC_CR_POLYS_Pos)
80 #define POLYS_CRC32 (CRC_CR_POLYS_CRC32 << CRC_CR_POLYS_Pos)
81 
82 // CRC/Checksum Start Address Auto Increment Control (User mode only)
83 /*
84 #define CRC_NOINC (0x0uL << 3)
85 #define SARINC_Inc (0x1uL << 3)
86 */
87 #define SARINC_Disable (CRC_CR_SARINC_Disable << CRC_CR_SARINC_Pos)
88 #define SARINC_Enable (CRC_CR_SARINC_Enable << CRC_CR_SARINC_Pos)
89 
90 // First Shifted-in Selection Control (CRC only)
91 /*
92 #define CRC_MSB (0x0uL << 1)
93 #define CRC_LSB (0x1uL << 1)
94 */
95 #define FIRSTBS_msbFirst (CRC_CR_FIRSTBS_msbFirst << CRC_CR_FIRSTBS_Pos)
96 #define FIRSTBS_lsbFirst (CRC_CR_FIRSTBS_lsbFirst << CRC_CR_FIRSTBS_Pos)
97 
98 // Input Data Size Selection Control
99 #define INSIZE_32Bit (CRC_CR_INSIZE_32Bit << CRC_CR_INSIZE_Pos)
100 #define INSIZE_16Bit (CRC_CR_INSIZE_16Bit << CRC_CR_INSIZE_Pos)
101 #define INSIZE_8Bit (CRC_CR_INSIZE_8Bit << CRC_CR_INSIZE_Pos)
102 
103 // Input Data Complement Control
104 #define INCOMP_Disable (CRC_CR_INCOMP_Disable << CRC_CR_INCOMP_Pos)
105 #define INCOMP_Enable (CRC_CR_INCOMP_Enable << CRC_CR_INCOMP_Pos)
106 
107 //******************************************************************************
108 // Macro
109 //******************************************************************************
110 
111 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
117 #define CRC_InData( u32InData ) (CRC->IN = u32InData)
118 
119 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
123 #define CRCRun() { CRC->CR_b.CRCRUN = 1; NOP(); NOP(); NOP(); NOP(); NOP(); }
124 
125 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
129 #define CRCStop() (CRC->CR_b.CRCRUN = 0)
130 
131 /*-------------------------------------------------------------------------*//*-------------------------------------------------------------------------*/
135 #define ChkCRCFinish() (CRC->CR_b.CRCRUN)
136 
137 //******************************************************************************
138 // Function
139 //******************************************************************************
140 
143 
144 HAL_Status_Type HAL_CRC_SetAddress( uint32_t u32SAdr, uint32_t u32EAdr, uint32_t u32IniD );
145 
146 uint32_t HAL_CRC_ConfigAutoMode( uint32_t MDSEL, uint32_t u32POLY, uint32_t u32FirstBit, uint32_t InputDataSize, uint32_t InputDataComplement );
147 HAL_Status_Type HAL_CRC_ConfigUserMode( uint32_t MDSEL, uint32_t u32POLY, uint32_t u32AdrInc, uint32_t u32FirstBit, uint32_t InputDataSize, uint32_t InputDataComplement );
148 uint32_t HAL_CRC_UserInput( uint32_t u32Input );
149 
150 #ifdef __cplusplus
151 }
152 #endif
153 
154 #endif /* _CRC_H_ */
155 
HAL_Status_Type HAL_CRC_Init(void)
Initialize CRC/Checksum peripheral.
HAL_Status_Type HAL_CRC_ConfigUserMode(uint32_t MDSEL, uint32_t u32POLY, uint32_t u32AdrInc, uint32_t u32FirstBit, uint32_t InputDataSize, uint32_t InputDataComplement)
CRC/Checksum User Mode Start.
HAL_Status_Type HAL_CRC_SetAddress(uint32_t u32SAdr, uint32_t u32EAdr, uint32_t u32IniD)
Set CRC/Checksum Address.
Contains the ABOV typedefs for C standard types. It is intended to be used in ISO C conforming develo...
HAL_Status_Type
uint32_t HAL_CRC_UserInput(uint32_t u32Input)
CRC/Checksum Input on User Mode.
HAL_Status_Type HAL_CRC_DeInit(void)
DeInitialize CRC peripheral.
uint32_t HAL_CRC_ConfigAutoMode(uint32_t MDSEL, uint32_t u32POLY, uint32_t u32FirstBit, uint32_t InputDataSize, uint32_t InputDataComplement)
CRC/Checksum Auto Mode Start and Result.