1 /**************************************************************************//**
\r
4 * @brief Cyclic Redundancy Check(CRC) driver header file
\r
6 * @copyright (C) 2016 Nuvoton Technology Corp. All rights reserved.
\r
7 *****************************************************************************/
\r
17 /** @addtogroup Standard_Driver Standard Driver
\r
21 /** @addtogroup CRC_Driver CRC Driver
\r
25 /** @addtogroup CRC_EXPORTED_CONSTANTS CRC Exported Constants
\r
28 /*---------------------------------------------------------------------------------------------------------*/
\r
29 /* CRC Polynomial Mode Constant Definitions */
\r
30 /*---------------------------------------------------------------------------------------------------------*/
\r
31 #define CRC_CCITT (0UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CCITT \hideinitializer */
\r
32 #define CRC_8 (1UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC8 \hideinitializer */
\r
33 #define CRC_16 (2UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC16 \hideinitializer */
\r
34 #define CRC_32 (3UL << CRC_CTL_CRCMODE_Pos) /*!<CRC Polynomial Mode - CRC32 \hideinitializer */
\r
36 /*---------------------------------------------------------------------------------------------------------*/
\r
37 /* Checksum, Write data Constant Definitions */
\r
38 /*---------------------------------------------------------------------------------------------------------*/
\r
39 #define CRC_CHECKSUM_COM (CRC_CTL_CHKSFMT_Msk) /*!<CRC Checksum Complement \hideinitializer */
\r
40 #define CRC_CHECKSUM_RVS (CRC_CTL_CHKSREV_Msk) /*!<CRC Checksum Reverse \hideinitializer */
\r
41 #define CRC_WDATA_COM (CRC_CTL_DATFMT_Msk) /*!<CRC Write Data Complement \hideinitializer */
\r
42 #define CRC_WDATA_RVS (CRC_CTL_DATREV_Msk) /*!<CRC Write Data Reverse \hideinitializer */
\r
44 /*---------------------------------------------------------------------------------------------------------*/
\r
45 /* CPU Write Data Length Constant Definitions */
\r
46 /*---------------------------------------------------------------------------------------------------------*/
\r
47 #define CRC_CPU_WDATA_8 (0UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 8-bit \hideinitializer */
\r
48 #define CRC_CPU_WDATA_16 (1UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 16-bit \hideinitializer */
\r
49 #define CRC_CPU_WDATA_32 (2UL << CRC_CTL_DATLEN_Pos) /*!<CRC CPU Write Data length is 32-bit \hideinitializer */
\r
51 /*@}*/ /* end of group CRC_EXPORTED_CONSTANTS */
\r
54 /** @addtogroup CRC_EXPORTED_FUNCTIONS CRC Exported Functions
\r
59 * @brief Set CRC Seed Value
\r
61 * @param[in] crc The pointer of CRC module.
\r
62 * @param[in] u32Seed Seed value
\r
66 * @details This macro is used to set CRC seed value.
\r
68 * @note User must to perform CRC_CHKSINIT(CRC_CTL[1] CRC Engine Reset) to reload the new seed value
\r
69 * to CRC controller.
\r
72 #define CRC_SET_SEED(crc, u32Seed) do{ (crc)->SEED = (u32Seed); (crc)->CTL |= CRC_CTL_CHKSINIT_Msk; }while(0)
\r
75 * @brief Get CRC Seed Value
\r
77 * @param[in] crc The pointer of CRC module.
\r
79 * @return CRC seed value
\r
81 * @details This macro gets the current CRC seed value.
\r
84 #define CRC_GET_SEED(crc) ((crc)->SEED)
\r
87 * @brief CRC Write Data
\r
89 * @param[in] crc The pointer of CRC module.
\r
90 * @param[in] u32Data Write data
\r
94 * @details User can write data directly to CRC Write Data Register(CRC_DAT) by this macro to perform CRC operation.
\r
97 #define CRC_WRITE_DATA(crc, u32Data) ((crc)->DAT = (u32Data))
\r
100 void CRC_Open(uint32_t u32Mode, uint32_t u32Attribute, uint32_t u32Seed, uint32_t u32DataLen);
\r
101 uint32_t CRC_GetChecksum(void);
\r
103 /*@}*/ /* end of group CRC_EXPORTED_FUNCTIONS */
\r
105 /*@}*/ /* end of group CRC_Driver */
\r
107 /*@}*/ /* end of group Standard_Driver */
\r
113 #endif /* __CRC_H__ */
\r
115 /*** (C) COPYRIGHT 2016 Nuvoton Technology Corp. ***/
\r