54 #include "cmp_hw_access.h"
73 CMP_Type* baseAddr = g_cmpBase[instance];
102 (config->
dac).state =
false;
104 (config->
dac).voltage = 0U;
105 (config->
mux).negativeInputMux = 0U;
106 (config->
mux).positiveInputMux = 0U;
110 (config->
triggerMode).roundRobinInterruptState =
false;
114 (config->
triggerMode).roundRobinChannelsState = 0U;
117 #if FEATURE_CMP_HAS_INIT_DELAY
121 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
125 #if FEATURE_CMP_DAC_FIX_SELECTION
126 (config->
dac).fixRefInputMux =
false;
143 CMP_Type* base = g_cmpBase[instance];
144 CMP_SetDMATriggerState(base, (config->
comparator).dmaTriggerState );
145 CMP_SetOutputInterruptTrigger(base, (config->
comparator).outputInterruptTrigger);
147 CMP_SetPowerMode(base, (config->
comparator).powerMode);
148 CMP_SetInverterState(base, (config->
comparator).inverterState);
149 CMP_SetComparatorOutputSource(base, (config->
comparator).outputSelect);
150 CMP_SetOutputPinState(base, (config->
comparator).pinState);
151 CMP_SetHysteresis(base, (config->
comparator).hysteresisLevel);
152 CMP_SetDACState(base, (config->
dac).state);
153 CMP_SetVoltageReference(base, (config->
dac).voltageReferenceSource);
154 CMP_SetVoltage(base, (config->
dac).voltage);
155 CMP_SetMinusMUXControl(base, (config->
mux).negativeInputMux);
156 CMP_SetPlusMuxControl(base, (config->
mux).positiveInputMux);
157 CMP_SetNegativePortInput(base, (config->
mux).negativePortMux);
158 CMP_SetPositivePortInput(base, (config->
mux).positivePortMux);
159 CMP_SetFixedPort(base, (config->
triggerMode).fixedPort);
160 CMP_SetFixedChannel(base, (config->
triggerMode).fixedChannel);
161 CMP_SetRoundRobinSamplesNumber(base, (config->
triggerMode).samples);
162 CMP_SetRoundRobinChannels(base, (config->
triggerMode).roundRobinChannelsState);
163 CMP_SetPresetState(base, (config->
triggerMode).programedState);
164 CMP_SetRoundRobinInterruptState(base, (config->
triggerMode).roundRobinInterruptState);
165 CMP_SetRoundRobinState(base, (config->
triggerMode).roundRobinState);
167 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
168 CMP_SetOffset(base, (config->
comparator).offsetLevel);
171 #if FEATURE_CMP_HAS_INIT_DELAY
172 CMP_SetInitDelay(base, (config->
triggerMode).initializationDelay);
175 #if FEATURE_CMP_DAC_FIX_SELECTION
176 CMP_SetFixedDACState(base, (config->
dac).fixRefInputMux);
197 const CMP_Type* base = g_cmpBase[instance];
198 (config->
comparator).dmaTriggerState = CMP_GetDMATriggerState(base);
199 (config->
comparator).outputInterruptTrigger = CMP_GetOutputInterruptTrigger(base);
200 (config->
comparator).mode = CMP_GetFunctionalMode(base);
201 (config->
comparator).filterSampleCount = CMP_GetFilterSampleCount(base);
202 (config->
comparator).filterSamplePeriod = CMP_GetFilterSamplePeriod(base);
203 (config->
comparator).powerMode = CMP_GetPowerMode(base);
204 (config->
comparator).inverterState = CMP_GetInverterState(base);
205 (config->
comparator).outputSelect = CMP_GetComparatorOutputSource(base);
206 (config->
comparator).pinState = CMP_GetOutputPinState(base);
207 (config->
comparator).hysteresisLevel = CMP_GetHysteresis(base);
208 (config->
dac).state = CMP_GetDACState(base);
209 (config->
dac).voltageReferenceSource = CMP_GetVoltageReference(base);
210 (config->
dac).voltage = CMP_GetVoltage(base);
211 (config->
mux).negativePortMux = CMP_GetNegativePortInput(base);
212 (config->
mux).positivePortMux = CMP_GetPositivePortInput(base);
213 (config->
mux).negativeInputMux = CMP_GetMinusMUXControl(base);
214 (config->
mux).positiveInputMux = CMP_GetPlusMUXControl(base);
215 (config->
triggerMode).roundRobinState = CMP_GetRoundRobinState(base);
216 (config->
triggerMode).roundRobinInterruptState = CMP_GetRoundRobinInterruptState(base);
217 (config->
triggerMode).fixedPort = CMP_GetFixedPort(base);
218 (config->
triggerMode).fixedChannel = CMP_GetFixedChannel(base);
219 (config->
triggerMode).samples = CMP_GetRoundRobinSamplesNumber(base);
220 (config->
triggerMode).roundRobinChannelsState = CMP_GetRoundRobinChannels(base);
221 (config->
triggerMode).programedState = CMP_GetLastComparisonResult(base);
223 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
224 (config->
comparator).offsetLevel = CMP_GetOffset(base);
227 #if FEATURE_CMP_HAS_INIT_DELAY
228 (config->
triggerMode).initializationDelay = CMP_GetInitDelay(base);
231 #if FEATURE_CMP_DAC_FIX_SELECTION
232 (config->
dac).fixRefInputMux = CMP_GetFixedDACState(base);
249 config->
state =
false;
253 #if FEATURE_CMP_DAC_FIX_SELECTION
254 config->fixRefInputMux =
false;
271 #if CMP_DAC_RESOLUTION != 255U
274 CMP_Type* base = g_cmpBase[instance];
275 CMP_SetDACState(base, config->
state);
277 CMP_SetVoltage(base, config->
voltage);
278 #if FEATURE_CMP_DAC_FIX_SELECTION
279 CMP_SetFixedDACState(base, config->fixRefInputMux);
295 const CMP_Type* base = g_cmpBase[instance];
296 config->
state = CMP_GetDACState(base);
298 config->
voltage = CMP_GetVoltage(base);
299 #if FEATURE_CMP_DAC_FIX_SELECTION
300 config->fixRefInputMux = CMP_GetFixedDACState(base);
336 CMP_Type* base = g_cmpBase[instance];
357 const CMP_Type* base = g_cmpBase[instance];
383 #if FEATURE_CMP_HAS_INIT_DELAY
400 CMP_Type* base = g_cmpBase[instance];
403 CMP_SetFixedPort(base, config->
fixedPort);
405 CMP_SetRoundRobinSamplesNumber(base, config->
samples);
407 #if FEATURE_CMP_HAS_INIT_DELAY
427 const CMP_Type* base = g_cmpBase[instance];
430 config->
fixedPort = CMP_GetFixedPort(base);
432 config->
samples = CMP_GetRoundRobinSamplesNumber(base);
436 #if FEATURE_CMP_HAS_INIT_DELAY
454 const CMP_Type* baseAddr = g_cmpBase[instance];
457 *flags = (
cmp_output_trigger_t) (((uint32_t)rising_enabled << (uint32_t)1U) | ((uint32_t)falling_enabled));
471 CMP_Type* baseAddr = g_cmpBase[instance];
473 uint32_t tmp = baseAddr->
C0;
499 const CMP_Type* baseAddr = g_cmpBase[instance];
501 uint32_t tmp = baseAddr->
C2;
516 CMP_Type* baseAddr = g_cmpBase[instance];
518 uint32_t tmp = baseAddr->
C2;
547 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
566 CMP_Type* base = g_cmpBase[instance];
572 CMP_SetPowerMode(base, config->
powerMode);
574 CMP_SetComparatorOutputSource(base, config->
outputSelect);
575 CMP_SetOutputPinState(base, config->
pinState);
577 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
596 const CMP_Type* base = g_cmpBase[instance];
599 config->
mode = CMP_GetFunctionalMode(base);
602 config->
powerMode = CMP_GetPowerMode(base);
604 config->
outputSelect = CMP_GetComparatorOutputSource(base);
605 config->
pinState = CMP_GetOutputPinState(base);
607 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
status_t CMP_DRV_GetComparatorConfig(const uint32_t instance, cmp_comparator_t *config)
Return configuration for comparator from CMP module.
cmp_ch_number_t fixedChannel
uint8_t initializationDelay
cmp_fixed_port_t fixedPort
status_t CMP_DRV_GetDACConfig(const uint32_t instance, cmp_dac_t *const config)
Return current configuration for DAC.
status_t CMP_DRV_ConfigTriggerMode(const uint32_t instance, const cmp_trigger_mode_t *config)
Configure trigger mode.
cmp_ch_number_t positiveInputMux
status_t CMP_DRV_GetInitTriggerMode(cmp_trigger_mode_t *config)
Get reset configuration for registers related with Trigger Mode.
static CMP_Type *const g_cmpBase[]
status_t CMP_DRV_ConfigDAC(const uint32_t instance, const cmp_dac_t *config)
Configure only the DAC component.
status_t CMP_DRV_GetInitConfigComparator(cmp_comparator_t *config)
Get reset configuration for registers related with comparator features.
#define CMP_DAC_RESOLUTION
status_t CMP_DRV_GetTriggerModeConfig(const uint32_t instance, cmp_trigger_mode_t *const config)
Get current trigger mode configuration.
bool roundRobinInterruptState
Defines the trigger mode.
status_t CMP_DRV_ClearInputFlags(const uint32_t instance)
Clear comparator input channels flags.
#define CMP_INPUT_FLAGS_MASK
status_t CMP_DRV_GetOutputFlags(const uint32_t instance, cmp_output_trigger_t *flags)
Get comparator output flags.
status_t CMP_DRV_GetConfigAll(const uint32_t instance, cmp_module_t *const config)
Gets the current comparator configuration.
cmp_ch_list_t roundRobinChannelsState
cmp_output_trigger_t
Comparator output interrupt configuration Implements : cmp_output_trigger_t_Class.
uint8_t filterSamplePeriod
Defines the comparator module configuration.
status_t CMP_DRV_ConfigMUX(const uint32_t instance, const cmp_anmux_t *config)
Configure only the MUX component.
status_t CMP_DRV_GetInitConfigMUX(cmp_anmux_t *config)
Get reset configuration for registers related with MUX.
status_t CMP_DRV_GetInputFlags(const uint32_t instance, cmp_ch_list_t *flags)
Gets input channels change flags.
cmp_voltage_reference_t voltageReferenceSource
status_t CMP_DRV_ConfigComparator(const uint32_t instance, const cmp_comparator_t *config)
Configure only comparator features.
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
status_t CMP_DRV_Reset(const uint32_t instance)
Reset all registers.
cmp_output_enable_t pinState
status_t CMP_DRV_GetInitConfigAll(cmp_module_t *config)
Get reset configuration for all registers.
status_t CMP_DRV_Init(const uint32_t instance, const cmp_module_t *const config)
Configure all comparator features with the given configuration structure.
cmp_ch_number_t negativeInputMux
cmp_port_mux_t positivePortMux
#define CMP_INSTANCE_COUNT
uint8_t cmp_ch_list_t
Comparator channels list (1bit/channel) |------—|------—|--—|------—|------—| |CH7_state|CH6_sta...
cmp_comparator_t comparator
cmp_output_select_t outputSelect
status_t CMP_DRV_GetInitConfigDAC(cmp_dac_t *config)
Get reset configuration for registers related with DAC.
Defines the block configuration.
cmp_hysteresis_t hysteresisLevel
status_t CMP_DRV_ClearOutputFlags(const uint32_t instance)
Clear comparator output flags.
uint8_t filterSampleCount
#define CMP_INPUT_FLAGS_SHIFT
cmp_trigger_mode_t triggerMode
cmp_output_trigger_t outputInterruptTrigger
status_t CMP_DRV_GetMUXConfig(const uint32_t instance, cmp_anmux_t *const config)
Return configuration only for the MUX component.
cmp_ch_list_t programedState
cmp_power_mode_t powerMode
cmp_inverter_t inverterState
cmp_port_mux_t negativePortMux