G32R430 Device Driver Layer v1.0.4
G32R4xx Device Driver Layer API Reference
g32r4xx_ddl_adc16.h
Go to the documentation of this file.
1
42
43/* Define to prevent recursive inclusion -------------------------------------*/
44#ifndef G32R4xx_DDL_ADC16_H
45#define G32R4xx_DDL_ADC16_H
46
47#ifdef __cplusplus
48extern "C" {
49#endif
50
51/* Includes ------------------------------------------------------------------*/
52#include "g32r4xx.h"
53
57
58#if defined (ADC1) || defined (ADC2)
59
63
64/* Private types -------------------------------------------------------------*/
65/* Private variables ---------------------------------------------------------*/
66
67/* Private constants ---------------------------------------------------------*/
71
72/* Internal mask for ADC group regular sequencer: */
73/* To select into literal DDL_ADC16_REG_RANK_x the relevant bits for: */
74/* - sequencer register offset */
75/* - sequencer rank bits position into the selected register */
76
77/* Internal register offset for ADC group regular sequencer configuration */
78/* (offset placed into a spare area of literal definition) */
79#define ADC_SQR1_REGOFFSET (0x00000000UL)
80#define ADC_SQR2_REGOFFSET (0x00000100UL)
81
82#define ADC_REG_SQRX_REGOFFSET_MASK (ADC_SQR1_REGOFFSET | ADC_SQR2_REGOFFSET)
83#define ADC_SQRX_REGOFFSET_POS (8UL) /* Position of bits ADC_SQRx_REGOFFSET in ADC_REG_SQRX_REGOFFSET_MASK */
84#define ADC_REG_RANK_ID_SQRX_MASK (0x1F)
85
86/* Definition of ADC group regular sequencer bits information to be inserted */
87/* into ADC group regular sequencer ranks literals definition. */
88#define ADC_REG_RANK_1_SQRX_BITOFFSET_POS (ADC_SQR1_SQ1_Pos)
89#define ADC_REG_RANK_2_SQRX_BITOFFSET_POS (ADC_SQR1_SQ2_Pos)
90#define ADC_REG_RANK_3_SQRX_BITOFFSET_POS (ADC_SQR1_SQ3_Pos)
91#define ADC_REG_RANK_4_SQRX_BITOFFSET_POS (ADC_SQR1_SQ4_Pos)
92#define ADC_REG_RANK_5_SQRX_BITOFFSET_POS (ADC_SQR1_SQ5_Pos)
93#define ADC_REG_RANK_6_SQRX_BITOFFSET_POS (ADC_SQR1_SQ6_Pos)
94#define ADC_REG_RANK_7_SQRX_BITOFFSET_POS (ADC_SQR1_SQ7_Pos)
95#define ADC_REG_RANK_8_SQRX_BITOFFSET_POS (ADC_SQR2_SQ8_Pos)
96#define ADC_REG_RANK_9_SQRX_BITOFFSET_POS (ADC_SQR2_SQ9_Pos)
97#define ADC_REG_RANK_10_SQRX_BITOFFSET_POS (ADC_SQR2_SQ10_Pos)
98#define ADC_REG_RANK_11_SQRX_BITOFFSET_POS (ADC_SQR2_SQ11_Pos)
99#define ADC_REG_RANK_12_SQRX_BITOFFSET_POS (ADC_SQR2_SQ12_Pos)
100
101/* Internal mask for ADC group injected sequencer: */
102/* To select into literal DDL_ADC16_INJ_RANK_x the relevant bits for: */
103/* - data register offset */
104/* - sequencer rank bits position into the selected register */
105
106/* Internal register offset for ADC group injected data register */
107/* (offset placed into a spare area of literal definition) */
108#define ADC_JDR1_REGOFFSET (0x00000000UL)
109#define ADC_JDR2_REGOFFSET (0x00000100UL)
110#define ADC_JDR3_REGOFFSET (0x00000200UL)
111#define ADC_JDR4_REGOFFSET (0x00000300UL)
112
113#define ADC_INJ_JDRX_REGOFFSET_MASK (ADC_JDR1_REGOFFSET | ADC_JDR2_REGOFFSET \
114 | ADC_JDR3_REGOFFSET | ADC_JDR4_REGOFFSET)
115#define ADC_INJ_RANK_ID_JSQR_MASK (0x1F)
116#define ADC_JDRX_REGOFFSET_POS (8UL) /* Position of bits ADC_JDRx_REGOFFSET in ADC_INJ_JDRX_REGOFFSET_MASK */
117
118/* Definition of ADC group injected sequencer bits information to be inserted */
119/* into ADC group injected sequencer ranks literals definition. */
120#define ADC_INJ_RANK_1_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ1_Pos)
121#define ADC_INJ_RANK_2_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ2_Pos)
122#define ADC_INJ_RANK_3_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ3_Pos)
123#define ADC_INJ_RANK_4_JSQR_BITOFFSET_POS (ADC_JSQR_JSQ4_Pos)
124
125/* Internal mask for ADC group regular trigger: */
126/* To select into literal DDL_ADC16_REG_TRIG_x the relevant bits for: */
127/* - regular trigger source */
128/* - regular trigger edge */
129#define ADC_REG_TRIG_EXT_EDGE_DEFAULT (ADC_CFGR_EXTEN_0) /* Trigger edge set to rising edge */
130
131/* Mask containing trigger source masks for each of possible */
132/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
133/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
134#define ADC_REG_TRIG_SOURCE_MASK (((DDL_ADC16_REG_TRIG_SOFTWARE & ADC_CFGR_EXTSEL) << (4U * 0UL)) | \
135 ((ADC_CFGR_EXTSEL) << (4U * 1UL)) | \
136 ((ADC_CFGR_EXTSEL) << (4U * 2UL)) | \
137 ((ADC_CFGR_EXTSEL) << (4U * 3UL)) )
138
139/* Mask containing trigger edge masks for each of possible */
140/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
141/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
142#define ADC_REG_TRIG_EDGE_MASK (((DDL_ADC16_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN) << (4U * 0UL)) | \
143 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 1UL)) | \
144 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 2UL)) | \
145 ((ADC_REG_TRIG_EXT_EDGE_DEFAULT) << (4U * 3UL)) )
146
147/* Definition of ADC group regular trigger bits information. */
148#define ADC_REG_TRIG_EXTSEL_BITOFFSET_POS (ADC_CFGR_EXTSEL_Pos)
149#define ADC_REG_TRIG_EXTEN_BITOFFSET_POS (ADC_CFGR_EXTEN_Pos)
150
151/* Internal mask for ADC group injected trigger: */
152/* To select into literal DDL_ADC16_INJ_TRIG_x the relevant bits for: */
153/* - injected trigger source */
154/* - injected trigger edge */
155#define ADC_INJ_TRIG_EXT_EDGE_DEFAULT (ADC_JSQR_JEXTEN_0) /* Trigger edge set to rising edge */
156
157/* Mask containing trigger source masks for each of possible */
158/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
159/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
160#define ADC_INJ_TRIG_SOURCE_MASK (((DDL_ADC16_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTSEL) << (4U * 0UL)) | \
161 ((ADC_JSQR_JEXTSEL) << (4U * 1UL)) | \
162 ((ADC_JSQR_JEXTSEL) << (4U * 2UL)) | \
163 ((ADC_JSQR_JEXTSEL) << (4U * 3UL)) )
164
165/* Mask containing trigger edge masks for each of possible */
166/* trigger edge selection duplicated with shifts [0; 4; 8; 12] */
167/* corresponding to {SW start; ext trigger; ext trigger; ext trigger}. */
168#define ADC_INJ_TRIG_EDGE_MASK (((DDL_ADC16_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN) << (4U * 0UL)) | \
169 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 1UL)) | \
170 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 2UL)) | \
171 ((ADC_INJ_TRIG_EXT_EDGE_DEFAULT) << (4U * 3UL)) )
172
173/* Definition of ADC group injected trigger bits information. */
174#define ADC_INJ_TRIG_EXTSEL_BITOFFSET_POS (ADC_JSQR_JEXTSEL_Pos)
175#define ADC_INJ_TRIG_EXTEN_BITOFFSET_POS (ADC_JSQR_JEXTEN_Pos)
176
177/* Internal mask for ADC channel: */
178/* To select into literal DDL_ADC16_CHANNEL_x the relevant bits for: */
179/* - channel identifier defined by number */
180/* - channel identifier defined by bitfield */
181/* - channel differentiation between external channels (connected to */
182/* GPIO pins) and internal channels (connected to internal paths) */
183/* - channel sampling time defined by SMPRx register offset */
184/* and SMPx bits positions into SMPRx register */
185#define ADC16_CFGR_AWD1CH (0x7UL << ADC_CFGR_AWD1CH_Pos)
186#define ADC_CHANNEL_ID_NUMBER_MASK (ADC16_CFGR_AWD1CH)
187#define ADC_CHANNEL_ID_BITFIELD_MASK (ADC_AWD2CR_AWD2CH)
188#define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS (ADC_CFGR_AWD1CH_Pos)
189#define ADC_CHANNEL_ID_MASK (ADC_CHANNEL_ID_NUMBER_MASK | ADC_CHANNEL_ID_BITFIELD_MASK \
190 | ADC_CHANNEL_ID_INTERNAL_CH_MASK)
191/* Equivalent mask of ADC_CHANNEL_NUMBER_MASK aligned on register LSB (bit 0) */
192#define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 (ADC_SQR2_SQ8) /* Equivalent to shift: (ADC_CHANNEL_NUMBER_MASK >> [Position of bitfield "ADC_CHANNEL_NUMBER_MASK" in register]) */
193
194/* Channel differentiation between external and internal channels */
195#define ADC_CHANNEL_ID_INTERNAL_CH (0x80000000UL) /* Marker of internal channel */
196#define ADC_CHANNEL_ID_INTERNAL_CH_2 (0x00080000UL) /* Marker of internal channel for other ADC instances, in case of different ADC internal channels mapped on same channel number on different ADC instances */
197#define ADC_CHANNEL_ID_INTERNAL_CH_MASK (ADC_CHANNEL_ID_INTERNAL_CH | ADC_CHANNEL_ID_INTERNAL_CH_2)
198
199/* Internal register offset for ADC channel sampling time configuration */
200/* (offset placed into a spare area of literal definition) */
201#define ADC_SMPR1_REGOFFSET (0x00000000UL)
202#define ADC_CHANNEL_SMPRX_REGOFFSET_MASK (ADC_SMPR1_REGOFFSET)
203#define ADC_SMPRX_REGOFFSET_POS (25UL) /* Position of bits ADC_SMPRx_REGOFFSET in ADC_CHANNEL_SMPRX_REGOFFSET_MASK */
204
205#define ADC_CHANNEL_SMPx_BITOFFSET_MASK (0x01F00000UL)
206#define ADC_CHANNEL_SMPx_BITOFFSET_POS (20UL) /* Value equivalent to bitfield "ADC_CHANNEL_SMPx_BITOFFSET_MASK" position in register */
207
208/* Definition of channels ID number information to be inserted into */
209/* channels literals definition. */
210#define ADC_CHANNEL_0_NUMBER (0x00000000UL)
211#define ADC_CHANNEL_1_NUMBER (ADC_CFGR_AWD1CH_0)
212#define ADC_CHANNEL_2_NUMBER (ADC_CFGR_AWD1CH_1)
213#define ADC_CHANNEL_3_NUMBER (ADC_CFGR_AWD1CH_1 | ADC_CFGR_AWD1CH_0)
214#define ADC_CHANNEL_4_NUMBER (ADC_CFGR_AWD1CH_2)
215#define ADC_CHANNEL_5_NUMBER (ADC_CFGR_AWD1CH_2 | ADC_CFGR_AWD1CH_0)
216
217/* Definition of channels ID bitfield information to be inserted into */
218/* channels literals definition. */
219#define ADC_CHANNEL_0_BITFIELD (ADC_AWD2CR_AWD2CH_0)
220#define ADC_CHANNEL_1_BITFIELD (ADC_AWD2CR_AWD2CH_1)
221#define ADC_CHANNEL_2_BITFIELD (ADC_AWD2CR_AWD2CH_2)
222#define ADC_CHANNEL_3_BITFIELD (ADC_AWD2CR_AWD2CH_3)
223#define ADC_CHANNEL_4_BITFIELD (ADC_AWD2CR_AWD2CH_4)
224#define ADC_CHANNEL_5_BITFIELD (ADC_AWD2CR_AWD2CH_5)
225
226/* Definition of channels sampling time information to be inserted into */
227/* channels literals definition. */
228#define ADC_CHANNEL_0_SMP (ADC_SMPR1_REGOFFSET | (( 0UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP0" position in register */
229#define ADC_CHANNEL_1_SMP (ADC_SMPR1_REGOFFSET | (( 4UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP1" position in register */
230#define ADC_CHANNEL_2_SMP (ADC_SMPR1_REGOFFSET | (( 8UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP2" position in register */
231#define ADC_CHANNEL_3_SMP (ADC_SMPR1_REGOFFSET | ((12UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP3" position in register */
232#define ADC_CHANNEL_4_SMP (ADC_SMPR1_REGOFFSET | ((16UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP4" position in register */
233#define ADC_CHANNEL_5_SMP (ADC_SMPR1_REGOFFSET | ((20UL) << ADC_CHANNEL_SMPx_BITOFFSET_POS)) /* Value shifted is equivalent to bitfield "ADC_SMPR1_SMP5" position in register */
234
235/* Internal mask for ADC analog watchdog: */
236/* To select into literals DDL_ADC16_AWD_CHANNELx_xxx the relevant bits for: */
237/* (concatenation of multiple bits used in different analog watchdogs, */
238/* - analog watchdog 1: monitored channel defined by number, */
239/* selection of ADC group (ADC groups regular and-or injected). */
240/* - analog watchdog 2 and 3: monitored channel defined by bitfield, no */
241/* selection on groups. */
242
243/* Internal register offset for ADC analog watchdog channel configuration */
244#define ADC_AWD_CR1_REGOFFSET (0x00000000UL)
245#define ADC_AWD_CR2_REGOFFSET (0x00100000UL)
246#define ADC_AWD_CR3_REGOFFSET (0x00200000UL)
247
248/* Register offset gap between AWD1 and AWD2-AWD3 configuration registers */
249/* (Set separately as ADC_AWD_CRX_REGOFFSET to spare 32 bits space */
250#define ADC_AWD_CR12_REGOFFSETGAP_MASK (ADC_AWD2CR_AWD2CH_0)
251#define ADC_AWD_CR12_REGOFFSETGAP_VAL (0x00000010UL)
252
253#define ADC_AWD_CRX_REGOFFSET_MASK (ADC_AWD_CR1_REGOFFSET | ADC_AWD_CR2_REGOFFSET | ADC_AWD_CR3_REGOFFSET)
254
255#define ADC_AWD_CR1_CHANNEL_MASK (ADC16_CFGR_AWD1CH | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
256#define ADC_AWD_CR23_CHANNEL_MASK (ADC_AWD2CR_AWD2CH)
257#define ADC_AWD_CR_ALL_CHANNEL_MASK (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR23_CHANNEL_MASK)
258
259#define ADC_AWD_CRX_REGOFFSET_POS (20UL) /* Position of bits ADC_AWD_CRx_REGOFFSET in ADC_AWD_CRX_REGOFFSET_MASK */
260
261/* Internal register offset for ADC analog watchdog threshold configuration */
262#define ADC_AWD_TR1_REGOFFSET (ADC_AWD_CR1_REGOFFSET)
263#define ADC_AWD_TR2_REGOFFSET (ADC_AWD_CR2_REGOFFSET)
264#define ADC_AWD_TR3_REGOFFSET (ADC_AWD_CR3_REGOFFSET)
265#define ADC_AWD_TRX_REGOFFSET_MASK (ADC_AWD_TR1_REGOFFSET | ADC_AWD_TR2_REGOFFSET | ADC_AWD_TR3_REGOFFSET)
266#define ADC_AWD_TRX_REGOFFSET_POS (ADC_AWD_CRX_REGOFFSET_POS) /* Position of bits ADC_SQRx_REGOFFSET in ADC_AWD_TRX_REGOFFSET_MASK */
267#define ADC_AWD_TRX_BIT_HIGH_MASK (0x00010000UL) /* Selection of 1 bit to discriminate threshold high: mask of bit */
268#define ADC_AWD_TRX_BIT_HIGH_POS (16UL) /* Selection of 1 bit to discriminate threshold high: position of bit */
269#define ADC_AWD_TRX_BIT_HIGH_SHIFT4 (ADC_AWD_TRX_BIT_HIGH_POS - 4UL) /* Shift of bit ADC_AWD_TRX_BIT_HIGH to position to perform a shift of 4 ranks */
270
271/* Internal mask for ADC offset: */
272/* Internal register offset for ADC offset number configuration */
273#define ADC_OFFSET0_REGOFFSET (0x00000000UL)
274#define ADC_OFFSET1_REGOFFSET (0x00000001UL)
275#define ADC_OFFSET2_REGOFFSET (0x00000002UL)
276#define ADC_OFFSET3_REGOFFSET (0x00000003UL)
277#define ADC_OFFSET4_REGOFFSET (0x00000004UL)
278#define ADC_OFFSET5_REGOFFSET (0x00000005UL)
279#define ADC_OFFSETx_REGOFFSET_MASK (ADC_OFFSET0_REGOFFSET | ADC_OFFSET1_REGOFFSET \
280 | ADC_OFFSET2_REGOFFSET | ADC_OFFSET3_REGOFFSET \
281 | ADC_OFFSET4_REGOFFSET | ADC_OFFSET5_REGOFFSET)
282
283/* ADC registers bits positions */
284#define ADC_CFGR_AWD1SGL_BITOFFSET_POS (ADC_CFGR_AWD1SGL_Pos)
285#define ADC_CFGR_AWD1EN_BITOFFSET_POS (ADC_CFGR_AWD1EN_Pos)
286#define ADC_CFGR_JAWD1EN_BITOFFSET_POS (ADC_CFGR_JAWD1EN_Pos)
287#define ADC_TR1_HT1_BITOFFSET_POS (ADC_TR1_HT1_Pos)
288
289/* ADC registers bits groups */
290#define ADC_CR_BITS_PROPERTY_RS (ADC_CR_JADSTP | ADC_CR_ADSTP | ADC_CR_JADSTART | ADC_CR_ADSTART | ADC_CR_ADEN) /* ADC register CR bits with HW property "rs": Software can read as well as set this bit. Writing '0' has no effect on the bit value. */
291
295
296#define DDL_ADC16_REG_TRIG_SOFTWARE (0x00000000UL)
297#define DDL_ADC16_REG_TRIG_EXT_TMR1_CC1 (ADC_REG_TRIG_EXT_EDGE_DEFAULT)
298#define DDL_ADC16_REG_TRIG_EXT_TMR1_CC2 (ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
299#define DDL_ADC16_REG_TRIG_EXT_TMR1_CC3 (ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
300#define DDL_ADC16_REG_TRIG_EXT_TMR2_CC2 (ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
301#define DDL_ADC16_REG_TRIG_EXT_TMR3_TRGO (ADC_CFGR_EXTSEL_2 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
302#define DDL_ADC16_REG_TRIG_EXT_TMR4_CC4 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
303#define DDL_ADC16_REG_TRIG_EXT_EINT_LINE11 (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
304#define DDL_ADC16_REG_TRIG_EXT_TMR1_TRGO (ADC_CFGR_EXTSEL_2 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
305#define DDL_ADC16_REG_TRIG_EXT_TMR2_TRGO (ADC_CFGR_EXTSEL_3 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
306#define DDL_ADC16_REG_TRIG_EXT_TMR4_TRGO (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
307#define DDL_ADC16_REG_TRIG_EXT_TMR3_CC4 (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
308#define DDL_ADC16_REG_TRIG_EXT_LPTMROUT (ADC_CFGR_EXTSEL_3 | ADC_CFGR_EXTSEL_1 | ADC_CFGR_EXTSEL_0 | ADC_REG_TRIG_EXT_EDGE_DEFAULT)
312
316#define DDL_ADC16_REG_TRIG_EXT_RISING ( ADC_CFGR_EXTEN_0)
317#define DDL_ADC16_REG_TRIG_EXT_FALLING (ADC_CFGR_EXTEN_1 )
318#define DDL_ADC16_REG_TRIG_EXT_RISINGFALLING (ADC_CFGR_EXTEN_1 | ADC_CFGR_EXTEN_0)
322
326#define DDL_ADC16_REG_SEQ_SCAN_DISABLE (0x00000000UL)
327#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_2RANKS ( ADC_SQR1_RL_0)
328#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_3RANKS ( ADC_SQR1_RL_1 )
329#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_4RANKS ( ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
330#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_5RANKS ( ADC_SQR1_RL_2 )
331#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_6RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_0)
332#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_7RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_1 )
333#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_8RANKS ( ADC_SQR1_RL_2 | ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
334#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_9RANKS (ADC_SQR1_RL_3 )
335#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_10RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_0)
336#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_11RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_1 )
337#define DDL_ADC16_REG_SEQ_SCAN_ENABLE_12RANKS (ADC_SQR1_RL_3 | ADC_SQR1_RL_1 | ADC_SQR1_RL_0)
341
345#define DDL_ADC16_REG_SEQ_DISCONT_DISABLE (0x00000000UL)
346#define DDL_ADC16_REG_SEQ_DISCONT_1RANK ( ADC_CFGR_DISCEN)
347#define DDL_ADC16_REG_SEQ_DISCONT_2RANKS ( ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
348#define DDL_ADC16_REG_SEQ_DISCONT_3RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCEN)
349#define DDL_ADC16_REG_SEQ_DISCONT_4RANKS ( ADC_CFGR_DISCNUM_1 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
350#define DDL_ADC16_REG_SEQ_DISCONT_5RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCEN)
351#define DDL_ADC16_REG_SEQ_DISCONT_6RANKS (ADC_CFGR_DISCNUM_2 | ADC_CFGR_DISCNUM_0 | ADC_CFGR_DISCEN)
355
359#define DDL_ADC16_REG_RANK_1 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_1_SQRX_BITOFFSET_POS)
360#define DDL_ADC16_REG_RANK_2 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_2_SQRX_BITOFFSET_POS)
361#define DDL_ADC16_REG_RANK_3 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_3_SQRX_BITOFFSET_POS)
362#define DDL_ADC16_REG_RANK_4 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_4_SQRX_BITOFFSET_POS)
363#define DDL_ADC16_REG_RANK_5 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_5_SQRX_BITOFFSET_POS)
364#define DDL_ADC16_REG_RANK_6 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_6_SQRX_BITOFFSET_POS)
365#define DDL_ADC16_REG_RANK_7 (ADC_SQR1_REGOFFSET | ADC_REG_RANK_7_SQRX_BITOFFSET_POS)
366#define DDL_ADC16_REG_RANK_8 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_8_SQRX_BITOFFSET_POS)
367#define DDL_ADC16_REG_RANK_9 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_9_SQRX_BITOFFSET_POS)
368#define DDL_ADC16_REG_RANK_10 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_10_SQRX_BITOFFSET_POS)
369#define DDL_ADC16_REG_RANK_11 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_11_SQRX_BITOFFSET_POS)
370#define DDL_ADC16_REG_RANK_12 (ADC_SQR2_REGOFFSET | ADC_REG_RANK_12_SQRX_BITOFFSET_POS)
374
378#define DDL_ADC16_INJ_SEQ_SCAN_DISABLE (0x00000000UL)
379#define DDL_ADC16_INJ_SEQ_SCAN_ENABLE_2RANKS ( ADC_JSQR_JL_0)
380#define DDL_ADC16_INJ_SEQ_SCAN_ENABLE_3RANKS (ADC_JSQR_JL_1 )
381#define DDL_ADC16_INJ_SEQ_SCAN_ENABLE_4RANKS (ADC_JSQR_JL_1 | ADC_JSQR_JL_0)
385
389#define DDL_ADC16_INJ_SEQ_DISCONT_DISABLE (0x00000000UL)
390#define DDL_ADC16_INJ_SEQ_DISCONT_1RANK (ADC_CFGR_JDISCEN)
394
398#define DDL_ADC16_MULTI_INDEPENDENT (0x00000000UL)
399#define DDL_ADC16_MULTI_DUAL_REG_SIMULT (ADC_CR_DUALMOD_2 | ADC_CR_DUALMOD_1)
400#define DDL_ADC16_MULTI_DUAL_REG_INTERL (ADC_CR_DUALMOD_2 | ADC_CR_DUALMOD_1 | ADC_CR_DUALMOD_0)
401#define DDL_ADC16_MULTI_DUAL_INJ_SIMULT (ADC_CR_DUALMOD_2 | ADC_CR_DUALMOD_0)
402#define DDL_ADC16_MULTI_DUAL_INJ_ALTERN (ADC_CR_DUALMOD_3 | ADC_CR_DUALMOD_0)
403#define DDL_ADC16_MULTI_DUAL_REG_SIM_INJ_SIM (ADC_CR_DUALMOD_0)
404#define DDL_ADC16_MULTI_DUAL_REG_SIM_INJ_ALT (ADC_CR_DUALMOD_1)
405#define DDL_ADC16_MULTI_DUAL_REG_INT_INJ_SIM (ADC_CR_DUALMOD_1 | ADC_CR_DUALMOD_0)
409
413#define DDL_ADC16_CR_ADDIS_NOT_EXECUTED (0x00000000UL)
414#define DDL_ADC16_CR_ADDIS_EXECUTION_IN_PROGRESS ADC_CR_ADDIS
418
422#define DDL_ADC16_SINGLE_INP0 (0x00U)
423#define DDL_ADC16_SINGLE_INP1 (0x01U)
424#define DDL_ADC16_SINGLE_INP2 (0x02U)
425#define DDL_ADC16_SINGLE_INN0 (0x03U)
426#define DDL_ADC16_SINGLE_INN1 (0x04U)
427#define DDL_ADC16_SINGLE_INN2 (0x05U)
431
435#define DDL_ADC16_DIFF_CHANNEL0 (0x00U)
436#define DDL_ADC16_DIFF_CHANNEL1 (0x01U)
437#define DDL_ADC16_DIFF_CHANNEL2 (0x02U)
441
445
446/* Exported types ------------------------------------------------------------*/
447#if defined(USE_FULL_DDL_DRIVER)
451
472typedef struct
473{
474 uint32_t LowPowerMode;
475
477
497typedef struct
498{
499 uint32_t TriggerSource;
500
502
504
505 uint32_t ContinuousMode;
506
507 uint32_t DMATransfer;
508
509 uint32_t Overrun;
510
512
532typedef struct
533{
534 uint32_t TriggerSource;
535
537
539
540 uint32_t TrigAuto;
541
543
547#endif /* USE_FULL_DDL_DRIVER */
548
549/* Private macros ------------------------------------------------------------*/
556/* List of ADC registers intended to be used (most commonly) with */
557/* DMA transfer. */
558/* Refer to function @ref DDL_ADC16_DMA_GetRegAddr(). */
559#define DDL_ADC16_DMA_REG_REGULAR_DATA (0x00000000UL) /* ADC group regular conversion data register (corresponding to register DR) to be used with ADC configured in independent mode. Without DMA transfer, register accessed by DDL function @ref DDL_ADC16_REG_ReadConversionData32() and other functions @ref DDL_ADC16_REG_ReadConversionDatax() */
563
567#define DDL_ADC16_LP_MODE_NONE (0x00000000UL)
568#define DDL_ADC16_LP_AUTOWAIT (ADC_CFGR_AUTDLY)
572
576#define DDL_ADC16_OFFSET_0 ADC_OFFSET0_REGOFFSET
577#define DDL_ADC16_OFFSET_1 ADC_OFFSET1_REGOFFSET
578#define DDL_ADC16_OFFSET_2 ADC_OFFSET2_REGOFFSET
579#define DDL_ADC16_OFFSET_3 ADC_OFFSET3_REGOFFSET
580#define DDL_ADC16_OFFSET_4 ADC_OFFSET4_REGOFFSET
581#define DDL_ADC16_OFFSET_5 ADC_OFFSET5_REGOFFSET
585
589#define DDL_ADC16_OFFSET_DISABLE (0x00000000UL)
590#define DDL_ADC16_OFFSET_ENABLE (ADC_OFFSET1_OFFSET1_EN)
594
598#define DDL_ADC16_OFFSET_SIGN_NEGATIVE (0x00000000UL)
599#define DDL_ADC16_OFFSET_SIGN_POSITIVE (ADC_OFFSET1_OFFSETPOS)
603
607#define DDL_ADC16_CHANNEL_0 (ADC_CHANNEL_0_NUMBER | ADC_CHANNEL_0_SMP | ADC_CHANNEL_0_BITFIELD )
608#define DDL_ADC16_CHANNEL_1 (ADC_CHANNEL_1_NUMBER | ADC_CHANNEL_1_SMP | ADC_CHANNEL_1_BITFIELD )
609#define DDL_ADC16_CHANNEL_2 (ADC_CHANNEL_2_NUMBER | ADC_CHANNEL_2_SMP | ADC_CHANNEL_2_BITFIELD )
610#define DDL_ADC16_CHANNEL_3 (ADC_CHANNEL_3_NUMBER | ADC_CHANNEL_3_SMP | ADC_CHANNEL_3_BITFIELD )
611#define DDL_ADC16_CHANNEL_4 (ADC_CHANNEL_4_NUMBER | ADC_CHANNEL_4_SMP | ADC_CHANNEL_4_BITFIELD )
612#define DDL_ADC16_CHANNEL_5 (ADC_CHANNEL_5_NUMBER | ADC_CHANNEL_5_SMP | ADC_CHANNEL_5_BITFIELD )
616
620#define DDL_ADC16_REG_CONV_SINGLE (0x00000000UL)
621#define DDL_ADC16_REG_CONV_CONTINUOUS (ADC_CFGR_CONT)
625
629#define DDL_ADC16_REG_DMA_TRANSFER_NONE (0x00000000UL)
630#define DDL_ADC16_REG_DMA_TRANSFER_LIMITED ( ADC_CFGR_DMAEN)
631#define DDL_ADC16_REG_DMA_TRANSFER_UNLIMITED (ADC_CFGR_DMACFG | ADC_CFGR_DMAEN)
635
639#define DDL_ADC16_REG_OVR_DATA_PRESERVED (0x00000000UL)
640#define DDL_ADC16_REG_OVR_DATA_OVERWRITTEN (ADC_CFGR_OVRMOD)
644
648#define DDL_ADC16_INJ_TRIG_SOFTWARE (0x00000000UL)
649#define DDL_ADC16_INJ_TRIG_EXT_TMR1_TRGO (ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
650#define DDL_ADC16_INJ_TRIG_EXT_TMR1_CC4 (ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
651#define DDL_ADC16_INJ_TRIG_EXT_TMR2_TRGO (ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
652#define DDL_ADC16_INJ_TRIG_EXT_TMR2_CC1 (ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
653#define DDL_ADC16_INJ_TRIG_EXT_TMR2_CC4 (ADC_JSQR_JEXTSEL_2 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
654#define DDL_ADC16_INJ_TRIG_EXT_TMR4_TRGO (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
655#define DDL_ADC16_INJ_TRIG_EXT_EINT_LINE15 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
656#define DDL_ADC16_INJ_TRIG_EXT_TMR3_CC3 (ADC_JSQR_JEXTSEL_2 | ADC_JSQR_JEXTSEL_1 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
657#define DDL_ADC16_INJ_TRIG_EXT_TMR3_TRGO (ADC_JSQR_JEXTSEL_3 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
658#define DDL_ADC16_INJ_TRIG_EXT_TMR3_CC1 (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_0 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
659#define DDL_ADC16_INJ_TRIG_EXT_LPTMROUT (ADC_JSQR_JEXTSEL_3 | ADC_JSQR_JEXTSEL_1 | ADC_INJ_TRIG_EXT_EDGE_DEFAULT)
663
667#define DDL_ADC16_INJ_TRIG_EXT_RISING ( ADC_JSQR_JEXTEN_0)
668#define DDL_ADC16_INJ_TRIG_EXT_FALLING (ADC_JSQR_JEXTEN_1 )
669#define DDL_ADC16_INJ_TRIG_EXT_RISINGFALLING (ADC_JSQR_JEXTEN_1 | ADC_JSQR_JEXTEN_0)
673
677#define DDL_ADC16_INJ_RANK_1 (ADC_JDR1_REGOFFSET | ADC_INJ_RANK_1_JSQR_BITOFFSET_POS)
678#define DDL_ADC16_INJ_RANK_2 (ADC_JDR2_REGOFFSET | ADC_INJ_RANK_2_JSQR_BITOFFSET_POS)
679#define DDL_ADC16_INJ_RANK_3 (ADC_JDR3_REGOFFSET | ADC_INJ_RANK_3_JSQR_BITOFFSET_POS)
680#define DDL_ADC16_INJ_RANK_4 (ADC_JDR4_REGOFFSET | ADC_INJ_RANK_4_JSQR_BITOFFSET_POS)
684
688#define DDL_ADC16_INJ_TRIG_INDEPENDENT (0x00000000UL)
689#define DDL_ADC16_INJ_TRIG_FROM_GRP_REGULAR (ADC_CFGR_JAUTO)
693
697#define DDL_ADC16_INJ_QUEUE_2CONTEXTS_LAST_ACTIVE (0x00000000UL) /* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue maintains the last context active perpetually. */
698#define DDL_ADC16_INJ_QUEUE_2CONTEXTS_END_EMPTY (ADC_CFGR_JQM) /* Group injected sequence context queue is enabled and can contain up to 2 contexts. When all contexts have been processed, the queue is empty and injected group triggers are disabled. */
699#define DDL_ADC16_INJ_QUEUE_DISABLE (ADC_CFGR_JQDIS) /* Group injected sequence context queue is disabled: only 1 sequence can be configured and is active perpetually. */
703
707#define DDL_ADC16_SAMPLINGTIME_1CYCLES (0x00000000)
708#define DDL_ADC16_SAMPLINGTIME_2CYCLES (ADC_SMPR1_SMP0_0)
709#define DDL_ADC16_SAMPLINGTIME_3CYCLES (ADC_SMPR1_SMP0_1)
710#define DDL_ADC16_SAMPLINGTIME_4CYCLES (ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
711#define DDL_ADC16_SAMPLINGTIME_5CYCLES (ADC_SMPR1_SMP0_2)
712#define DDL_ADC16_SAMPLINGTIME_6CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_0)
713#define DDL_ADC16_SAMPLINGTIME_7CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1)
714#define DDL_ADC16_SAMPLINGTIME_8CYCLES (ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
715#define DDL_ADC16_SAMPLINGTIME_9CYCLES (ADC_SMPR1_SMP0_3)
716#define DDL_ADC16_SAMPLINGTIME_10CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_0)
717#define DDL_ADC16_SAMPLINGTIME_11CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_1)
718#define DDL_ADC16_SAMPLINGTIME_12CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
719#define DDL_ADC16_SAMPLINGTIME_13CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_2)
720#define DDL_ADC16_SAMPLINGTIME_14CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_0)
721#define DDL_ADC16_SAMPLINGTIME_15CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1)
722#define DDL_ADC16_SAMPLINGTIME_16CYCLES (ADC_SMPR1_SMP0_3 | ADC_SMPR1_SMP0_2 | ADC_SMPR1_SMP0_1 | ADC_SMPR1_SMP0_0)
723
727
731#define DDL_ADC16_AWD1 (ADC_AWD_CR1_CHANNEL_MASK | ADC_AWD_CR1_REGOFFSET)
732#define DDL_ADC16_AWD2 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR2_REGOFFSET)
733#define DDL_ADC16_AWD3 (ADC_AWD_CR23_CHANNEL_MASK | ADC_AWD_CR3_REGOFFSET)
737
741#define DDL_ADC16_AWD_DISABLE (0x00000000UL)
742#define DDL_ADC16_AWD_ALL_CHANNELS_REG (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_AWD1EN )
743#define DDL_ADC16_AWD_ALL_CHANNELS_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN )
744#define DDL_ADC16_AWD_ALL_CHANNELS_REG_INJ (ADC_AWD_CR23_CHANNEL_MASK | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN )
745#define DDL_ADC16_AWD_CHANNEL_0_REG ((DDL_ADC16_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
746#define DDL_ADC16_AWD_CHANNEL_0_INJ ((DDL_ADC16_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
747#define DDL_ADC16_AWD_CHANNEL_0_REG_INJ ((DDL_ADC16_CHANNEL_0 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
748#define DDL_ADC16_AWD_CHANNEL_1_REG ((DDL_ADC16_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
749#define DDL_ADC16_AWD_CHANNEL_1_INJ ((DDL_ADC16_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
750#define DDL_ADC16_AWD_CHANNEL_1_REG_INJ ((DDL_ADC16_CHANNEL_1 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
751#define DDL_ADC16_AWD_CHANNEL_2_REG ((DDL_ADC16_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
752#define DDL_ADC16_AWD_CHANNEL_2_INJ ((DDL_ADC16_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
753#define DDL_ADC16_AWD_CHANNEL_2_REG_INJ ((DDL_ADC16_CHANNEL_2 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
754#define DDL_ADC16_AWD_CHANNEL_3_REG ((DDL_ADC16_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
755#define DDL_ADC16_AWD_CHANNEL_3_INJ ((DDL_ADC16_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
756#define DDL_ADC16_AWD_CHANNEL_3_REG_INJ ((DDL_ADC16_CHANNEL_3 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
757#define DDL_ADC16_AWD_CHANNEL_4_REG ((DDL_ADC16_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
758#define DDL_ADC16_AWD_CHANNEL_4_INJ ((DDL_ADC16_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
759#define DDL_ADC16_AWD_CHANNEL_4_REG_INJ ((DDL_ADC16_CHANNEL_4 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
760#define DDL_ADC16_AWD_CHANNEL_5_REG ((DDL_ADC16_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
761#define DDL_ADC16_AWD_CHANNEL_5_INJ ((DDL_ADC16_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1SGL)
762#define DDL_ADC16_AWD_CHANNEL_5_REG_INJ ((DDL_ADC16_CHANNEL_5 & ADC_CHANNEL_ID_MASK) | ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
763
767
771#define DDL_ADC16_AWD_THRESHOLD_HIGH (ADC_TR1_HT1 )
772#define DDL_ADC16_AWD_THRESHOLD_LOW ( ADC_TR1_LT1)
773#define DDL_ADC16_AWD_THRESHOLDS_HIGH_LOW (ADC_TR1_HT1 | ADC_TR1_LT1)
777
781#define DDL_ADC16_OVS_DISABLE (0x00000000UL)
782#define DDL_ADC16_OVS_GRP_REGULAR_CONTINUED ( ADC_CFGR2_ROVSE)
783#define DDL_ADC16_OVS_GRP_REGULAR_RESUMED (ADC_CFGR2_ROVSM | ADC_CFGR2_ROVSE)
784#define DDL_ADC16_OVS_GRP_INJECTED ( ADC_CFGR2_JOVSE )
785#define DDL_ADC16_OVS_GRP_INJ_REG_RESUMED ( ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSE)
789
793#define DDL_ADC16_OVS_REG_CONT (0x00000000UL)
794#define DDL_ADC16_OVS_REG_DISCONT (ADC_CFGR2_TROVS)
798
802#define DDL_ADC16_OVS_RATIO_2 (0x00000000UL)
803#define DDL_ADC16_OVS_RATIO_4 ( ADC_CFGR2_OVSR_0)
804#define DDL_ADC16_OVS_RATIO_8 ( ADC_CFGR2_OVSR_1 )
805#define DDL_ADC16_OVS_RATIO_16 ( ADC_CFGR2_OVSR_1 | ADC_CFGR2_OVSR_0)
809
813#define DDL_ADC16_OVS_SHIFT_NONE (0x00000000UL)
814#define DDL_ADC16_OVS_SHIFT_RIGHT_1 ( ADC_CFGR2_OVSS_0)
815#define DDL_ADC16_OVS_SHIFT_RIGHT_2 ( ADC_CFGR2_OVSS_1 )
816#define DDL_ADC16_OVS_SHIFT_RIGHT_3 ( ADC_CFGR2_OVSS_1 | ADC_CFGR2_OVSS_0)
817#define DDL_ADC16_OVS_SHIFT_RIGHT_4 ( ADC_CFGR2_OVSS_2 )
821
826#define DDL_ADC16_FLAG_EOC ADC_ISR_EOC
827#define DDL_ADC16_FLAG_EOS ADC_ISR_EOS
828#define DDL_ADC16_FLAG_OVR ADC_ISR_OVR
829#define DDL_ADC16_FLAG_EOSMP ADC_ISR_EOSMP
830#define DDL_ADC16_FLAG_JEOC ADC_ISR_JEOC
831#define DDL_ADC16_FLAG_JEOS ADC_ISR_JEOS
832#define DDL_ADC16_FLAG_JQOVF ADC_ISR_JQOVF
833#define DDL_ADC16_FLAG_AWD1 ADC_ISR_AWD1
834#define DDL_ADC16_FLAG_AWD2 ADC_ISR_AWD2
835#define DDL_ADC16_FLAG_AWD3 ADC_ISR_AWD3
839
844#define DDL_ADC16_IT_EOC ADC_IER_EOCIE
845#define DDL_ADC16_IT_EOS ADC_IER_EOSIE
846#define DDL_ADC16_IT_OVR ADC_IER_OVRIE
847#define DDL_ADC16_IT_EOSMP ADC_IER_EOSMPIE
848#define DDL_ADC16_IT_JEOC ADC_IER_JEOCIE
849#define DDL_ADC16_IT_JEOS ADC_IER_JEOSIE
850#define DDL_ADC16_IT_JQOVF ADC_IER_JQOVFIE
851#define DDL_ADC16_IT_AWD1 ADC_IER_AWD1IE
852#define DDL_ADC16_IT_AWD2 ADC_IER_AWD2IE
853#define DDL_ADC16_IT_AWD3 ADC_IER_AWD3IE
857
861#define DDL_ADC16_SINGLE_ENDED (0x00000000)
862#define DDL_ADC16_DIFFERENTIAL_ENDED (ADC_CFGR2_DIFSEL_Msk)
866
870#define DDL_ADC16_AWD_FILTERING_NONE (0x00000000UL)
871#define DDL_ADC16_AWD_FILTERING_2SAMPLES ( ADC_CFGR2_AWDFILT_0)
872#define DDL_ADC16_AWD_FILTERING_3SAMPLES ( ADC_CFGR2_AWDFILT_1 )
873#define DDL_ADC16_AWD_FILTERING_4SAMPLES ( ADC_CFGR2_AWDFILT_1 | ADC_CFGR2_AWDFILT_0)
874#define DDL_ADC16_AWD_FILTERING_5SAMPLES (ADC_CFGR2_AWDFILT_2 )
875#define DDL_ADC16_AWD_FILTERING_6SAMPLES (ADC_CFGR2_AWDFILT_2 | ADC_CFGR2_AWDFILT_0)
876#define DDL_ADC16_AWD_FILTERING_7SAMPLES (ADC_CFGR2_AWDFILT_2 | ADC_CFGR2_AWDFILT_1 )
877#define DDL_ADC16_AWD_FILTERING_8SAMPLES (ADC_CFGR2_AWDFILT_2 | ADC_CFGR2_AWDFILT_1 | ADC_CFGR2_AWDFILT_0)
881
885#define DDL_ADC16_VREF_INTERNAL (ADC_CAL_REF_SEL)
886#define DDL_ADC16_VREF_EXTERNAL (0x00000000)
887
891
895
896/* Private macros ------------------------------------------------------------*/
900
909#define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__) \
910 ((__IO uint32_t *)((uint32_t) ((uint32_t)(&(__REG__)) + ((__REG_OFFFSET__) << 2UL))))
911
930#define __DDL_ADC16_CHANNEL_TO_DECIMAL_NB(__CHANNEL__) \
931 ((((__CHANNEL__) & ADC_CHANNEL_ID_BITFIELD_MASK) == 0UL) ? \
932 ( \
933 ((__CHANNEL__) & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS \
934 ) \
935 : \
936 ( \
937 (uint32_t)POSITION_VAL((__CHANNEL__)) \
938 ) \
939 )
940
944
945/* Exported functions --------------------------------------------------------*/
952/* Note: DDL ADC functions to set DMA transfer are located into sections of */
953/* configuration of ADC instance, groups and multimode (if available): */
954/* @ref DDL_ADC16_REG_SetDMATransfer(), ... */
955
983__STATIC_INLINE uint32_t DDL_ADC16_DMA_GetRegAddr(ADC16_TypeDef *ADCx, uint32_t Register)
984{
985 /* Prevent unused argument(s) compilation warning */
986 (void)(Register);
987
988 /* Retrieve address of register DR */
989 return (uint32_t) &(ADCx->DR);
990}
991
995
999
1046__STATIC_INLINE void DDL_ADC16_SetLowPowerMode(ADC16_TypeDef *ADCx, uint32_t LowPowerMode)
1047{
1048 MODIFY_REG(ADCx->CFGR, ADC_CFGR_AUTDLY, LowPowerMode);
1049}
1050
1096__STATIC_INLINE uint32_t DDL_ADC16_GetLowPowerMode(ADC16_TypeDef *ADCx)
1097{
1098 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_AUTDLY));
1099}
1100
1125__STATIC_INLINE void DDL_ADC16_SetOffset(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetLevel)
1126{
1127 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1128
1129 MODIFY_REG(*preg,
1130 ADC_OFFSET1_OFFSET1_EN | ADC_OFFSET1_OFFSET1,
1131 ADC_OFFSET1_OFFSET1_EN | OffsetLevel);
1132}
1133
1148__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetLevel(ADC16_TypeDef *ADCx, uint32_t Offsety)
1149{
1150 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1151
1152 return (uint32_t) READ_BIT(*preg, ADC_OFFSET1_OFFSET1);
1153}
1154
1175__STATIC_INLINE void DDL_ADC16_SetOffsetState(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetState)
1176{
1177 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1178
1179 MODIFY_REG(*preg,
1180 ADC_OFFSET1_OFFSET1_EN,
1181 OffsetState);
1182}
1183
1199__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetState(ADC16_TypeDef *ADCx, uint32_t Offsety)
1200{
1201 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1202
1203 return (uint32_t) READ_BIT(*preg, ADC_OFFSET1_OFFSET1_EN);
1204}
1205
1222__STATIC_INLINE void DDL_ADC16_SetOffsetSign(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetSign)
1223{
1224 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1225
1226 MODIFY_REG(*preg,
1227 ADC_OFFSET1_OFFSETPOS,
1228 OffsetSign);
1229}
1230
1246__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetSign(ADC16_TypeDef *ADCx, uint32_t Offsety)
1247{
1248 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->OFFSET0, Offsety);
1249
1250 return (uint32_t) READ_BIT(*preg, ADC_OFFSET1_OFFSETPOS);
1251}
1252
1256
1284__STATIC_INLINE void DDL_ADC16_REG_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
1285{
1286 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL, TriggerSource);
1287}
1288
1313__STATIC_INLINE uint32_t DDL_ADC16_REG_GetTriggerSource(ADC16_TypeDef *ADCx)
1314{
1315 return (uint32_t)READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN | ADC_CFGR_EXTSEL);
1316}
1317
1325__STATIC_INLINE uint32_t DDL_ADC16_REG_IsTriggerSourceSWStart(ADC16_TypeDef *ADCx)
1326{
1327 return ((READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN) == (DDL_ADC16_REG_TRIG_SOFTWARE & ADC_CFGR_EXTEN)) ? 1UL : 0UL);
1328}
1329
1343__STATIC_INLINE void DDL_ADC16_REG_SetTriggerEdge(ADC16_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
1344{
1345 MODIFY_REG(ADCx->CFGR, ADC_CFGR_EXTEN, ExternalTriggerEdge);
1346}
1347
1357__STATIC_INLINE uint32_t DDL_ADC16_REG_GetTriggerEdge(ADC16_TypeDef *ADCx)
1358{
1359 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_EXTEN));
1360}
1361
1410__STATIC_INLINE void DDL_ADC16_REG_SetSequencerLength(ADC16_TypeDef *ADCx, uint32_t SequencerNbRanks)
1411{
1412 MODIFY_REG(ADCx->SQR1, ADC_SQR1_RL, SequencerNbRanks);
1413}
1414
1459__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerLength(ADC16_TypeDef *ADCx)
1460{
1461 return (uint32_t)(READ_BIT(ADCx->SQR1, ADC_SQR1_RL));
1462}
1463
1483__STATIC_INLINE void DDL_ADC16_REG_SetSequencerDiscont(ADC16_TypeDef *ADCx, uint32_t SeqDiscont)
1484{
1485 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM, SeqDiscont);
1486}
1487
1502__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerDiscont(ADC16_TypeDef *ADCx)
1503{
1504 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DISCEN | ADC_CFGR_DISCNUM));
1505}
1506
1537__STATIC_INLINE void DDL_ADC16_REG_SetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
1538{
1539 /* Set bits with content of parameter "Channel" with bits position */
1540 /* in register and register position depending on parameter "Rank". */
1541 /* Parameters "Rank" and "Channel" are used with masks because containing */
1542 /* other bits reserved for other purpose. */
1543 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS));
1544 __IO uint32_t value = ((Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS);
1545 __IO uint32_t temp = 0;
1546 uint32_t regVal;
1547
1548 switch(value)
1549 {
1550 case 0: temp = 1; break;
1551 case 1: temp = 2; break;
1552 case 2: temp = 3; break;
1553 case 3: temp = 4; break;
1554 case 4: temp = 8; break;
1555 case 5: temp = 12; break;
1556 default: temp = 0; break;
1557 }
1558
1559 regVal = *preg;
1560
1562
1563 regVal |= (temp << (Rank & ADC_REG_RANK_ID_SQRX_MASK));
1564
1565 *preg = regVal;
1566}
1567
1607__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank)
1608{
1609 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->SQR1, ((Rank & ADC_REG_SQRX_REGOFFSET_MASK) >> ADC_SQRX_REGOFFSET_POS));
1610 __IO uint32_t value = (READ_BIT(*preg, ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0 << (Rank & ADC_REG_RANK_ID_SQRX_MASK)) >> (Rank & ADC_REG_RANK_ID_SQRX_MASK));
1611 __IO uint32_t temp = 0;
1612
1613 switch(value)
1614 {
1615 case 1: temp = 0; break;
1616 case 2: temp = 1; break;
1617 case 3: temp = 2; break;
1618 case 4: temp = 3; break;
1619 case 8: temp = 4; break;
1620 case 12: temp = 5; break;
1621 }
1622
1623 return (uint32_t)(temp << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS);
1624}
1625
1643__STATIC_INLINE void DDL_ADC16_REG_SetContinuousMode(ADC16_TypeDef *ADCx, uint32_t Continuous)
1644{
1645 MODIFY_REG(ADCx->CFGR, ADC_CFGR_CONT, Continuous);
1646}
1647
1659__STATIC_INLINE uint32_t DDL_ADC16_REG_GetContinuousMode(ADC16_TypeDef *ADCx)
1660{
1661 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_CONT));
1662}
1663
1694__STATIC_INLINE void DDL_ADC16_REG_SetDMATransfer(ADC16_TypeDef *ADCx, uint32_t DMATransfer)
1695{
1696 MODIFY_REG(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG, DMATransfer);
1697}
1698
1727__STATIC_INLINE uint32_t DDL_ADC16_REG_GetDMATransfer(ADC16_TypeDef *ADCx)
1728{
1729 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_DMAEN | ADC_CFGR_DMACFG));
1730}
1731
1750__STATIC_INLINE void DDL_ADC16_REG_SetOverrun(ADC16_TypeDef *ADCx, uint32_t Overrun)
1751{
1752 MODIFY_REG(ADCx->CFGR, ADC_CFGR_OVRMOD, Overrun);
1753}
1754
1763__STATIC_INLINE uint32_t DDL_ADC16_REG_GetOverrun(ADC16_TypeDef *ADCx)
1764{
1765 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_OVRMOD));
1766}
1767
1771
1801__STATIC_INLINE void DDL_ADC16_INJ_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
1802{
1803 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN, TriggerSource);
1804}
1805
1828__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTriggerSource(ADC16_TypeDef *ADCx)
1829{
1830 return (uint32_t)READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTSEL | ADC_JSQR_JEXTEN);
1831}
1832
1840__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsTriggerSourceSWStart(ADC16_TypeDef *ADCx)
1841{
1842 return ((READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN) == (DDL_ADC16_INJ_TRIG_SOFTWARE & ADC_JSQR_JEXTEN)) ? 1UL : 0UL);
1843}
1844
1857__STATIC_INLINE void DDL_ADC16_INJ_SetTriggerEdge(ADC16_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
1858{
1859 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JEXTEN, ExternalTriggerEdge);
1860}
1861
1871__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTriggerEdge(ADC16_TypeDef *ADCx)
1872{
1873 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JEXTEN));
1874}
1875
1895__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerLength(ADC16_TypeDef *ADCx, uint32_t SequencerNbRanks)
1896{
1897 MODIFY_REG(ADCx->JSQR, ADC_JSQR_JL, SequencerNbRanks);
1898}
1899
1915__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerLength(ADC16_TypeDef *ADCx)
1916{
1917 return (uint32_t)(READ_BIT(ADCx->JSQR, ADC_JSQR_JL));
1918}
1919
1932__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerDiscont(ADC16_TypeDef *ADCx, uint32_t SeqDiscont)
1933{
1934 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JDISCEN, SeqDiscont);
1935}
1936
1946__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerDiscont(ADC16_TypeDef *ADCx)
1947{
1948 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JDISCEN));
1949}
1950
1971__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
1972{
1973 /* Set bits with content of parameter "Channel" with bits position */
1974 /* in register depending on parameter "Rank". */
1975 /* Parameters "Rank" and "Channel" are used with masks because containing */
1976 /* other bits reserved for other purpose. */
1977 __IO uint32_t value = ((Channel & ADC_CHANNEL_ID_NUMBER_MASK) >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS);
1978 __IO uint32_t temp = 0;
1979
1980 switch(value)
1981 {
1982 case 0: temp = 1; break;
1983 case 1: temp = 2; break;
1984 case 2: temp = 3; break;
1985 case 3: temp = 4; break;
1986 case 4: temp = 8; break;
1987 case 5: temp = 12; break;
1988 default: temp = 0; break;
1989 }
1990
1991 MODIFY_REG(ADCx->JSQR,
1993 temp << (Rank & ADC_INJ_RANK_ID_JSQR_MASK));
1994}
1995
2014__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank)
2015{
2016 __IO uint32_t value = (READ_BIT(ADCx->JSQR, (ADC_CHANNEL_ID_NUMBER_MASK >> ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS) << (Rank & ADC_INJ_RANK_ID_JSQR_MASK)) >> (Rank & ADC_INJ_RANK_ID_JSQR_MASK));
2017 __IO uint32_t temp = 0;
2018 switch(value)
2019 {
2020 case 1: temp = 0; break;
2021 case 2: temp = 1; break;
2022 case 3: temp = 2; break;
2023 case 4: temp = 3; break;
2024 case 8: temp = 4; break;
2025 case 12: temp = 5; break;
2026 }
2027
2028 return (uint32_t)(temp << ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS);
2029}
2030
2059__STATIC_INLINE void DDL_ADC16_INJ_SetTrigAuto(ADC16_TypeDef *ADCx, uint32_t TrigAuto)
2060{
2061 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JAUTO, TrigAuto);
2062}
2063
2072__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTrigAuto(ADC16_TypeDef *ADCx)
2073{
2074 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JAUTO));
2075}
2076
2112__STATIC_INLINE void DDL_ADC16_INJ_SetQueueMode(ADC16_TypeDef *ADCx, uint32_t QueueMode)
2113{
2114 MODIFY_REG(ADCx->CFGR, ADC_CFGR_JQM | ADC_CFGR_JQDIS, QueueMode);
2115}
2116
2125__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetQueueMode(ADC16_TypeDef *ADCx)
2126{
2127 return (uint32_t)(READ_BIT(ADCx->CFGR, ADC_CFGR_JQM | ADC_CFGR_JQDIS));
2128}
2129
2204__STATIC_INLINE void DDL_ADC16_INJ_ConfigQueueContext(ADC16_TypeDef *ADCx,
2205 uint32_t TriggerSource,
2206 uint32_t ExternalTriggerEdge,
2207 uint32_t SequencerNbRanks,
2208 uint32_t Rank1_Channel,
2209 uint32_t Rank2_Channel,
2210 uint32_t Rank3_Channel,
2211 uint32_t Rank4_Channel)
2212{
2213 /* Set bits with content of parameter "Rankx_Channel" with bits position */
2214 /* in register depending on literal "DDL_ADC16_INJ_RANK_x". */
2215 /* Parameters "Rankx_Channel" and "DDL_ADC16_INJ_RANK_x" are used with masks */
2216 /* because containing other bits reserved for other purpose. */
2217 /* If parameter "TriggerSource" is set to SW start, then parameter */
2218 /* "ExternalTriggerEdge" is discarded. */
2219 uint32_t is_trigger_not_sw = (uint32_t)((TriggerSource != DDL_ADC16_INJ_TRIG_SOFTWARE) ? 1UL : 0UL);
2220 MODIFY_REG(ADCx->JSQR,
2221 ADC_JSQR_JEXTSEL |
2222 ADC_JSQR_JEXTEN |
2223 ADC_JSQR_JSQ4 |
2224 ADC_JSQR_JSQ3 |
2225 ADC_JSQR_JSQ2 |
2226 ADC_JSQR_JSQ1 |
2227 ADC_JSQR_JL,
2228 (TriggerSource & ADC_JSQR_JEXTSEL) |
2229 (ExternalTriggerEdge * (is_trigger_not_sw)) |
2234 SequencerNbRanks
2235 );
2236}
2237
2241
2289__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime(ADC16_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
2290{
2291 /* Set bits with content of parameter "SamplingTime" with bits position */
2292 /* in register and register position depending on parameter "Channel". */
2293 /* Parameter "Channel" is used with masks because containing */
2294 /* other bits reserved for other purpose. */
2295
2296 MODIFY_REG(ADCx->SMPR1,
2297 ADC_SMPR1_SMP0 << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS),
2298 SamplingTime << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS));
2299}
2300
2332__STATIC_INLINE uint32_t DDL_ADC16_GetChannelSamplingTime(ADC16_TypeDef *ADCx, uint32_t Channel)
2333{
2334 return (uint32_t)(READ_BIT(ADCx->SMPR1,
2335 ADC_SMPR1_SMP0 << ((Channel & ADC_CHANNEL_SMPx_BITOFFSET_MASK) >> ADC_CHANNEL_SMPx_BITOFFSET_POS))
2337 );
2338}
2339
2347__STATIC_INLINE void DDL_ADC16_SetDisableCommand(ADC16_TypeDef *ADCx)
2348{
2349 MODIFY_REG(ADCx->CR, ADC_CR_ADDIS, DDL_ADC16_CR_ADDIS_EXECUTION_IN_PROGRESS);
2350}
2351
2359__STATIC_INLINE uint32_t DDL_ADC16_GetDisableCommandStatus(ADC16_TypeDef *ADCx)
2360{
2361 return (uint32_t)READ_BIT(ADCx->CR, ADC_CR_ADDIS);
2362}
2363
2392__STATIC_INLINE void DDL_ADC16_SetChannelSingleDiff(ADC16_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff)
2393{
2394 /* Bits for single or differential mode selection for each channel are set */
2395 /* to 1 only when the differential mode is selected, and to 0 when the */
2396 /* single mode is selected. */
2397 (void)Channel;
2398 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_DIFSEL, SingleDiff);
2399}
2400
2426__STATIC_INLINE uint32_t DDL_ADC16_GetChannelSingleDiff(ADC16_TypeDef *ADCx, uint32_t Channel)
2427{
2428 (void)Channel;
2429 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_DIFSEL));
2430}
2431
2435
2491__STATIC_INLINE void DDL_ADC16_SetAnalogWDMonitChannels(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
2492{
2493 /* Set bits with content of parameter "AWDChannelGroup" with bits position */
2494 /* in register and register position depending on parameter "AWDy". */
2495 /* Parameters "AWDChannelGroup" and "AWDy" are used with masks because */
2496 /* containing other bits reserved for other purpose. */
2497 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC_AWD_CRX_REGOFFSET_MASK) >> ADC_AWD_CRX_REGOFFSET_POS)
2499
2500 MODIFY_REG(*preg,
2502 AWDChannelGroup & AWDy);
2503}
2504
2564__STATIC_INLINE uint32_t DDL_ADC16_GetAnalogWDMonitChannels(ADC16_TypeDef *ADCx, uint32_t AWDy)
2565{
2566 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->CFGR, ((AWDy & ADC_AWD_CRX_REGOFFSET_MASK) >> ADC_AWD_CRX_REGOFFSET_POS)
2568
2569 uint32_t AnalogWDMonitChannels = (READ_BIT(*preg, AWDy) & ADC_AWD_CR_ALL_CHANNEL_MASK);
2570
2571 /* If "AnalogWDMonitChannels" == 0, then the selected AWD is disabled */
2572 /* (parameter value DDL_ADC16_AWD_DISABLE). */
2573 /* Else, the selected AWD is enabled and is monitoring a group of channels */
2574 /* or a single channel. */
2575 if (AnalogWDMonitChannels != 0UL)
2576 {
2577 if (AWDy == DDL_ADC16_AWD1)
2578 {
2579 if ((AnalogWDMonitChannels & ADC_CFGR_AWD1SGL) == 0UL)
2580 {
2581 /* AWD monitoring a group of channels */
2582 AnalogWDMonitChannels = ((AnalogWDMonitChannels
2584 )
2585 & (~(ADC16_CFGR_AWD1CH))
2586 );
2587 }
2588 else
2589 {
2590 /* AWD monitoring a single channel */
2591 AnalogWDMonitChannels = (AnalogWDMonitChannels
2592 | (ADC_AWD2CR_AWD2CH_0 << (AnalogWDMonitChannels >> ADC_CFGR_AWD1CH_Pos))
2593 );
2594 }
2595 }
2596 else
2597 {
2598 if ((AnalogWDMonitChannels & ADC_AWD_CR23_CHANNEL_MASK) == ADC_AWD_CR23_CHANNEL_MASK)
2599 {
2600 /* AWD monitoring a group of channels */
2601 AnalogWDMonitChannels = (ADC_AWD_CR23_CHANNEL_MASK
2602 | ((ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN))
2603 );
2604 }
2605 else
2606 {
2607 /* AWD monitoring a single channel */
2608 /* AWD monitoring a group of channels */
2609 AnalogWDMonitChannels = (AnalogWDMonitChannels
2610 | (ADC_CFGR_JAWD1EN | ADC_CFGR_AWD1EN | ADC_CFGR_AWD1SGL)
2611 | (__DDL_ADC16_CHANNEL_TO_DECIMAL_NB(AnalogWDMonitChannels) << ADC_CFGR_AWD1CH_Pos)
2612 );
2613 }
2614 }
2615 }
2616
2617 return AnalogWDMonitChannels;
2618}
2619
2650__STATIC_INLINE void DDL_ADC16_ConfigAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue,
2651 uint32_t AWDThresholdLowValue)
2652{
2653 /* Set bits with content of parameter "AWDThresholdxxxValue" with bits */
2654 /* position in register and register position depending on parameter */
2655 /* "AWDy". */
2656 /* Parameters "AWDy" and "AWDThresholdxxxValue" are used with masks because */
2657 /* containing other bits reserved for other purpose. */
2658 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1, ((AWDy & ADC_AWD_TRX_REGOFFSET_MASK) >> ADC_AWD_TRX_REGOFFSET_POS));
2659
2660 MODIFY_REG(*preg,
2661 ADC_TR1_HT1 | ADC_TR1_LT1,
2662 (AWDThresholdHighValue << ADC_TR1_HT1_BITOFFSET_POS) | AWDThresholdLowValue);
2663}
2664
2699__STATIC_INLINE void DDL_ADC16_SetAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow,
2700 uint32_t AWDThresholdValue)
2701{
2702 /* Set bits with content of parameter "AWDThresholdValue" with bits */
2703 /* position in register and register position depending on parameters */
2704 /* "AWDThresholdsHighLow" and "AWDy". */
2705 /* Parameters "AWDy" and "AWDThresholdValue" are used with masks because */
2706 /* containing other bits reserved for other purpose. */
2707 __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1,
2709
2710 MODIFY_REG(*preg,
2711 AWDThresholdsHighLow,
2712 AWDThresholdValue << ((AWDThresholdsHighLow & ADC_AWD_TRX_BIT_HIGH_MASK) >> ADC_AWD_TRX_BIT_HIGH_SHIFT4));
2713}
2714
2734__STATIC_INLINE uint32_t DDL_ADC16_GetAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
2735{
2736 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->TR1,
2738
2739 return (uint32_t)(READ_BIT(*preg,
2740 (AWDThresholdsHighLow | ADC_TR1_LT1))
2741 >> (((AWDThresholdsHighLow & ADC_AWD_TRX_BIT_HIGH_MASK) >> ADC_AWD_TRX_BIT_HIGH_SHIFT4)
2742 & ~(AWDThresholdsHighLow & ADC_TR1_LT1)));
2743}
2744
2763__STATIC_INLINE void DDL_ADC16_SetAWDFilteringConfiguration(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t FilteringConfig)
2764{
2765 /* Prevent unused argument(s) compilation warning */
2766 (void)(AWDy);
2767 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_AWDFILT, FilteringConfig);
2768}
2769
2785__STATIC_INLINE uint32_t DDL_ADC16_GetAWDFilteringConfiguration(ADC16_TypeDef *ADCx, uint32_t AWDy)
2786{
2787 /* Prevent unused argument(s) compilation warning */
2788 (void)(AWDy);
2789 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_AWDFILT));
2790}
2791
2795
2816__STATIC_INLINE void DDL_ADC16_SetOverSamplingScope(ADC16_TypeDef *ADCx, uint32_t OvsScope)
2817{
2818 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSM, OvsScope);
2819}
2820
2837__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingScope(ADC16_TypeDef *ADCx)
2838{
2839 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_ROVSE | ADC_CFGR2_JOVSE | ADC_CFGR2_ROVSM));
2840}
2841
2859__STATIC_INLINE void DDL_ADC16_SetOverSamplingDiscont(ADC16_TypeDef *ADCx, uint32_t OverSamplingDiscont)
2860{
2861 MODIFY_REG(ADCx->CFGR2, ADC_CFGR2_TROVS, OverSamplingDiscont);
2862}
2863
2877__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingDiscont(ADC16_TypeDef *ADCx)
2878{
2879 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_TROVS));
2880}
2881
2902__STATIC_INLINE void DDL_ADC16_ConfigOverSamplingRatioShift(ADC16_TypeDef *ADCx, uint32_t Ratio, uint32_t Shift)
2903{
2904 MODIFY_REG(ADCx->CFGR2, (ADC_CFGR2_OVSS | ADC_CFGR2_OVSR), (Shift | Ratio));
2905}
2906
2917__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingRatio(ADC16_TypeDef *ADCx)
2918{
2919 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_OVSR));
2920}
2921
2933__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingShift(ADC16_TypeDef *ADCx)
2934{
2935 return (uint32_t)(READ_BIT(ADCx->CFGR2, ADC_CFGR2_OVSS));
2936}
2937
2941
2963__STATIC_INLINE void DDL_ADC16_SetMultimode(ADC16_TypeDef *ADCx, uint32_t Multimode)
2964{
2965 MODIFY_REG(ADCx->CR, ADC_CR_DUALMOD, Multimode);
2966}
2967
2985__STATIC_INLINE uint32_t DDL_ADC16_GetMultimode(ADC16_TypeDef *ADCx)
2986{
2987 return (uint32_t)(READ_BIT(ADCx->CR, ADC_CR_DUALMOD));
2988}
2989
2993
3002__STATIC_INLINE void DDL_ADC16_Enable(ADC16_TypeDef *ADCx)
3003{
3004 /* Note: Write register with some additional bits forced to state reset */
3005 /* instead of modifying only the selected bit for this function, */
3006 /* to not interfere with bits with HW property "rs". */
3007 MODIFY_REG(ADCx->CR,
3008 ADC_CR_ADEN,
3009 ADC_CR_ADEN);
3010}
3011
3017__STATIC_INLINE void DDL_ADC16_Disable(ADC16_TypeDef *ADCx)
3018{
3019 /* Note: Write register with some additional bits forced to state reset */
3020 /* instead of modifying only the selected bit for this function, */
3021 /* to not interfere with bits with HW property "rs". */
3022 MODIFY_REG(ADCx->CR,
3023 ADC_CR_ADEN,
3024 0);
3025}
3026
3032__STATIC_INLINE uint32_t DDL_ADC16_IsEnabled(ADC16_TypeDef *ADCx)
3033{
3034 return ((READ_BIT(ADCx->CR, ADC_CR_ADEN) == (ADC_CR_ADEN)) ? 1UL : 0UL);
3035}
3036
3040
3049__STATIC_INLINE void DDL_ADC16_REG_StartConversion(ADC16_TypeDef *ADCx)
3050{
3051 /* Note: Write register with some additional bits forced to state reset */
3052 /* instead of modifying only the selected bit for this function, */
3053 /* to not interfere with bits with HW property "rs". */
3054 MODIFY_REG(ADCx->CR,
3055 ADC_CR_ADSTART,
3056 ADC_CR_ADSTART);
3057}
3058
3064__STATIC_INLINE void DDL_ADC16_REG_StopConversion(ADC16_TypeDef *ADCx)
3065{
3066 /* Note: Write register with some additional bits forced to state reset */
3067 /* instead of modifying only the selected bit for this function, */
3068 /* to not interfere with bits with HW property "rs". */
3069 MODIFY_REG(ADCx->CR,
3070 ADC_CR_ADSTP,
3071 ADC_CR_ADSTP);
3072}
3073
3079__STATIC_INLINE uint32_t DDL_ADC16_REG_IsConversionOngoing(ADC16_TypeDef *ADCx)
3080{
3081 return ((READ_BIT(ADCx->CR, ADC_CR_ADSTART) == (ADC_CR_ADSTART)) ? 1UL : 0UL);
3082}
3083
3089__STATIC_INLINE uint32_t DDL_ADC16_REG_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
3090{
3091 return ((READ_BIT(ADCx->CR, ADC_CR_ADSTP) == (ADC_CR_ADSTP)) ? 1UL : 0UL);
3092}
3093
3102__STATIC_INLINE uint32_t DDL_ADC16_REG_ReadConversionData32(ADC16_TypeDef *ADCx)
3103{
3104 return (uint32_t)(READ_BIT(ADCx->DR, ADC_DR_RDATA | ADC_DR_ADC2RDATA));
3105}
3106
3110
3114
3120__STATIC_INLINE void DDL_ADC16_INJ_StartConversion(ADC16_TypeDef *ADCx)
3121{
3122 /* Note: Write register with some additional bits forced to state reset */
3123 /* instead of modifying only the selected bit for this function, */
3124 /* to not interfere with bits with HW property "rs". */
3125 MODIFY_REG(ADCx->CR,
3126 ADC_CR_JADSTART,
3127 ADC_CR_JADSTART);
3128}
3129
3135__STATIC_INLINE void DDL_ADC16_INJ_StopConversion(ADC16_TypeDef *ADCx)
3136{
3137 /* Note: Write register with some additional bits forced to state reset */
3138 /* instead of modifying only the selected bit for this function, */
3139 /* to not interfere with bits with HW property "rs". */
3140 MODIFY_REG(ADCx->CR,
3141 ADC_CR_JADSTP,
3142 ADC_CR_JADSTP);
3143}
3144
3150__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsConversionOngoing(ADC16_TypeDef *ADCx)
3151{
3152 return ((READ_BIT(ADCx->CR, ADC_CR_JADSTART) == (ADC_CR_JADSTART)) ? 1UL : 0UL);
3153}
3154
3160__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
3161{
3162 return ((READ_BIT(ADCx->CR, ADC_CR_JADSTP) == (ADC_CR_JADSTP)) ? 1UL : 0UL);
3163}
3164
3178__STATIC_INLINE uint32_t DDL_ADC16_INJ_ReadConversionData32(ADC16_TypeDef *ADCx, uint32_t Rank)
3179{
3180 const __IO uint32_t *preg = __ADC_PTR_REG_OFFSET(ADCx->JDR1, ((Rank & ADC_INJ_JDRX_REGOFFSET_MASK) >> ADC_JDRX_REGOFFSET_POS));
3181
3182 return (uint32_t)(READ_BIT(*preg,ADC_JDR1_JDATA));
3183}
3184
3188
3192
3198__STATIC_INLINE void DDL_ADC16_SetVerfInternal(ADC16_TypeDef *ADCx)
3199{
3200 MODIFY_REG(ADCx->CAL, ADC_CAL_REF_SEL, DDL_ADC16_VREF_INTERNAL);
3201}
3202
3209__STATIC_INLINE void DDL_ADC16_SetVerfExternal(ADC16_TypeDef *ADCx)
3210{
3211 MODIFY_REG(ADCx->CAL, ADC_CAL_REF_SEL, DDL_ADC16_VREF_EXTERNAL);
3212}
3213
3221__STATIC_INLINE uint32_t DDL_ADC16_GetVerfStatus(ADC16_TypeDef *ADCx)
3222{
3223 return (uint32_t)READ_BIT(ADCx->CAL, ADC_CAL_REF_SEL);
3224}
3225
3229
3233
3239__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOC(ADC16_TypeDef *ADCx)
3240{
3241 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_EOC) == (DDL_ADC16_FLAG_EOC)) ? 1UL : 0UL);
3242}
3243
3249__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOS(ADC16_TypeDef *ADCx)
3250{
3251 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_EOS) == (DDL_ADC16_FLAG_EOS)) ? 1UL : 0UL);
3252}
3253
3259__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_OVR(ADC16_TypeDef *ADCx)
3260{
3261 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_OVR) == (DDL_ADC16_FLAG_OVR)) ? 1UL : 0UL);
3262}
3263
3269__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOSMP(ADC16_TypeDef *ADCx)
3270{
3271 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_EOSMP) == (DDL_ADC16_FLAG_EOSMP)) ? 1UL : 0UL);
3272}
3273
3279__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JEOC(ADC16_TypeDef *ADCx)
3280{
3281 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_JEOC) == (DDL_ADC16_FLAG_JEOC)) ? 1UL : 0UL);
3282}
3283
3289__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JEOS(ADC16_TypeDef *ADCx)
3290{
3291 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_JEOS) == (DDL_ADC16_FLAG_JEOS)) ? 1UL : 0UL);
3292}
3293
3299__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JQOVF(ADC16_TypeDef *ADCx)
3300{
3301 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_JQOVF) == (DDL_ADC16_FLAG_JQOVF)) ? 1UL : 0UL);
3302}
3303
3309__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD1(ADC16_TypeDef *ADCx)
3310{
3311 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_AWD1) == (DDL_ADC16_FLAG_AWD1)) ? 1UL : 0UL);
3312}
3313
3319__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD2(ADC16_TypeDef *ADCx)
3320{
3321 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_AWD2) == (DDL_ADC16_FLAG_AWD2)) ? 1UL : 0UL);
3322}
3323
3329__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD3(ADC16_TypeDef *ADCx)
3330{
3331 return ((READ_BIT(ADCx->ISR, DDL_ADC16_FLAG_AWD3) == (DDL_ADC16_FLAG_AWD3)) ? 1UL : 0UL);
3332}
3333
3339__STATIC_INLINE void DDL_ADC16_ClearFlag_EOC(ADC16_TypeDef *ADCx)
3340{
3341 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_EOC);
3342}
3343
3349__STATIC_INLINE void DDL_ADC16_ClearFlag_EOS(ADC16_TypeDef *ADCx)
3350{
3351 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_EOS);
3352}
3353
3359__STATIC_INLINE void DDL_ADC16_ClearFlag_OVR(ADC16_TypeDef *ADCx)
3360{
3361 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_OVR);
3362}
3363
3369__STATIC_INLINE void DDL_ADC16_ClearFlag_EOSMP(ADC16_TypeDef *ADCx)
3370{
3371 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_EOSMP);
3372}
3373
3379__STATIC_INLINE void DDL_ADC16_ClearFlag_JEOC(ADC16_TypeDef *ADCx)
3380{
3381 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_JEOC);
3382}
3383
3389__STATIC_INLINE void DDL_ADC16_ClearFlag_JEOS(ADC16_TypeDef *ADCx)
3390{
3391 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_JEOS);
3392}
3393
3399__STATIC_INLINE void DDL_ADC16_ClearFlag_JQOVF(ADC16_TypeDef *ADCx)
3400{
3401 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_JQOVF);
3402}
3403
3409__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD1(ADC16_TypeDef *ADCx)
3410{
3411 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_AWD1);
3412}
3413
3419__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD2(ADC16_TypeDef *ADCx)
3420{
3421 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_AWD2);
3422}
3423
3429__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD3(ADC16_TypeDef *ADCx)
3430{
3431 WRITE_REG(ADCx->ISR, DDL_ADC16_FLAG_AWD3);
3432}
3433
3437
3441
3447__STATIC_INLINE void DDL_ADC16_EnableIT_EOC(ADC16_TypeDef *ADCx)
3448{
3449 SET_BIT(ADCx->IER, DDL_ADC16_IT_EOC);
3450}
3451
3457__STATIC_INLINE void DDL_ADC16_EnableIT_EOS(ADC16_TypeDef *ADCx)
3458{
3459 SET_BIT(ADCx->IER, DDL_ADC16_IT_EOS);
3460}
3461
3467__STATIC_INLINE void DDL_ADC16_EnableIT_OVR(ADC16_TypeDef *ADCx)
3468{
3469 SET_BIT(ADCx->IER, DDL_ADC16_IT_OVR);
3470}
3471
3477__STATIC_INLINE void DDL_ADC16_EnableIT_EOSMP(ADC16_TypeDef *ADCx)
3478{
3479 SET_BIT(ADCx->IER, DDL_ADC16_IT_EOSMP);
3480}
3481
3487__STATIC_INLINE void DDL_ADC16_EnableIT_JEOC(ADC16_TypeDef *ADCx)
3488{
3489 SET_BIT(ADCx->IER, DDL_ADC16_IT_JEOC);
3490}
3491
3497__STATIC_INLINE void DDL_ADC16_EnableIT_JEOS(ADC16_TypeDef *ADCx)
3498{
3499 SET_BIT(ADCx->IER, DDL_ADC16_IT_JEOS);
3500}
3501
3507__STATIC_INLINE void DDL_ADC16_EnableIT_JQOVF(ADC16_TypeDef *ADCx)
3508{
3509 SET_BIT(ADCx->IER, DDL_ADC16_IT_JQOVF);
3510}
3511
3517__STATIC_INLINE void DDL_ADC16_EnableIT_AWD1(ADC16_TypeDef *ADCx)
3518{
3519 SET_BIT(ADCx->IER, DDL_ADC16_IT_AWD1);
3520}
3521
3527__STATIC_INLINE void DDL_ADC16_EnableIT_AWD2(ADC16_TypeDef *ADCx)
3528{
3529 SET_BIT(ADCx->IER, DDL_ADC16_IT_AWD2);
3530}
3531
3537__STATIC_INLINE void DDL_ADC16_EnableIT_AWD3(ADC16_TypeDef *ADCx)
3538{
3539 SET_BIT(ADCx->IER, DDL_ADC16_IT_AWD3);
3540}
3541
3547__STATIC_INLINE void DDL_ADC16_DisableIT_EOC(ADC16_TypeDef *ADCx)
3548{
3549 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_EOC);
3550}
3551
3557__STATIC_INLINE void DDL_ADC16_DisableIT_EOS(ADC16_TypeDef *ADCx)
3558{
3559 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_EOS);
3560}
3561
3567__STATIC_INLINE void DDL_ADC16_DisableIT_OVR(ADC16_TypeDef *ADCx)
3568{
3569 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_OVR);
3570}
3571
3577__STATIC_INLINE void DDL_ADC16_DisableIT_EOSMP(ADC16_TypeDef *ADCx)
3578{
3579 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_EOSMP);
3580}
3581
3587__STATIC_INLINE void DDL_ADC16_DisableIT_JEOC(ADC16_TypeDef *ADCx)
3588{
3589 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_JEOC);
3590}
3591
3597__STATIC_INLINE void DDL_ADC16_DisableIT_JEOS(ADC16_TypeDef *ADCx)
3598{
3599 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_JEOS);
3600}
3601
3607__STATIC_INLINE void DDL_ADC16_DisableIT_JQOVF(ADC16_TypeDef *ADCx)
3608{
3609 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_JQOVF);
3610}
3611
3617__STATIC_INLINE void DDL_ADC16_DisableIT_AWD1(ADC16_TypeDef *ADCx)
3618{
3619 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_AWD1);
3620}
3621
3627__STATIC_INLINE void DDL_ADC16_DisableIT_AWD2(ADC16_TypeDef *ADCx)
3628{
3629 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_AWD2);
3630}
3631
3637__STATIC_INLINE void DDL_ADC16_DisableIT_AWD3(ADC16_TypeDef *ADCx)
3638{
3639 CLEAR_BIT(ADCx->IER, DDL_ADC16_IT_AWD3);
3640}
3641
3648__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOC(ADC16_TypeDef *ADCx)
3649{
3650 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_EOC) == (DDL_ADC16_IT_EOC)) ? 1UL : 0UL);
3651}
3652
3659__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOS(ADC16_TypeDef *ADCx)
3660{
3661 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_EOS) == (DDL_ADC16_IT_EOS)) ? 1UL : 0UL);
3662}
3663
3670__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_OVR(ADC16_TypeDef *ADCx)
3671{
3672 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_OVR) == (DDL_ADC16_IT_OVR)) ? 1UL : 0UL);
3673}
3674
3681__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOSMP(ADC16_TypeDef *ADCx)
3682{
3683 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_EOSMP) == (DDL_ADC16_IT_EOSMP)) ? 1UL : 0UL);
3684}
3685
3692__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JEOC(ADC16_TypeDef *ADCx)
3693{
3694 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_JEOC) == (DDL_ADC16_IT_JEOC)) ? 1UL : 0UL);
3695}
3696
3703__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JEOS(ADC16_TypeDef *ADCx)
3704{
3705 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_JEOS) == (DDL_ADC16_IT_JEOS)) ? 1UL : 0UL);
3706}
3707
3714__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JQOVF(ADC16_TypeDef *ADCx)
3715{
3716 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_JQOVF) == (DDL_ADC16_IT_JQOVF)) ? 1UL : 0UL);
3717}
3718
3725__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD1(ADC16_TypeDef *ADCx)
3726{
3727 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_AWD1) == (DDL_ADC16_IT_AWD1)) ? 1UL : 0UL);
3728}
3729
3736__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD2(ADC16_TypeDef *ADCx)
3737{
3738 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_AWD2) == (DDL_ADC16_IT_AWD2)) ? 1UL : 0UL);
3739}
3740
3747__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD3(ADC16_TypeDef *ADCx)
3748{
3749 return ((READ_BIT(ADCx->IER, DDL_ADC16_IT_AWD3) == (DDL_ADC16_IT_AWD3)) ? 1UL : 0UL);
3750}
3751
3784__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime_Single(ADC16_TypeDef *ADCx, uint32_t SingleCh, uint32_t SamplingTime)
3785{
3786 MODIFY_REG(ADCx->SMPR1,
3787 (0xFU << (4U * SingleCh)),
3788 ((SamplingTime & 0xFU) << (4U * SingleCh)));
3789}
3790
3819__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime_Diff(ADC16_TypeDef *ADCx, uint32_t DiffCh, uint32_t SamplingTime)
3820{
3821 MODIFY_REG(ADCx->SMPR1,
3822 (0xFU << (4U * DiffCh)),
3823 ((SamplingTime & 0xFU) << (4U * DiffCh)));
3824
3825 MODIFY_REG(ADCx->SMPR1,
3826 (0xFU << (4U * (DiffCh + 3U))),
3827 ((SamplingTime & 0xFU) << (4U * (DiffCh + 3U))));
3828}
3829
3855__STATIC_INLINE void DDL_ADC16_SetSequencerRanks_Single(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t SingleCh)
3856{
3857 uint32_t regVal;
3858 uint32_t channelMask;
3859 uint32_t regOffset;
3860 uint32_t bitOffset;
3861
3862 regOffset = (Rank & 0xFF00U);
3863 bitOffset = (Rank & 0x00FFU);
3864
3865 channelMask = (0xFU << bitOffset);
3866
3867 if (regOffset == ADC_SQR1_REGOFFSET)
3868 {
3869 /* SQR1 register */
3870 regVal = READ_REG(ADCx->SQR1);
3871 regVal &= ~channelMask;
3872
3873 if (SingleCh < DDL_ADC16_SINGLE_INN0)
3874 {
3875 /* Positive input channel */
3876 regVal |= ((SingleCh + 1U) << bitOffset);
3877 }
3878 else
3879 {
3880 /* Negative input channel */
3881 /* shifting +2 bits from original position, per original logic. */
3882 regVal |= ((SingleCh - 2U) << (bitOffset + 2U));
3883 }
3884 WRITE_REG(ADCx->SQR1, regVal);
3885 }
3886 else if (regOffset == ADC_SQR2_REGOFFSET)
3887 {
3888 /* SQR2 register */
3889 regVal = READ_REG(ADCx->SQR2);
3890 regVal &= ~channelMask;
3891
3892 if (SingleCh < DDL_ADC16_SINGLE_INN0)
3893 {
3894 /* Positive input channel */
3895 regVal |= ((SingleCh + 1U) << bitOffset);
3896 }
3897 else
3898 {
3899 /* Negative input channel */
3900 regVal |= ((SingleCh - 2U) << (bitOffset + 2U));
3901 }
3902 WRITE_REG(ADCx->SQR2, regVal);
3903 }
3904}
3905
3928__STATIC_INLINE void DDL_ADC16_SetSequencerRanks_Diff(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t DiffCh)
3929{
3930 uint32_t regVal;
3931 uint32_t channelMask;
3932 uint32_t posShifted;
3933 uint32_t negShifted;
3934 uint32_t regOffset;
3935 uint32_t bitOffset;
3936
3937 regOffset = (Rank & 0xFF00U);
3938 bitOffset = (Rank & 0x00FFU);
3939 channelMask = (0xFU << bitOffset);
3940
3941 if (regOffset == ADC_SQR1_REGOFFSET)
3942 {
3943 /* SQR1 register */
3944 regVal = READ_REG(ADCx->SQR1);
3945 regVal &= ~channelMask;
3946
3947 posShifted = ((DiffCh + 1U) << bitOffset);
3948 negShifted = ((DiffCh + 1U) << (bitOffset + 2U));
3949 regVal |= (posShifted | negShifted);
3950
3951 WRITE_REG(ADCx->SQR1, regVal);
3952 }
3953 else if (regOffset == ADC_SQR2_REGOFFSET)
3954 {
3955 /* SQR2 register */
3956 regVal = READ_REG(ADCx->SQR2);
3957 regVal &= ~channelMask;
3958
3959 posShifted = ((DiffCh + 1U) << bitOffset);
3960 negShifted = ((DiffCh + 1U) << (bitOffset + 2U));
3961 regVal |= (posShifted | negShifted);
3962
3963 WRITE_REG(ADCx->SQR2, regVal);
3964 }
3965}
3966
3970
3971#if defined(USE_FULL_DDL_DRIVER)
3975
3976/* De-initialization of ADC instance, ADC group regular and ADC group injected */
3977/* (availability of ADC group injected depends on G32R4 families) */
3978ErrorStatus DDL_ADC16_DeInit(ADC16_TypeDef *ADCx);
3979
3980/* Initialization of some features of ADC instance */
3981ErrorStatus DDL_ADC16_Init(ADC16_TypeDef *ADCx, DDL_ADC16_InitTypeDef *ADC_InitStruct);
3982void DDL_ADC16_StructInit(DDL_ADC16_InitTypeDef *ADC_InitStruct);
3983
3984/* Initialization of some features of ADC instance and ADC group regular */
3985ErrorStatus DDL_ADC16_REG_Init(ADC16_TypeDef *ADCx, DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct);
3986void DDL_ADC16_REG_StructInit(DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct);
3987
3988/* Initialization of some features of ADC instance and ADC group injected */
3989ErrorStatus DDL_ADC16_INJ_Init(ADC16_TypeDef *ADCx, DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct);
3990void DDL_ADC16_INJ_StructInit(DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct);
3991
3995#endif /* USE_FULL_DDL_DRIVER */
3996
4000
4004
4005#endif /* defined (ADC1) || defined (ADC2) */
4009
4010#ifdef __cplusplus
4011}
4012#endif
4013
4014#endif
4015
#define DDL_ADC16_CR_ADDIS_EXECUTION_IN_PROGRESS
#define DDL_ADC16_VREF_INTERNAL
#define DDL_ADC16_VREF_EXTERNAL
#define DDL_ADC16_AWD1
#define DDL_ADC16_FLAG_AWD2
#define DDL_ADC16_FLAG_EOS
#define DDL_ADC16_FLAG_AWD1
#define DDL_ADC16_FLAG_JQOVF
#define DDL_ADC16_FLAG_OVR
#define DDL_ADC16_FLAG_EOSMP
#define DDL_ADC16_FLAG_AWD3
#define DDL_ADC16_FLAG_JEOC
#define DDL_ADC16_FLAG_JEOS
#define DDL_ADC16_FLAG_EOC
#define DDL_ADC16_INJ_RANK_1
#define DDL_ADC16_INJ_RANK_3
#define DDL_ADC16_INJ_RANK_4
#define DDL_ADC16_INJ_RANK_2
#define DDL_ADC16_INJ_TRIG_SOFTWARE
#define DDL_ADC16_IT_EOSMP
#define DDL_ADC16_IT_EOC
#define DDL_ADC16_IT_JEOS
#define DDL_ADC16_IT_EOS
#define DDL_ADC16_IT_OVR
#define DDL_ADC16_IT_AWD2
#define DDL_ADC16_IT_JQOVF
#define DDL_ADC16_IT_AWD1
#define DDL_ADC16_IT_AWD3
#define DDL_ADC16_IT_JEOC
#define DDL_ADC16_REG_TRIG_SOFTWARE
#define DDL_ADC16_SINGLE_INN0
__STATIC_INLINE uint32_t DDL_ADC16_GetAnalogWDMonitChannels(ADC16_TypeDef *ADCx, uint32_t AWDy)
Get ADC analog watchdog monitored channel.
__STATIC_INLINE void DDL_ADC16_ConfigAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdHighValue, uint32_t AWDThresholdLowValue)
Set ADC analog watchdog thresholds value of both thresholds high and low.
__STATIC_INLINE uint32_t DDL_ADC16_GetAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow)
Get ADC analog watchdog threshold value of threshold high, threshold low or raw data with ADC thresho...
__STATIC_INLINE void DDL_ADC16_SetAWDFilteringConfiguration(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t FilteringConfig)
Set ADC analog watchdog filtering configuration.
__STATIC_INLINE void DDL_ADC16_SetAnalogWDMonitChannels(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDChannelGroup)
Set ADC analog watchdog monitored channels: a single channel, multiple channels or all channels,...
__STATIC_INLINE uint32_t DDL_ADC16_GetAWDFilteringConfiguration(ADC16_TypeDef *ADCx, uint32_t AWDy)
Get ADC analog watchdog filtering configuration.
__STATIC_INLINE void DDL_ADC16_SetAnalogWDThresholds(ADC16_TypeDef *ADCx, uint32_t AWDy, uint32_t AWDThresholdsHighLow, uint32_t AWDThresholdValue)
Set ADC analog watchdog threshold value of threshold high or low.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank)
Get ADC group injected sequence: channel on the selected sequence rank.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTriggerEdge(ADC16_TypeDef *ADCx)
Get ADC group injected conversion trigger polarity. Applicable only for trigger source set to externa...
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerDiscont(ADC16_TypeDef *ADCx)
Get ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interru...
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTrigAuto(ADC16_TypeDef *ADCx)
Get ADC group injected conversion trigger: independent or from ADC group regular.
__STATIC_INLINE void DDL_ADC16_INJ_ConfigQueueContext(ADC16_TypeDef *ADCx, uint32_t TriggerSource, uint32_t ExternalTriggerEdge, uint32_t SequencerNbRanks, uint32_t Rank1_Channel, uint32_t Rank2_Channel, uint32_t Rank3_Channel, uint32_t Rank4_Channel)
Set one context on ADC group injected that will be checked in contexts queue.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsTriggerSourceSWStart(ADC16_TypeDef *ADCx)
Get ADC group injected conversion trigger source internal (SW start) or external.
__STATIC_INLINE void DDL_ADC16_INJ_SetTrigAuto(ADC16_TypeDef *ADCx, uint32_t TrigAuto)
Set ADC group injected conversion trigger: independent or from ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetTriggerSource(ADC16_TypeDef *ADCx)
Get ADC group injected conversion trigger source: internal (SW start) or from external peripheral (ti...
__STATIC_INLINE void DDL_ADC16_INJ_SetTriggerEdge(ADC16_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
Set ADC group injected conversion trigger polarity. Applicable only for trigger source set to externa...
__STATIC_INLINE void DDL_ADC16_INJ_SetQueueMode(ADC16_TypeDef *ADCx, uint32_t QueueMode)
Set ADC group injected contexts queue mode.
__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
Set ADC group injected sequence: channel on the selected sequence rank.
__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerDiscont(ADC16_TypeDef *ADCx, uint32_t SeqDiscont)
Set ADC group injected sequencer discontinuous mode: sequence subdivided and scan conversions interru...
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetQueueMode(ADC16_TypeDef *ADCx)
Get ADC group injected context queue mode.
__STATIC_INLINE void DDL_ADC16_INJ_SetSequencerLength(ADC16_TypeDef *ADCx, uint32_t SequencerNbRanks)
Set ADC group injected sequencer length and scan direction.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_GetSequencerLength(ADC16_TypeDef *ADCx)
Get ADC group injected sequencer length and scan direction.
__STATIC_INLINE void DDL_ADC16_INJ_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group injected conversion trigger source: internal (SW start) or from external peripheral (ti...
__STATIC_INLINE void DDL_ADC16_REG_SetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t Channel)
Set ADC group regular sequence: channel on the selected scan sequence rank.
__STATIC_INLINE void DDL_ADC16_REG_SetTriggerSource(ADC16_TypeDef *ADCx, uint32_t TriggerSource)
Set ADC group regular conversion trigger source: internal (SW start) or from external peripheral (tim...
__STATIC_INLINE void DDL_ADC16_REG_SetSequencerLength(ADC16_TypeDef *ADCx, uint32_t SequencerNbRanks)
Set ADC group regular sequencer length and scan direction.
__STATIC_INLINE void DDL_ADC16_REG_SetContinuousMode(ADC16_TypeDef *ADCx, uint32_t Continuous)
Set ADC continuous conversion mode on ADC group regular.
__STATIC_INLINE void DDL_ADC16_REG_SetOverrun(ADC16_TypeDef *ADCx, uint32_t Overrun)
Set ADC group regular behavior in case of overrun: data preserved or overwritten.
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerLength(ADC16_TypeDef *ADCx)
Get ADC group regular sequencer length and scan direction.
__STATIC_INLINE void DDL_ADC16_REG_SetDMATransfer(ADC16_TypeDef *ADCx, uint32_t DMATransfer)
Set ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode...
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerDiscont(ADC16_TypeDef *ADCx)
Get ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrup...
__STATIC_INLINE void DDL_ADC16_REG_SetSequencerDiscont(ADC16_TypeDef *ADCx, uint32_t SeqDiscont)
Set ADC group regular sequencer discontinuous mode: sequence subdivided and scan conversions interrup...
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetTriggerEdge(ADC16_TypeDef *ADCx)
Get ADC group regular conversion trigger polarity.
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetContinuousMode(ADC16_TypeDef *ADCx)
Get ADC continuous conversion mode on ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetOverrun(ADC16_TypeDef *ADCx)
Get ADC group regular behavior in case of overrun: data preserved or overwritten.
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetSequencerRanks(ADC16_TypeDef *ADCx, uint32_t Rank)
Get ADC group regular sequence: channel on the selected scan sequence rank. Refer to description of f...
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetDMATransfer(ADC16_TypeDef *ADCx)
Get ADC group regular conversion data transfer: no transfer or transfer by DMA, and DMA requests mode...
__STATIC_INLINE uint32_t DDL_ADC16_REG_IsTriggerSourceSWStart(ADC16_TypeDef *ADCx)
Get ADC group regular conversion trigger source internal (SW start) or external.
__STATIC_INLINE void DDL_ADC16_REG_SetTriggerEdge(ADC16_TypeDef *ADCx, uint32_t ExternalTriggerEdge)
Set ADC group regular conversion trigger polarity.
__STATIC_INLINE uint32_t DDL_ADC16_REG_GetTriggerSource(ADC16_TypeDef *ADCx)
Get ADC group regular conversion trigger source: internal (SW start) or from external peripheral (tim...
__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetState(ADC16_TypeDef *ADCx, uint32_t Offsety)
Get for the ADC selected offset number 1, 2, 3 or 4: offset state disabled or enabled.
__STATIC_INLINE void DDL_ADC16_SetOffset(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetLevel)
Set ADC selected offset number 1, 2, 3 or 4.
__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetSign(ADC16_TypeDef *ADCx, uint32_t Offsety)
Get for the ADC selected offset number 1, 2, 3 or 4: offset sign if positive or negative.
__STATIC_INLINE void DDL_ADC16_SetLowPowerMode(ADC16_TypeDef *ADCx, uint32_t LowPowerMode)
Set ADC low power mode.
__STATIC_INLINE void DDL_ADC16_SetOffsetState(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetState)
Set for the ADC selected offset number 1, 2, 3 or 4: force offset state disable or enable without mod...
__STATIC_INLINE uint32_t DDL_ADC16_GetLowPowerMode(ADC16_TypeDef *ADCx)
Get ADC low power mode:
__STATIC_INLINE void DDL_ADC16_SetOffsetSign(ADC16_TypeDef *ADCx, uint32_t Offsety, uint32_t OffsetSign)
Set for the ADC selected offset number 1, 2, 3 or 4: choose offset sign.
__STATIC_INLINE uint32_t DDL_ADC16_GetOffsetLevel(ADC16_TypeDef *ADCx, uint32_t Offsety)
Get for the ADC selected offset number 1, 2, 3 or 4: Offset level (offset to be subtracted from the r...
__STATIC_INLINE uint32_t DDL_ADC16_GetMultimode(ADC16_TypeDef *ADCx)
Get ADC multimode configuration to operate in independent mode or multimode (for devices with several...
__STATIC_INLINE void DDL_ADC16_SetMultimode(ADC16_TypeDef *ADCx, uint32_t Multimode)
Set ADC multimode configuration to operate in independent mode or multimode (for devices with several...
__STATIC_INLINE void DDL_ADC16_SetOverSamplingScope(ADC16_TypeDef *ADCx, uint32_t OvsScope)
Set ADC oversampling scope: ADC groups regular and-or injected.
__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingRatio(ADC16_TypeDef *ADCx)
Get ADC oversampling ratio (impacting both ADC groups regular and injected).
__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingShift(ADC16_TypeDef *ADCx)
Get ADC oversampling shift (impacting both ADC groups regular and injected).
__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingScope(ADC16_TypeDef *ADCx)
Get ADC oversampling scope: ADC groups regular and-or injected.
__STATIC_INLINE uint32_t DDL_ADC16_GetOverSamplingDiscont(ADC16_TypeDef *ADCx)
Get ADC oversampling discontinuous mode (triggered mode) on the selected ADC group.
__STATIC_INLINE void DDL_ADC16_ConfigOverSamplingRatioShift(ADC16_TypeDef *ADCx, uint32_t Ratio, uint32_t Shift)
Set ADC oversampling (impacting both ADC groups regular and injected).
__STATIC_INLINE void DDL_ADC16_SetOverSamplingDiscont(ADC16_TypeDef *ADCx, uint32_t OverSamplingDiscont)
Set ADC oversampling discontinuous mode (triggered mode) on the selected ADC group.
__STATIC_INLINE uint32_t DDL_ADC16_GetDisableCommandStatus(ADC16_TypeDef *ADCx)
Get ADC Disable Command.
__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime(ADC16_TypeDef *ADCx, uint32_t Channel, uint32_t SamplingTime)
Set sampling time of the selected ADC channel Unit: ADC clock cycles.
__STATIC_INLINE uint32_t DDL_ADC16_GetChannelSamplingTime(ADC16_TypeDef *ADCx, uint32_t Channel)
Get sampling time of the selected ADC channel Unit: ADC clock cycles.
__STATIC_INLINE void DDL_ADC16_SetDisableCommand(ADC16_TypeDef *ADCx)
Set ADC Disable Command.
__STATIC_INLINE void DDL_ADC16_SetChannelSingleDiff(ADC16_TypeDef *ADCx, uint32_t Channel, uint32_t SingleDiff)
Set mode single-ended or differential input of the selected ADC channel.
__STATIC_INLINE uint32_t DDL_ADC16_GetChannelSingleDiff(ADC16_TypeDef *ADCx, uint32_t Channel)
Get mode single-ended or differential input of the selected ADC channel.
__STATIC_INLINE uint32_t DDL_ADC16_DMA_GetRegAddr(ADC16_TypeDef *ADCx, uint32_t Register)
Function to help to configure DMA transfer from ADC: retrieve the ADC register address from ADC insta...
__STATIC_INLINE void DDL_ADC16_ClearFlag_JEOS(ADC16_TypeDef *ADCx)
Clear flag ADC group injected end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD1(ADC16_TypeDef *ADCx)
Clear flag ADC analog watchdog 1.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_OVR(ADC16_TypeDef *ADCx)
Get flag ADC group regular overrun.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JQOVF(ADC16_TypeDef *ADCx)
Get flag ADC group injected contexts queue overflow.
__STATIC_INLINE void DDL_ADC16_ClearFlag_EOC(ADC16_TypeDef *ADCx)
Clear flag ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC16_ClearFlag_JEOC(ADC16_TypeDef *ADCx)
Clear flag ADC group injected end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD1(ADC16_TypeDef *ADCx)
Get flag ADC analog watchdog 1 flag.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JEOS(ADC16_TypeDef *ADCx)
Get flag ADC group injected end of sequence conversions.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_JEOC(ADC16_TypeDef *ADCx)
Get flag ADC group injected end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOC(ADC16_TypeDef *ADCx)
Get flag ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC16_ClearFlag_EOS(ADC16_TypeDef *ADCx)
Clear flag ADC group regular end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_ClearFlag_OVR(ADC16_TypeDef *ADCx)
Clear flag ADC group regular overrun.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOS(ADC16_TypeDef *ADCx)
Get flag ADC group regular end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_ClearFlag_EOSMP(ADC16_TypeDef *ADCx)
Clear flag ADC group regular end of sampling phase.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD2(ADC16_TypeDef *ADCx)
Get flag ADC analog watchdog 2.
__STATIC_INLINE void DDL_ADC16_ClearFlag_JQOVF(ADC16_TypeDef *ADCx)
Clear flag ADC group injected contexts queue overflow.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_EOSMP(ADC16_TypeDef *ADCx)
Get flag ADC group regular end of sampling phase.
__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD2(ADC16_TypeDef *ADCx)
Clear flag ADC analog watchdog 2.
__STATIC_INLINE void DDL_ADC16_ClearFlag_AWD3(ADC16_TypeDef *ADCx)
Clear flag ADC analog watchdog 3.
__STATIC_INLINE uint32_t DDL_ADC16_IsActiveFlag_AWD3(ADC16_TypeDef *ADCx)
Get flag ADC analog watchdog 3.
__STATIC_INLINE void DDL_ADC16_DisableIT_EOC(ADC16_TypeDef *ADCx)
Disable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC16_DisableIT_JEOS(ADC16_TypeDef *ADCx)
Disable interruption ADC group injected end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_DisableIT_JEOC(ADC16_TypeDef *ADCx)
Disable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC16_DisableIT_EOS(ADC16_TypeDef *ADCx)
Disable interruption ADC group regular end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_EnableIT_EOC(ADC16_TypeDef *ADCx)
Enable interruption ADC group regular end of unitary conversion.
__STATIC_INLINE void DDL_ADC16_EnableIT_AWD2(ADC16_TypeDef *ADCx)
Enable interruption ADC analog watchdog 2.
__STATIC_INLINE void DDL_ADC16_DisableIT_EOSMP(ADC16_TypeDef *ADCx)
Disable interruption ADC group regular end of sampling.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JQOVF(ADC16_TypeDef *ADCx)
Get state of interruption ADC group injected context queue overflow interrupt state (0: interrupt dis...
__STATIC_INLINE void DDL_ADC16_EnableIT_JEOS(ADC16_TypeDef *ADCx)
Enable interruption ADC group injected end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_DisableIT_JQOVF(ADC16_TypeDef *ADCx)
Disable interruption ADC group injected context queue overflow.
__STATIC_INLINE void DDL_ADC16_EnableIT_EOSMP(ADC16_TypeDef *ADCx)
Enable interruption ADC group regular end of sampling.
__STATIC_INLINE void DDL_ADC16_DisableIT_OVR(ADC16_TypeDef *ADCx)
Disable interruption ADC group regular overrun.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JEOC(ADC16_TypeDef *ADCx)
Get state of interruption ADC group injected end of unitary conversion (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC16_EnableIT_JQOVF(ADC16_TypeDef *ADCx)
Enable interruption ADC group injected context queue overflow.
__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime_Single(ADC16_TypeDef *ADCx, uint32_t SingleCh, uint32_t SamplingTime)
Set the sampling time for a single-ended ADC channel. The sampling time is in terms of ADC clock cycl...
__STATIC_INLINE void DDL_ADC16_DisableIT_AWD3(ADC16_TypeDef *ADCx)
Disable interruption ADC analog watchdog 3.
__STATIC_INLINE void DDL_ADC16_SetChannelSamplingTime_Diff(ADC16_TypeDef *ADCx, uint32_t DiffCh, uint32_t SamplingTime)
Set the sampling time for a differential ADC channel. The function updates both the positive and nega...
__STATIC_INLINE void DDL_ADC16_EnableIT_OVR(ADC16_TypeDef *ADCx)
Enable ADC group regular interruption overrun.
__STATIC_INLINE void DDL_ADC16_EnableIT_EOS(ADC16_TypeDef *ADCx)
Enable interruption ADC group regular end of sequence conversions.
__STATIC_INLINE void DDL_ADC16_DisableIT_AWD1(ADC16_TypeDef *ADCx)
Disable interruption ADC analog watchdog 1.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOSMP(ADC16_TypeDef *ADCx)
Get state of interruption ADC group regular end of sampling (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC16_SetSequencerRanks_Single(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t SingleCh)
Configure a single-ended channel rank in the regular conversion sequence.
__STATIC_INLINE void DDL_ADC16_EnableIT_AWD3(ADC16_TypeDef *ADCx)
Enable interruption ADC analog watchdog 3.
__STATIC_INLINE void DDL_ADC16_EnableIT_JEOC(ADC16_TypeDef *ADCx)
Enable interruption ADC group injected end of unitary conversion.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD1(ADC16_TypeDef *ADCx)
Get state of interruption ADC analog watchdog 1 (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE void DDL_ADC16_EnableIT_AWD1(ADC16_TypeDef *ADCx)
Enable interruption ADC analog watchdog 1.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOC(ADC16_TypeDef *ADCx)
Get state of interruption ADC group regular end of unitary conversion (0: interrupt disabled,...
__STATIC_INLINE void DDL_ADC16_SetSequencerRanks_Diff(ADC16_TypeDef *ADCx, uint32_t Rank, uint32_t DiffCh)
Configure a differential channel rank in the regular conversion sequence.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_EOS(ADC16_TypeDef *ADCx)
Get state of interruption ADC group regular end of sequence conversions (0: interrupt disabled,...
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD3(ADC16_TypeDef *ADCx)
Get state of interruption Get ADC analog watchdog 3 (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE void DDL_ADC16_DisableIT_AWD2(ADC16_TypeDef *ADCx)
Disable interruption ADC analog watchdog 2.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_AWD2(ADC16_TypeDef *ADCx)
Get state of interruption Get ADC analog watchdog 2 (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_OVR(ADC16_TypeDef *ADCx)
Get state of interruption ADC group regular overrun (0: interrupt disabled, 1: interrupt enabled).
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabledIT_JEOS(ADC16_TypeDef *ADCx)
Get state of interruption ADC group injected end of sequence conversions (0: interrupt disabled,...
void DDL_ADC16_REG_StructInit(DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct)
Set each DDL_ADC16_REG_InitTypeDef field to default value.
void DDL_ADC16_StructInit(DDL_ADC16_InitTypeDef *ADC_InitStruct)
Set each DDL_ADC16_InitTypeDef field to default value.
void DDL_ADC16_INJ_StructInit(DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct)
Set each DDL_ADC16_INJ_InitTypeDef field to default value.
ErrorStatus DDL_ADC16_DeInit(ADC16_TypeDef *ADCx)
De-initialize registers of the selected ADC instance to their default reset values.
ErrorStatus DDL_ADC16_Init(ADC16_TypeDef *ADCx, DDL_ADC16_InitTypeDef *ADC_InitStruct)
Initialize some features of ADC instance.
ErrorStatus DDL_ADC16_INJ_Init(ADC16_TypeDef *ADCx, DDL_ADC16_INJ_InitTypeDef *ADC_INJ_InitStruct)
Initialize some features of ADC group injected.
ErrorStatus DDL_ADC16_REG_Init(ADC16_TypeDef *ADCx, DDL_ADC16_REG_InitTypeDef *ADC_REG_InitStruct)
Initialize some features of ADC group regular.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_ReadConversionData32(ADC16_TypeDef *ADCx, uint32_t Rank)
Get ADC group injected conversion data, range fit for all ADC configurations: all ADC resolutions and...
__STATIC_INLINE void DDL_ADC16_INJ_StartConversion(ADC16_TypeDef *ADCx)
Start ADC group injected conversion.
__STATIC_INLINE void DDL_ADC16_INJ_StopConversion(ADC16_TypeDef *ADCx)
Stop ADC group injected conversion.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group injected conversion state.
__STATIC_INLINE uint32_t DDL_ADC16_INJ_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group injected command of conversion stop state.
__STATIC_INLINE void DDL_ADC16_REG_StopConversion(ADC16_TypeDef *ADCx)
Stop ADC group regular conversion.
__STATIC_INLINE uint32_t DDL_ADC16_REG_IsStopConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group regular command of conversion stop state.
__STATIC_INLINE uint32_t DDL_ADC16_REG_ReadConversionData32(ADC16_TypeDef *ADCx)
Get ADC group regular conversion data, range fit for all ADC configurations: all ADC resolutions and ...
__STATIC_INLINE void DDL_ADC16_REG_StartConversion(ADC16_TypeDef *ADCx)
Start ADC group regular conversion.
__STATIC_INLINE uint32_t DDL_ADC16_REG_IsConversionOngoing(ADC16_TypeDef *ADCx)
Get ADC group regular conversion state.
__STATIC_INLINE void DDL_ADC16_Enable(ADC16_TypeDef *ADCx)
Enable the selected ADC instance.
__STATIC_INLINE void DDL_ADC16_Disable(ADC16_TypeDef *ADCx)
Disable the selected ADC instance.
__STATIC_INLINE void DDL_ADC16_SetVerfExternal(ADC16_TypeDef *ADCx)
Determine whether the current setting of VREF is internally generated or externally connected.
__STATIC_INLINE uint32_t DDL_ADC16_GetVerfStatus(ADC16_TypeDef *ADCx)
Get VREF Status.
__STATIC_INLINE void DDL_ADC16_SetVerfInternal(ADC16_TypeDef *ADCx)
Set VREF to be internally generated.
__STATIC_INLINE uint32_t DDL_ADC16_IsEnabled(ADC16_TypeDef *ADCx)
Get the selected ADC instance enable state.
#define ADC_SQR1_REGOFFSET
#define ADC16_CFGR_AWD1CH
#define ADC_TR1_HT1_BITOFFSET_POS
#define ADC_AWD_TRX_REGOFFSET_POS
#define ADC_REG_SQRX_REGOFFSET_MASK
#define ADC_AWD_TRX_BIT_HIGH_SHIFT4
#define ADC_AWD_TRX_BIT_HIGH_MASK
#define ADC_JDRX_REGOFFSET_POS
#define ADC_CHANNEL_ID_NUMBER_BITOFFSET_POS
#define ADC_AWD_CR12_REGOFFSETGAP_VAL
#define ADC_CHANNEL_ID_NUMBER_MASK_POSBIT0
#define ADC_AWD_TRX_REGOFFSET_MASK
#define ADC_AWD_CR23_CHANNEL_MASK
#define ADC_INJ_JDRX_REGOFFSET_MASK
#define ADC_CHANNEL_SMPx_BITOFFSET_MASK
#define ADC_AWD_CRX_REGOFFSET_MASK
#define ADC_AWD_CRX_REGOFFSET_POS
#define ADC_REG_RANK_ID_SQRX_MASK
#define ADC_AWD_CR_ALL_CHANNEL_MASK
#define ADC_SQRX_REGOFFSET_POS
#define ADC_INJ_RANK_ID_JSQR_MASK
#define ADC_CHANNEL_ID_NUMBER_MASK
#define ADC_AWD_CR12_REGOFFSETGAP_MASK
#define ADC_CHANNEL_SMPx_BITOFFSET_POS
#define ADC_SQR2_REGOFFSET
#define __ADC_PTR_REG_OFFSET(__REG__, __REG_OFFFSET__)
Driver macro reserved for internal use: set a pointer to a register from a register basis from which ...
#define __DDL_ADC16_CHANNEL_TO_DECIMAL_NB(__CHANNEL__)
Helper macro to get ADC channel number in decimal format from literals DDL_ADC16_CHANNEL_x.
Structure definition of some features of ADC group injected.
Structure definition of some features of ADC instance.
Structure definition of some features of ADC group regular.