1 /**************************************************************************//**
\r
4 * @brief DAC register definition header file
\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
12 /** @addtogroup REGISTER Control Register
\r
18 /*---------------------- Digital to Analog Converter -------------------------*/
\r
20 @addtogroup DAC Digital to Analog Converter(DAC)
\r
21 Memory Mapped Structure for DAC Controller
\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
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
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
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
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
143 @addtogroup DAC_CONST DAC Bit Field Definition
\r
144 Constant Definitions for DAC Controller
\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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
201 /**@}*/ /* DAC_CONST */
\r
202 /**@}*/ /* end of DAC register group */
\r
203 /**@}*/ /* end of REGISTER group */
\r
205 #endif /* __DAC_REG_H__ */
\r