29#if HAL_USE_ADC || defined(__DOXYGEN__)
44#define KINETIS_ADCCLK_MIN 600000
49#define KINETIS_ADCCLK_MAX 36000000
51#define ADCx_SC1n_ADCH_DISABLED 31
53#define ADC_CR2_SWSTART (0x1U << 30U)
55#define ADC_NUM_CHANNELS 16
61#define ADC_SMPR2_SMP_AN0(n) ((n) << 0)
62#define ADC_SMPR2_SMP_AN1(n) ((n) << 3)
63#define ADC_SMPR2_SMP_AN2(n) ((n) << 6)
64#define ADC_SMPR2_SMP_AN3(n) ((n) << 9)
65#define ADC_SMPR2_SMP_AN4(n) ((n) << 12)
66#define ADC_SMPR2_SMP_AN5(n) ((n) << 15)
67#define ADC_SMPR2_SMP_AN6(n) ((n) << 18)
68#define ADC_SMPR2_SMP_AN7(n) ((n) << 21)
69#define ADC_SMPR2_SMP_AN8(n) ((n) << 24)
70#define ADC_SMPR2_SMP_AN9(n) ((n) << 27)
72#define ADC_SMPR1_SMP_AN10(n) ((n) << 0)
73#define ADC_SMPR1_SMP_AN11(n) ((n) << 3)
74#define ADC_SMPR1_SMP_AN12(n) ((n) << 6)
75#define ADC_SMPR1_SMP_AN13(n) ((n) << 9)
76#define ADC_SMPR1_SMP_AN14(n) ((n) << 12)
77#define ADC_SMPR1_SMP_AN15(n) ((n) << 15)
78#define ADC_SMPR1_SMP_SENSOR(n) ((n) << 18)
85#define ADC_CHANNEL_IN0 0
86#define ADC_CHANNEL_IN1 1
87#define ADC_CHANNEL_IN2 2
88#define ADC_CHANNEL_IN3 3
89#define ADC_CHANNEL_IN4 4
90#define ADC_CHANNEL_IN5 5
91#define ADC_CHANNEL_IN6 6
92#define ADC_CHANNEL_IN7 7
93#define ADC_CHANNEL_IN8 8
94#define ADC_CHANNEL_IN9 9
95#define ADC_CHANNEL_IN10 10
96#define ADC_CHANNEL_IN11 11
97#define ADC_CHANNEL_IN12 12
98#define ADC_CHANNEL_IN13 13
99#define ADC_CHANNEL_IN14 14
100#define ADC_CHANNEL_IN15 15
102#define ADC_CHANNEL_SENSOR 16
104#define ADC_CHANNEL_VREFINT 17
106#define ADC_CHANNEL_VBAT 18
114#define ADC_SAMPLE_3 0
115#define ADC_SAMPLE_15 1
116#define ADC_SAMPLE_28 2
117#define ADC_SAMPLE_56 3
118#define ADC_SAMPLE_84 4
119#define ADC_SAMPLE_112 5
120#define ADC_SAMPLE_144 6
121#define ADC_SAMPLE_480 7
126#define ADC_SQR1_NUM_CH(n) 0
142#if !defined(KINETIS_ADC_USE_ADC0) || defined(__DOXYGEN__)
143#define KINETIS_ADC_USE_ADC0 FALSE
146#if !defined(KINETIS_ADC_USE_ADC1) || defined(__DOXYGEN__)
147#define KINETIS_ADC_USE_ADC1 FALSE
150#if !defined(KINETIS_ADC_USE_ADC2) || defined(__DOXYGEN__)
151#define KINETIS_ADC_USE_ADC2 FALSE
157#if !defined(KINETIS_ADC_IRQ_PRIORITY) || defined(__DOXYGEN__)
158#define KINETIS_ADC_IRQ_PRIORITY 5
167#if KINETIS_ADC_USE_ADC0 && !KINETIS_HAS_ADC0
168#error "ADC1 not present in the selected device"
171#if KINETIS_ADC_USE_ADC1 && !KINETIS_HAS_ADC1
172#error "ADC2 not present in the selected device"
175#if KINETIS_ADC_USE_ADC2 && !KINETIS_HAS_ADC2
176#error "ADC3 not present in the selected device"
179#if !KINETIS_ADC_USE_ADC0 && !KINETIS_ADC_USE_ADC1 && !KINETIS_ADC_USE_ADC2
180#error "ADC driver activated but no ADC peripheral assigned"
220#define adc_lld_configuration_group_fields \
275#define adc_lld_config_fields \
282#define adc_lld_driver_fields \
286 size_t number_of_samples; \
288 size_t current_index; \
290 size_t current_channel; \
292 adc12_config_t adc12Cfg; \
294 adc12_channel_config_t adc12ChannelCfg; \
296 uint32_t channelGroup; \
298 int8_t channelIndices[ADC_NUM_CHANNELS]
309#if KINETIS_ADC_USE_ADC0 && !defined(__DOXYGEN__)
310extern ADCDriver
ADCD1;
313#if KINETIS_ADC_USE_ADC1 && !defined(__DOXYGEN__)
314extern ADCDriver
ADCD2;
317#if KINETIS_ADC_USE_ADC2 && !defined(__DOXYGEN__)
318extern ADCDriver
ADCD3;
ADCDriver ADCD3
ADC3 driver identifier.
adcerror_t
Possible ADC failure causes.
void adc_lld_stop_conversion(ADCDriver *adcp)
Stops an ongoing conversion.
void adc_lld_init(void)
Low level ADC driver initialization.
uint32_t sc3
ADC SC3 register initialization data.
void(* adcerrorcallback_t)(ADCDriver *adcp, adcerror_t err)
ADC error callback type.
uint32_t channel_mask
Bitmask of channels for ADC conversion.
ADCDriver ADCD2
ADC2 driver identifier.
void adc_lld_start_conversion(ADCDriver *adcp)
Starts an ADC conversion.
void adc_lld_stop(ADCDriver *adcp)
Deactivates the ADC peripheral.
uint32_t cfg1
ADC CFG1 register initialization data.
uint16_t adc_channels_num_t
Channels number in a conversion group.
void adc_lld_start(ADCDriver *adcp)
Configures and activates the ADC peripheral.
uint16_t adcsample_t
ADC sample data type.
ADCDriver ADCD1
ADC1 driver identifier.