]> git.sur5r.net Git - freertos/blob - FreeRTOS/Demo/CORTEX_MPU_M23_Nuvoton_NuMaker_PFM_M2351_IAR_GCC/Nuvoton_Code/Device/Nuvoton/M2351/Include/dac_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 / dac_reg.h
1 /**************************************************************************//**\r
2  * @file     dac_reg.h\r
3  * @version  V1.00\r
4  * @brief    DAC register definition header file\r
5  *\r
6  * @copyright (C) 2017 Nuvoton Technology Corp. All rights reserved.\r
7  *****************************************************************************/\r
8 #ifndef __DAC_REG_H__\r
9 #define __DAC_REG_H__\r
10 \r
11 \r
12 /** @addtogroup REGISTER Control Register\r
13 \r
14   @{\r
15 \r
16 */\r
17 \r
18 /*---------------------- Digital to Analog Converter -------------------------*/\r
19 /**\r
20     @addtogroup DAC Digital to Analog Converter(DAC)\r
21     Memory Mapped Structure for DAC Controller\r
22 @{ */\r
23 \r
24 \r
25 typedef struct\r
26 {\r
27 \r
28 \r
29 \r
30     /**\r
31      * @var DAC_T::CTL\r
32      * Offset: 0x00  DAC Control Register\r
33      * ---------------------------------------------------------------------------------------------------\r
34      * |Bits    |Field     |Descriptions\r
35      * | :----: | :----:   | :---- |\r
36      * |[0]     |DACEN     |DAC Enable Bit\r
37      * |        |          |0 = DAC is Disabled.\r
38      * |        |          |1 = DAC is Enabled.\r
39      * |[1]     |DACIEN    |DAC Interrupt Enable Bit\r
40      * |        |          |0 = Interrupt is Disabled.\r
41      * |        |          |1 = Interrupt is Enabled.\r
42      * |[2]     |DMAEN     |DMA Mode Enable Bit\r
43      * |        |          |0 = DMA mode Disabled.\r
44      * |        |          |1 = DMA mode Enabled.\r
45      * |[3]     |DMAURIEN  |DMA Under-run Interrupt Enable Bit\r
46      * |        |          |0 = DMA under-run interrupt Disabled.\r
47      * |        |          |1 = DMA under-run interrupt Enabled.\r
48      * |[4]     |TRGEN     |Trigger Mode Enable Bit\r
49      * |        |          |0 = DAC event trigger mode Disabled.\r
50      * |        |          |1 = DAC event trigger mode Enabled.\r
51      * |[7:5]   |TRGSEL    |Trigger Source Selection\r
52      * |        |          |000 = Software trigger.\r
53      * |        |          |001 = External pin DAC0_ST trigger.\r
54      * |        |          |010 = Timer 0 trigger.\r
55      * |        |          |011 = Timer 1 trigger.\r
56      * |        |          |100 = Timer 2 trigger.\r
57      * |        |          |101 = Timer 3 trigger.\r
58      * |        |          |110 = EPWM0 trigger.\r
59      * |        |          |111 = EPWM1 trigger.\r
60      * |[8]     |BYPASS    |Bypass Buffer Mode\r
61      * |        |          |0 = Output voltage buffer Enabled.\r
62      * |        |          |1 = Output voltage buffer Disabled.\r
63      * |[10]    |LALIGN    |DAC Data Left-aligned Enabled Control\r
64      * |        |          |0 = Right alignment.\r
65      * |        |          |1 = Left alignment.\r
66      * |[13:12] |ETRGSEL   |External Pin Trigger Selection\r
67      * |        |          |00 = Low level trigger.\r
68      * |        |          |01 = High level trigger.\r
69      * |        |          |10 = Falling edge trigger.\r
70      * |        |          |11 = Rising edge trigger.\r
71      * |[15:14] |BWSEL     |DAC Data Bit-width Selection\r
72      * |        |          |00 = data is 12 bits.\r
73      * |        |          |01 = data is 8 bits.\r
74      * |        |          |Others = reserved.\r
75      * |[16]    |GRPEN     |DAC Group Mode Enable Bit\r
76      * |        |          |0 = DAC0 and DAC1 are not grouped.\r
77      * |        |          |1 = DAC0 and DAC1 are grouped.\r
78      * @var DAC_T::SWTRG\r
79      * Offset: 0x04  DAC Software Trigger Control Register\r
80      * ---------------------------------------------------------------------------------------------------\r
81      * |Bits    |Field     |Descriptions\r
82      * | :----: | :----:   | :---- |\r
83      * |[0]     |SWTRG     |Software Trigger\r
84      * |        |          |0 = Software trigger Disabled.\r
85      * |        |          |1 = Software trigger Enabled.\r
86      * |        |          |User writes this bit to generate one shot pulse and it is cleared to 0 by hardware automatically; Reading this bit will always get 0.\r
87      * @var DAC_T::DAT\r
88      * Offset: 0x08  DAC Data Holding Register\r
89      * ---------------------------------------------------------------------------------------------------\r
90      * |Bits    |Field     |Descriptions\r
91      * | :----: | :----:   | :---- |\r
92      * |[15:0]  |DACDAT    |DAC 12-bit Holding Data\r
93      * |        |          |These bits are written by user software which specifies 12-bit conversion data for DAC output.\r
94      * |        |          |The unused bits (DACDAT[3:0] in left-alignment mode and DACDAT[15:12] in right alignment mode) are ignored by DAC controller hardware.\r
95      * |        |          |12 bit left alignment: user has to load data into DACDAT[15:4] bits.\r
96      * |        |          |12 bit right alignment: user has to load data into DACDAT[11:0] bits.\r
97      * @var DAC_T::DATOUT\r
98      * Offset: 0x0C  DAC Data Output Register\r
99      * ---------------------------------------------------------------------------------------------------\r
100      * |Bits    |Field     |Descriptions\r
101      * | :----: | :----:   | :---- |\r
102      * |[11:0]  |DATOUT    |DAC 12-bit Output Data\r
103      * |        |          |These bits are current digital data for DAC output conversion.\r
104      * |        |          |It is loaded from DAC_DAT register and user cannot write it directly.\r
105      * @var DAC_T::STATUS\r
106      * Offset: 0x10  DAC Status Register\r
107      * ---------------------------------------------------------------------------------------------------\r
108      * |Bits    |Field     |Descriptions\r
109      * | :----: | :----:   | :---- |\r
110      * |[0]     |FINISH    |DAC Conversion Complete Finish Flag\r
111      * |        |          |0 = DAC is in conversion state.\r
112      * |        |          |1 = DAC conversion finish.\r
113      * |        |          |This bit set to 1 when conversion time counter counts to SETTLET.\r
114      * |        |          |It is cleared to 0 when DAC starts a new conversion.\r
115      * |        |          |User writes 1 to clear this bit to 0.\r
116      * |[1]     |DMAUDR    |DMA Under-run Interrupt Flag\r
117      * |        |          |0 = No DMA under-run error condition occurred.\r
118      * |        |          |1 = DMA under-run error condition occurred.\r
119      * |        |          |User writes 1 to clear this bit.\r
120      * |[8]     |BUSY      |DAC Busy Flag (Read Only)\r
121      * |        |          |0 = DAC is ready for next conversion.\r
122      * |        |          |1 = DAC is busy in conversion.\r
123      * |        |          |This is read only bit.\r
124      * @var DAC_T::TCTL\r
125      * Offset: 0x14  DAC Timing Control Register\r
126      * ---------------------------------------------------------------------------------------------------\r
127      * |Bits    |Field     |Descriptions\r
128      * | :----: | :----:   | :---- |\r
129      * |[9:0]   |SETTLET   |DAC Output Settling Time\r
130      * |        |          |User software needs to write appropriate value to these bits to meet DAC conversion settling time base on PCLK (APB clock) speed.\r
131      * |        |          |For example, DAC controller clock speed is 64MHz and DAC conversion setting time is 1 us, SETTLET value must be greater than 0x40.\r
132      */\r
133     __IO uint32_t CTL;                   /*!< [0x0000] DAC Control Register                                             */\r
134     __IO uint32_t SWTRG;                 /*!< [0x0004] DAC Software Trigger Control Register                            */\r
135     __IO uint32_t DAT;                   /*!< [0x0008] DAC Data Holding Register                                        */\r
136     __I  uint32_t DATOUT;                /*!< [0x000c] DAC Data Output Register                                         */\r
137     __IO uint32_t STATUS;                /*!< [0x0010] DAC Status Register                                              */\r
138     __IO uint32_t TCTL;                  /*!< [0x0014] DAC Timing Control Register                                      */\r
139 \r
140 } DAC_T;\r
141 \r
142 /**\r
143     @addtogroup DAC_CONST DAC Bit Field Definition\r
144     Constant Definitions for DAC Controller\r
145 @{ */\r
146 \r
147 #define DAC_CTL_DACEN_Pos                (0)                                               /*!< DAC_T::CTL: DACEN Position             */\r
148 #define DAC_CTL_DACEN_Msk                (0x1ul << DAC_CTL_DACEN_Pos)                      /*!< DAC_T::CTL: DACEN Mask                 */\r
149 \r
150 #define DAC_CTL_DACIEN_Pos               (1)                                               /*!< DAC_T::CTL: DACIEN Position            */\r
151 #define DAC_CTL_DACIEN_Msk               (0x1ul << DAC_CTL_DACIEN_Pos)                     /*!< DAC_T::CTL: DACIEN Mask                */\r
152 \r
153 #define DAC_CTL_DMAEN_Pos                (2)                                               /*!< DAC_T::CTL: DMAEN Position             */\r
154 #define DAC_CTL_DMAEN_Msk                (0x1ul << DAC_CTL_DMAEN_Pos)                      /*!< DAC_T::CTL: DMAEN Mask                 */\r
155 \r
156 #define DAC_CTL_DMAURIEN_Pos             (3)                                               /*!< DAC_T::CTL: DMAURIEN Position          */\r
157 #define DAC_CTL_DMAURIEN_Msk             (0x1ul << DAC_CTL_DMAURIEN_Pos)                   /*!< DAC_T::CTL: DMAURIEN Mask              */\r
158 \r
159 #define DAC_CTL_TRGEN_Pos                (4)                                               /*!< DAC_T::CTL: TRGEN Position             */\r
160 #define DAC_CTL_TRGEN_Msk                (0x1ul << DAC_CTL_TRGEN_Pos)                      /*!< DAC_T::CTL: TRGEN Mask                 */\r
161 \r
162 #define DAC_CTL_TRGSEL_Pos               (5)                                               /*!< DAC_T::CTL: TRGSEL Position            */\r
163 #define DAC_CTL_TRGSEL_Msk               (0x7ul << DAC_CTL_TRGSEL_Pos)                     /*!< DAC_T::CTL: TRGSEL Mask                */\r
164 \r
165 #define DAC_CTL_BYPASS_Pos               (8)                                               /*!< DAC_T::CTL: BYPASS Position            */\r
166 #define DAC_CTL_BYPASS_Msk               (0x1ul << DAC_CTL_BYPASS_Pos)                     /*!< DAC_T::CTL: BYPASS Mask                */\r
167 \r
168 #define DAC_CTL_LALIGN_Pos               (10)                                              /*!< DAC_T::CTL: LALIGN Position            */\r
169 #define DAC_CTL_LALIGN_Msk               (0x1ul << DAC_CTL_LALIGN_Pos)                     /*!< DAC_T::CTL: LALIGN Mask                */\r
170 \r
171 #define DAC_CTL_ETRGSEL_Pos              (12)                                              /*!< DAC_T::CTL: ETRGSEL Position           */\r
172 #define DAC_CTL_ETRGSEL_Msk              (0x3ul << DAC_CTL_ETRGSEL_Pos)                    /*!< DAC_T::CTL: ETRGSEL Mask               */\r
173 \r
174 #define DAC_CTL_BWSEL_Pos                (14)                                              /*!< DAC_T::CTL: BWSEL Position             */\r
175 #define DAC_CTL_BWSEL_Msk                (0x3ul << DAC_CTL_BWSEL_Pos)                      /*!< DAC_T::CTL: BWSEL Mask                 */\r
176 \r
177 #define DAC_CTL_GRPEN_Pos                (16)                                              /*!< DAC_T::CTL: GRPEN Position             */\r
178 #define DAC_CTL_GRPEN_Msk                (0x1ul << DAC_CTL_GRPEN_Pos)                      /*!< DAC_T::CTL: GRPEN Mask                 */\r
179 \r
180 #define DAC_SWTRG_SWTRG_Pos              (0)                                               /*!< DAC_T::SWTRG: SWTRG Position           */\r
181 #define DAC_SWTRG_SWTRG_Msk              (0x1ul << DAC_SWTRG_SWTRG_Pos)                    /*!< DAC_T::SWTRG: SWTRG Mask               */\r
182 \r
183 #define DAC_DAT_DACDAT_Pos               (0)                                               /*!< DAC_T::DAT: DACDAT Position            */\r
184 #define DAC_DAT_DACDAT_Msk               (0xfffful << DAC_DAT_DACDAT_Pos)                  /*!< DAC_T::DAT: DACDAT Mask                */\r
185 \r
186 #define DAC_DATOUT_DATOUT_Pos            (0)                                               /*!< DAC_T::DATOUT: DATOUT Position         */\r
187 #define DAC_DATOUT_DATOUT_Msk            (0xffful << DAC_DATOUT_DATOUT_Pos)                /*!< DAC_T::DATOUT: DATOUT Mask             */\r
188 \r
189 #define DAC_STATUS_FINISH_Pos            (0)                                               /*!< DAC_T::STATUS: FINISH Position         */\r
190 #define DAC_STATUS_FINISH_Msk            (0x1ul << DAC_STATUS_FINISH_Pos)                  /*!< DAC_T::STATUS: FINISH Mask             */\r
191 \r
192 #define DAC_STATUS_DMAUDR_Pos            (1)                                               /*!< DAC_T::STATUS: DMAUDR Position         */\r
193 #define DAC_STATUS_DMAUDR_Msk            (0x1ul << DAC_STATUS_DMAUDR_Pos)                  /*!< DAC_T::STATUS: DMAUDR Mask             */\r
194 \r
195 #define DAC_STATUS_BUSY_Pos              (8)                                               /*!< DAC_T::STATUS: BUSY Position           */\r
196 #define DAC_STATUS_BUSY_Msk              (0x1ul << DAC_STATUS_BUSY_Pos)                    /*!< DAC_T::STATUS: BUSY Mask               */\r
197 \r
198 #define DAC_TCTL_SETTLET_Pos             (0)                                               /*!< DAC_T::TCTL: SETTLET Position          */\r
199 #define DAC_TCTL_SETTLET_Msk             (0x3fful << DAC_TCTL_SETTLET_Pos)                 /*!< DAC_T::TCTL: SETTLET Mask              */\r
200 \r
201 /**@}*/ /* DAC_CONST */\r
202 /**@}*/ /* end of DAC register group */\r
203 /**@}*/ /* end of REGISTER group */\r
204 \r
205 #endif /* __DAC_REG_H__ */\r