cmp_driver.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 - 2016, Freescale Semiconductor, Inc.
3  * Copyright 2016 NXP
4  * All rights reserved.
5  *
6  * THIS SOFTWARE IS PROVIDED BY NXP "AS IS" AND ANY EXPRESSED OR
7  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
9  * IN NO EVENT SHALL NXP OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
10  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
11  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
12  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
13  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
14  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
15  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
16  * THE POSSIBILITY OF SUCH DAMAGE.
17  */
18 
19 #ifndef CMP_DRIVER_H
20 #define CMP_DRIVER_H
21 
22 #include "status.h"
23 #include "device_registers.h"
24 
33 #define CMP_INPUT_FLAGS_MASK 0xFF0000
34 #define CMP_INPUT_FLAGS_SHIFT 16U
35 #define CMP_ROUND_ROBIN_CHANNELS_MASK 0xFF0000
36 #define CMP_ROUND_ROBIN_CHANNELS_SHIFT 16U
37 
38 /*******************************************************************************
39  * Enumerations.
40  ******************************************************************************/
44 typedef enum
45 {
49 
53 typedef enum
54 {
55  CMP_VIN1 = 0U,
56  CMP_VIN2 = 1U
58 
62 typedef enum
63 {
67 
71 typedef enum
72 {
73  CMP_NORMAL = 0U,
74  CMP_INVERT = 1U
76 
80 typedef enum
81 {
82  CMP_COUT = 0U,
83  CMP_COUTA = 1U
85 
89 typedef enum
90 {
94 
95 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
96 
99 typedef enum
100 {
103 } cmp_offset_t;
104 #endif
105 
109 typedef enum
110 {
116 
120 typedef enum
121 {
125 
129 typedef enum
130 {
136 
140 typedef enum
141 {
151 } cmp_mode_t;
152 
159 typedef uint8_t cmp_ch_list_t;
160 
164 typedef uint8_t cmp_ch_number_t;
165 
172 typedef struct
173 {
190 #if FEATURE_CMP_HAS_HARD_BLOCK_OFFSET
193 #endif
199 
206 typedef struct
207 {
217 }cmp_anmux_t;
218 
225 typedef struct
226 {
229  uint8_t voltage;
230  bool state;
232 #if FEATURE_CMP_DAC_FIX_SELECTION
233  bool fixRefInputMux;
236 #endif
237 }cmp_dac_t;
238 
245 typedef struct
246 {
252  uint8_t samples;
253 #if FEATURE_CMP_HAS_INIT_DELAY
255 #endif
262 
269 typedef struct
270 {
275 }cmp_module_t;
276 
277 
278 /*******************************************************************************
279  * API
280  ******************************************************************************/
286 #if defined(__cplusplus)
287 extern "C" {
288 #endif
289 
300 status_t CMP_DRV_Reset(const uint32_t instance);
301 
314 
327 status_t CMP_DRV_Init(const uint32_t instance, const cmp_module_t* const config);
328 
340 status_t CMP_DRV_GetConfigAll(const uint32_t instance, cmp_module_t* const config);
341 
353 
365 status_t CMP_DRV_ConfigDAC(const uint32_t instance, const cmp_dac_t* config);
366 
378 status_t CMP_DRV_GetDACConfig(const uint32_t instance, cmp_dac_t* const config);
379 
391 
403 status_t CMP_DRV_ConfigMUX(const uint32_t instance, const cmp_anmux_t* config);
404 
416 status_t CMP_DRV_GetMUXConfig(const uint32_t instance, cmp_anmux_t* const config);
417 
429 
441 status_t CMP_DRV_ConfigTriggerMode(const uint32_t instance, const cmp_trigger_mode_t* config);
442 
454 status_t CMP_DRV_GetTriggerModeConfig(const uint32_t instance, cmp_trigger_mode_t* const config);
455 
471 status_t CMP_DRV_GetOutputFlags(const uint32_t instance, cmp_output_trigger_t *flags);
472 
483 status_t CMP_DRV_ClearOutputFlags(const uint32_t instance);
484 
497 status_t CMP_DRV_GetInputFlags(const uint32_t instance, cmp_ch_list_t *flags);
498 
509 status_t CMP_DRV_ClearInputFlags(const uint32_t instance);
510 
524 
538 status_t CMP_DRV_ConfigComparator(const uint32_t instance, const cmp_comparator_t *config);
539 
553 status_t CMP_DRV_GetComparatorConfig(const uint32_t instance, cmp_comparator_t *config);
554 
555 
557 #if defined(__cplusplus)
558 }
559 #endif
560 
563 #endif /* __CMP_DRIVER_H__*/
564 /*******************************************************************************
565  * EOF
566  ******************************************************************************/
567 
status_t CMP_DRV_GetComparatorConfig(const uint32_t instance, cmp_comparator_t *config)
Return configuration for comparator from CMP module.
Definition: cmp_driver.c:591
cmp_ch_number_t fixedChannel
Definition: cmp_driver.h:251
cmp_port_mux_t
Port Mux Source selection Implements : cmp_port_mux_t_Class.
Definition: cmp_driver.h:62
cmp_power_mode_t
Power Modes selection Implements : cmp_power_mode_t_Class.
Definition: cmp_driver.h:44
cmp_inverter_t
Comparator output invert selection Implements : cmp_inverter_t_Class.
Definition: cmp_driver.h:71
uint8_t initializationDelay
Definition: cmp_driver.h:254
cmp_fixed_port_t fixedPort
Definition: cmp_driver.h:249
status_t CMP_DRV_GetDACConfig(const uint32_t instance, cmp_dac_t *const config)
Return current configuration for DAC.
Definition: cmp_driver.c:290
status_t CMP_DRV_ConfigTriggerMode(const uint32_t instance, const cmp_trigger_mode_t *config)
Configure trigger mode.
Definition: cmp_driver.c:395
cmp_ch_number_t positiveInputMux
Definition: cmp_driver.h:215
cmp_mode_t
Comparator functional modes Implements : cmp_mode_t_Class.
Definition: cmp_driver.h:140
uint8_t cmp_ch_number_t
Number of channel Implements : cmp_ch_number_t_Class.
Definition: cmp_driver.h:164
status_t CMP_DRV_GetInitTriggerMode(cmp_trigger_mode_t *config)
Get reset configuration for registers related with Trigger Mode.
Definition: cmp_driver.c:372
cmp_anmux_t mux
Definition: cmp_driver.h:272
status_t CMP_DRV_ConfigDAC(const uint32_t instance, const cmp_dac_t *config)
Configure only the DAC component.
Definition: cmp_driver.c:266
status_t CMP_DRV_GetInitConfigComparator(cmp_comparator_t *config)
Get reset configuration for registers related with comparator features.
Definition: cmp_driver.c:534
status_t CMP_DRV_GetTriggerModeConfig(const uint32_t instance, cmp_trigger_mode_t *const config)
Get current trigger mode configuration.
Definition: cmp_driver.c:422
Defines the analog mux.
Definition: cmp_driver.h:206
bool roundRobinInterruptState
Definition: cmp_driver.h:248
bool state
Definition: cmp_driver.h:230
Defines the trigger mode.
Definition: cmp_driver.h:245
status_t CMP_DRV_ClearInputFlags(const uint32_t instance)
Clear comparator input channels flags.
Definition: cmp_driver.c:512
status_t CMP_DRV_GetOutputFlags(const uint32_t instance, cmp_output_trigger_t *flags)
Get comparator output flags.
Definition: cmp_driver.c:449
uint8_t voltage
Definition: cmp_driver.h:229
status_t CMP_DRV_GetConfigAll(const uint32_t instance, cmp_module_t *const config)
Gets the current comparator configuration.
Definition: cmp_driver.c:192
cmp_ch_list_t roundRobinChannelsState
Definition: cmp_driver.h:256
cmp_output_trigger_t
Comparator output interrupt configuration Implements : cmp_output_trigger_t_Class.
Definition: cmp_driver.h:129
cmp_hysteresis_t
Comparator hysteresis control Implements : cmp_hysteresis_t_Class.
Definition: cmp_driver.h:109
uint8_t filterSamplePeriod
Definition: cmp_driver.h:180
Defines the comparator module configuration.
Definition: cmp_driver.h:269
#define CMP_MUX_SOURCE
status_t CMP_DRV_ConfigMUX(const uint32_t instance, const cmp_anmux_t *config)
Configure only the MUX component.
Definition: cmp_driver.c:331
status_t CMP_DRV_GetInitConfigMUX(cmp_anmux_t *config)
Get reset configuration for registers related with MUX.
Definition: cmp_driver.c:312
status_t CMP_DRV_GetInputFlags(const uint32_t instance, cmp_ch_list_t *flags)
Gets input channels change flags.
Definition: cmp_driver.c:494
cmp_voltage_reference_t voltageReferenceSource
Definition: cmp_driver.h:227
status_t CMP_DRV_ConfigComparator(const uint32_t instance, const cmp_comparator_t *config)
Configure only comparator features.
Definition: cmp_driver.c:561
status_t
Status return codes. Common error codes will be a unified enumeration (C enum) that will contain all ...
Definition: status.h:44
status_t CMP_DRV_Reset(const uint32_t instance)
Reset all registers.
Definition: cmp_driver.c:69
cmp_output_enable_t pinState
Definition: cmp_driver.h:186
status_t CMP_DRV_GetInitConfigAll(cmp_module_t *config)
Get reset configuration for all registers.
Definition: cmp_driver.c:88
status_t CMP_DRV_Init(const uint32_t instance, const cmp_module_t *const config)
Configure all comparator features with the given configuration structure.
Definition: cmp_driver.c:138
cmp_ch_number_t negativeInputMux
Definition: cmp_driver.h:216
cmp_port_mux_t positivePortMux
Definition: cmp_driver.h:208
uint8_t cmp_ch_list_t
Comparator channels list (1bit/channel) |------—|------—|--—|------—|------—| |CH7_state|CH6_sta...
Definition: cmp_driver.h:159
cmp_comparator_t comparator
Definition: cmp_driver.h:271
cmp_voltage_reference_t
Voltage Reference selection Implements : cmp_voltage_reference_t_Class.
Definition: cmp_driver.h:53
cmp_mode_t mode
Definition: cmp_driver.h:179
cmp_offset_t
Comparator hard block offset control Implements : cmp_offset_t_Class.
Definition: cmp_driver.h:99
cmp_dac_t dac
Definition: cmp_driver.h:273
cmp_output_select_t outputSelect
Definition: cmp_driver.h:188
#define CMP_DAC_SOURCE
cmp_offset_t offsetLevel
Definition: cmp_driver.h:191
cmp_fixed_port_t
Comparator Round-Robin fixed port Implements : cmp_fixed_port_t_Class.
Definition: cmp_driver.h:120
status_t CMP_DRV_GetInitConfigDAC(cmp_dac_t *config)
Get reset configuration for registers related with DAC.
Definition: cmp_driver.c:245
Defines the block configuration.
Definition: cmp_driver.h:172
cmp_hysteresis_t hysteresisLevel
Definition: cmp_driver.h:194
status_t CMP_DRV_ClearOutputFlags(const uint32_t instance)
Clear comparator output flags.
Definition: cmp_driver.c:467
uint8_t filterSampleCount
Definition: cmp_driver.h:181
cmp_trigger_mode_t triggerMode
Definition: cmp_driver.h:274
cmp_output_trigger_t outputInterruptTrigger
Definition: cmp_driver.h:175
cmp_output_select_t
Comparator output select selection Implements : cmp_output_select_t_Class.
Definition: cmp_driver.h:80
status_t CMP_DRV_GetMUXConfig(const uint32_t instance, cmp_anmux_t *const config)
Return configuration only for the MUX component.
Definition: cmp_driver.c:352
Defines the DAC block.
Definition: cmp_driver.h:225
cmp_ch_list_t programedState
Definition: cmp_driver.h:260
cmp_power_mode_t powerMode
Definition: cmp_driver.h:182
cmp_inverter_t inverterState
Definition: cmp_driver.h:184
cmp_port_mux_t negativePortMux
Definition: cmp_driver.h:211
cmp_output_enable_t
Comparator output pin enable selection Implements : cmp_output_enable_t_Class.
Definition: cmp_driver.h:89