]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/Device/Nuvoton/M2351/Include/crc_reg.h
Add Cortex M23 GCC and IAR ports. Add demo projects for Nuvoton NuMaker-PFM-2351.
[freertos] / FreeRTOS / Demo / CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC / Nuvoton_Code / Device / Nuvoton / M2351 / Include / crc_reg.h
1 /**************************************************************************//**\r
2  * @file     crc_reg.h\r
3  * @version  V1.00\r
4  * @brief    CRC register definition header file\r
5  *\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
10 \r
11 /** @addtogroup REGISTER Control Register\r
12 \r
13   @{\r
14 \r
15 */\r
16 \r
17 \r
18 /*---------------------- Cyclic Redundancy Check Controller -------------------------*/\r
19 /**\r
20     @addtogroup CRC Cyclic Redundancy Check Controller(CRC)\r
21     Memory Mapped Structure for CRC Controller\r
22 @{ */\r
23 \r
24 typedef struct\r
25 {\r
26 \r
27 \r
28     /**\r
29      * @var CRC_T::CTL\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
75      * @var CRC_T::DAT\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
83      * @var CRC_T::SEED\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
100      */\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
105 \r
106 } CRC_T;\r
107 \r
108 /**\r
109     @addtogroup CRC_CONST CRC Bit Field Definition\r
110     Constant Definitions for CRC Controller\r
111 @{ */\r
112 \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
115 \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
118 \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
121 \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
124 \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
127 \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
130 \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
133 \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
136 \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
139 \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
142 \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
145 \r
146 /**@}*/ /* CRC_CONST */\r
147 /**@}*/ /* end of CRC register group */\r
148 /**@}*/ /* end of REGISTER group */\r
149 \r
150 #endif /* __CLK_REG_H__ */\r