1 /**************************************************************************//**
\r
4 * @brief CRC register definition header file
\r
6 * @copyright (C) 2017 Nuvoton Technology Corp. All rights reserved.
\r
7 *****************************************************************************/
\r
8 #ifndef __CRC_REG_H__
\r
9 #define __CRC_REG_H__
\r
11 /** @addtogroup REGISTER Control Register
\r
18 /*---------------------- Cyclic Redundancy Check Controller -------------------------*/
\r
20 @addtogroup CRC Cyclic Redundancy Check Controller(CRC)
\r
21 Memory Mapped Structure for CRC Controller
\r
30 * Offset: 0x00 CRC Control Register
\r
31 * ---------------------------------------------------------------------------------------------------
\r
32 * |Bits |Field |Descriptions
\r
33 * | :----: | :----: | :---- |
\r
34 * |[0] |CRCEN |CRC Channel Generator Enable Bit
\r
35 * | | |Set this bit 1 to enable CRC generator for CRC operation.
\r
36 * | | |0 = No effect.
\r
37 * | | |1 = CRC operation generator is active.
\r
38 * |[1] |CHKSINIT |Checksum Initialization
\r
39 * | | |Set this bit will auto reload SEED (CRC_SEED [31:0]) to CHECKSUM (CRC_CHECKSUM[31:0]) as CRC operation initial value.
\r
40 * | | |0 = No effect.
\r
41 * | | |1 = Reload SEED value to CHECKSUM register as CRC operation initial checksum value.
\r
42 * | | |The others contents of CRC_CTL register will not be cleared.
\r
43 * | | |Note1: This bit will be cleared automatically
\r
44 * | | |Note2: Setting this bit will reload the seed value from CRC_SEED register as checksum initial value.
\r
45 * |[24] |DATREV |Write Data Bit Order Reverse Enable Bit
\r
46 * | | |This bit is used to enable the bit order reverse function per byte for write data value DATA (CRC_DATA[31:0]) in CRC_DAT register.
\r
47 * | | |0 = Bit order reversed for CRC_DATA write data in Disabled.
\r
48 * | | |1 = Bit order reversed for CRC_DATA write data in Enabled (per byte).
\r
49 * | | |Note: If the write data is 0xAABBCCDD, the bit order reverse for CRC write data in is 0x55DD33BB.
\r
50 * |[25] |CHKSREV |Checksum Bit Order Reverse Enable Bit
\r
51 * | | |This bit is used to enable the bit order reverse function for checksum result CHECKSUM (CRC_CHECKSUM[31:0]).
\r
52 * | | |0 = Bit order reverse for CRC CHECKSUMCRC checksum Disabled.
\r
53 * | | |1 = Bit order reverse for CRC CHECKSUMCRC checksum Enabled.
\r
54 * | | |Note: If the checksum result is 0xDD7B0F2E, the bit order reverse result for CRC checksum is 0x74F0DEBB.
\r
55 * |[26] |DATFMT |Write Data 1's Complement Enable Bit
\r
56 * | | |This bit is used to enable the 1's complement function for write data value DATA (CRC_DATA[31:0]).
\r
57 * | | |0 = 1's complement for CRC_DATA writes data in Disabled.
\r
58 * | | |1 = 1's complement for CRC_DATA writes data in Enabled.
\r
59 * |[27] |CHKSFMT |Checksum 1's Complement Enable Bit
\r
60 * | | |This bit is used to enable the 1's complement function for checksum result in CHECKSUM (CRC_CHECKSUM[31:0]) register.
\r
61 * | | |0 = 1's complement for CRC CHECKSUM Disabled.
\r
62 * | | |1 = 1's complement for CRC CHECKSUMCRC Enabled.
\r
63 * |[29:28] |DATLEN |CPU Write Data Length
\r
64 * | | |This field indicates the valid write data length of DATA (CRC_DAT[31:0]).
\r
65 * | | |00 = Data length is 8-bit mode.
\r
66 * | | |01 = Data length is 16-bit mode.
\r
67 * | | |1x = Data length is 32-bit mode.
\r
68 * | | |Note: When the write data length is 8-bit mode, the valid data in CRC_DAT register is only DATA[7:0] bits; if the write data length is 16-bit mode, the valid data in CRC_DAT register is only DATA[15:0]
\r
69 * |[31:30] |CRCMODE |CRC Polynomial Mode
\r
70 * | | |This field indicates the CRC operation polynomial mode.
\r
71 * | | |00 = CRC-CCITT Polynomial mode.
\r
72 * | | |01 = CRC-8 Polynomial mode.
\r
73 * | | |10 = CRC-16 Polynomial mode.
\r
74 * | | |11 = CRC-32 Polynomial mode.
\r
76 * Offset: 0x04 CRC Write Data Register
\r
77 * ---------------------------------------------------------------------------------------------------
\r
78 * |Bits |Field |Descriptions
\r
79 * | :----: | :----: | :---- |
\r
80 * |[31:0] |DATA |CRC Write Data Bits
\r
81 * | | |User can write data directly by CPU mode or use PDMA function to write data to this field to perform CRC operation.
\r
82 * | | |Note: When the write data length is 8-bit mode, the valid data in CRC_DAT register is only DATA[7:0] bits; if the write data length is 16-bit mode, the valid data in CRC_DAT register is only DATA[15:0].
\r
84 * Offset: 0x08 CRC Seed Register
\r
85 * ---------------------------------------------------------------------------------------------------
\r
86 * |Bits |Field |Descriptions
\r
87 * | :----: | :----: | :---- |
\r
88 * |[31:0] |SEED |CRC Seed Value
\r
89 * | | |This field indicates the CRC seed value.
\r
90 * | | |Note1: This field SEED value will be reloaded to as checksum initial value CHECKSUM (CRC_CHECKSUM[31:0]) register) after perform CRC engine reset, CHKSINIT (CRC_CTL[1]) to 1.
\r
91 * | | |Note2: The valid bits of CRC_SEED[31:0] is correlated to CRCMODE (CRC_CTL[31:30]).
\r
92 * @var CRC_T::CHECKSUM
\r
93 * Offset: 0x0C CRC Checksum Register
\r
94 * ---------------------------------------------------------------------------------------------------
\r
95 * |Bits |Field |Descriptions
\r
96 * | :----: | :----: | :---- |
\r
97 * |[31:0] |CHECKSUM |CRC Checksum Results
\r
98 * | | |This field indicates the CRC checksum result.
\r
99 * | | |Note: The valid bits of CRC_CHECKSUM[31:0] is correlated to CRCMODE (CRC_CTL[31:30]).
\r
101 __IO uint32_t CTL; /*!< [0x0000] CRC Control Register */
\r
102 __IO uint32_t DAT; /*!< [0x0004] CRC Write Data Register */
\r
103 __IO uint32_t SEED; /*!< [0x0008] CRC Seed Register */
\r
104 __I uint32_t CHECKSUM; /*!< [0x000c] CRC Checksum Register */
\r
109 @addtogroup CRC_CONST CRC Bit Field Definition
\r
110 Constant Definitions for CRC Controller
\r
113 #define CRC_CTL_CRCEN_Pos (0) /*!< CRC_T::CTL: CRCEN Position */
\r
114 #define CRC_CTL_CRCEN_Msk (0x1ul << CRC_CTL_CRCEN_Pos) /*!< CRC_T::CTL: CRCEN Mask */
\r
116 #define CRC_CTL_CHKSINIT_Pos (1) /*!< CRC_T::CTL: CHKSINIT Position */
\r
117 #define CRC_CTL_CHKSINIT_Msk (0x1ul << CRC_CTL_CHKSINIT_Pos) /*!< CRC_T::CTL: CHKSINIT Mask */
\r
119 #define CRC_CTL_DATREV_Pos (24) /*!< CRC_T::CTL: DATREV Position */
\r
120 #define CRC_CTL_DATREV_Msk (0x1ul << CRC_CTL_DATREV_Pos) /*!< CRC_T::CTL: DATREV Mask */
\r
122 #define CRC_CTL_CHKSREV_Pos (25) /*!< CRC_T::CTL: CHKSREV Position */
\r
123 #define CRC_CTL_CHKSREV_Msk (0x1ul << CRC_CTL_CHKSREV_Pos) /*!< CRC_T::CTL: CHKSREV Mask */
\r
125 #define CRC_CTL_DATFMT_Pos (26) /*!< CRC_T::CTL: DATFMT Position */
\r
126 #define CRC_CTL_DATFMT_Msk (0x1ul << CRC_CTL_DATFMT_Pos) /*!< CRC_T::CTL: DATFMT Mask */
\r
128 #define CRC_CTL_CHKSFMT_Pos (27) /*!< CRC_T::CTL: CHKSFMT Position */
\r
129 #define CRC_CTL_CHKSFMT_Msk (0x1ul << CRC_CTL_CHKSFMT_Pos) /*!< CRC_T::CTL: CHKSFMT Mask */
\r
131 #define CRC_CTL_DATLEN_Pos (28) /*!< CRC_T::CTL: DATLEN Position */
\r
132 #define CRC_CTL_DATLEN_Msk (0x3ul << CRC_CTL_DATLEN_Pos) /*!< CRC_T::CTL: DATLEN Mask */
\r
134 #define CRC_CTL_CRCMODE_Pos (30) /*!< CRC_T::CTL: CRCMODE Position */
\r
135 #define CRC_CTL_CRCMODE_Msk (0x3ul << CRC_CTL_CRCMODE_Pos) /*!< CRC_T::CTL: CRCMODE Mask */
\r
137 #define CRC_DAT_DATA_Pos (0) /*!< CRC_T::DAT: DATA Position */
\r
138 #define CRC_DAT_DATA_Msk (0xfffffffful << CRC_DAT_DATA_Pos) /*!< CRC_T::DAT: DATA Mask */
\r
140 #define CRC_SEED_SEED_Pos (0) /*!< CRC_T::SEED: SEED Position */
\r
141 #define CRC_SEED_SEED_Msk (0xfffffffful << CRC_SEED_SEED_Pos) /*!< CRC_T::SEED: SEED Mask */
\r
143 #define CRC_CHECKSUM_CHECKSUM_Pos (0) /*!< CRC_T::CHECKSUM: CHECKSUM Position */
\r
144 #define CRC_CHECKSUM_CHECKSUM_Msk (0xfffffffful << CRC_CHECKSUM_CHECKSUM_Pos) /*!< CRC_T::CHECKSUM: CHECKSUM Mask */
\r
146 /**@}*/ /* CRC_CONST */
\r
147 /**@}*/ /* end of CRC register group */
\r
148 /**@}*/ /* end of REGISTER group */
\r
150 #endif /* __CLK_REG_H__ */
\r