S32 SDK
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 {
64  CMP_DAC = 0U,
65  CMP_MUX = 1U
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 
98 typedef enum
99 {
102 } cmp_offset_t;
103 
107 typedef enum
108 {
114 
118 typedef enum
119 {
123 
127 typedef enum
128 {
134 
138 typedef enum
139 {
149 } cmp_mode_t;
150 
157 typedef uint8_t cmp_ch_list_t;
158 
162 typedef uint8_t cmp_ch_number_t;
163 
170 typedef struct
171 {
195 
202 typedef struct
203 {
212 }cmp_anmux_t;
213 
220 typedef struct
221 {
224  uint8_t voltage;
225  bool state;
226 }cmp_dac_t;
227 
234 typedef struct
235 {
241  uint8_t samples;
249 
256 typedef struct
257 {
262 }cmp_module_t;
263 
264 
265 /*******************************************************************************
266  * API
267  ******************************************************************************/
273 #if defined(__cplusplus)
274 extern "C" {
275 #endif
276 
287 status_t CMP_DRV_Reset(const uint32_t instance);
288 
301 
314 status_t CMP_DRV_Init(const uint32_t instance, const cmp_module_t* const config);
315 
327 status_t CMP_DRV_GetConfigAll(const uint32_t instance, cmp_module_t* const config);
328 
340 
352 status_t CMP_DRV_ConfigDAC(const uint32_t instance, const cmp_dac_t* config);
353 
365 status_t CMP_DRV_GetDACConfig(const uint32_t instance, cmp_dac_t* const config);
366 
378 
390 status_t CMP_DRV_ConfigMUX(const uint32_t instance, const cmp_anmux_t* config);
391 
403 status_t CMP_DRV_GetMUXConfig(const uint32_t instance, cmp_anmux_t* const config);
404 
416 
428 status_t CMP_DRV_ConfigTriggerMode(const uint32_t instance, const cmp_trigger_mode_t* config);
429 
441 status_t CMP_DRV_GetTriggerModeConfig(const uint32_t instance, cmp_trigger_mode_t* const config);
442 
458 status_t CMP_DRV_GetOutputFlags(const uint32_t instance, cmp_output_trigger_t *flags);
459 
470 status_t CMP_DRV_ClearOutputFlags(const uint32_t instance);
471 
484 status_t CMP_DRV_GetInputFlags(const uint32_t instance, cmp_ch_list_t *flags);
485 
496 status_t CMP_DRV_ClearInputFlags(const uint32_t instance);
497 
511 
525 status_t CMP_DRV_ConfigComparator(const uint32_t instance, const cmp_comparator_t *config);
526 
540 status_t CMP_DRV_GetComparatorConfig(const uint32_t instance, cmp_comparator_t *config);
541 
542 
544 #if defined(__cplusplus)
545 }
546 #endif
547 
550 #endif /* __CMP_DRIVER_H__*/
551 /*******************************************************************************
552  * EOF
553  ******************************************************************************/
554 
status_t CMP_DRV_GetComparatorConfig(const uint32_t instance, cmp_comparator_t *config)
Return configuration for comparator from CMP module.
Definition: cmp_driver.c:536
cmp_ch_number_t fixedChannel
Definition: cmp_driver.h:240
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:242
cmp_fixed_port_t fixedPort
Definition: cmp_driver.h:238
status_t CMP_DRV_GetDACConfig(const uint32_t instance, cmp_dac_t *const config)
Return current configuration for DAC.
Definition: cmp_driver.c:256
status_t CMP_DRV_ConfigTriggerMode(const uint32_t instance, const cmp_trigger_mode_t *config)
Configure trigger mode.
Definition: cmp_driver.c:354
cmp_ch_number_t positiveInputMux
Definition: cmp_driver.h:210
cmp_mode_t
Comparator functional modes Implements : cmp_mode_t_Class.
Definition: cmp_driver.h:138
uint8_t cmp_ch_number_t
Number of channel Implements : cmp_ch_number_t_Class.
Definition: cmp_driver.h:162
status_t CMP_DRV_GetInitTriggerMode(cmp_trigger_mode_t *config)
Get reset configuration for registers related with Trigger Mode.
Definition: cmp_driver.c:333
cmp_anmux_t mux
Definition: cmp_driver.h:259
status_t CMP_DRV_ConfigDAC(const uint32_t instance, const cmp_dac_t *config)
Configure only the DAC component.
Definition: cmp_driver.c:238
status_t CMP_DRV_GetInitConfigComparator(cmp_comparator_t *config)
Get reset configuration for registers related with comparator features.
Definition: cmp_driver.c:485
status_t CMP_DRV_GetTriggerModeConfig(const uint32_t instance, cmp_trigger_mode_t *const config)
Get current trigger mode configuration.
Definition: cmp_driver.c:377
Defines the analog mux.
Definition: cmp_driver.h:202
bool roundRobinInterruptState
Definition: cmp_driver.h:237
bool state
Definition: cmp_driver.h:225
Defines the trigger mode.
Definition: cmp_driver.h:234
status_t CMP_DRV_ClearInputFlags(const uint32_t instance)
Clear comparator input channels flags.
Definition: cmp_driver.c:463
status_t CMP_DRV_GetOutputFlags(const uint32_t instance, cmp_output_trigger_t *flags)
Get comparator output flags.
Definition: cmp_driver.c:400
uint8_t voltage
Definition: cmp_driver.h:224
status_t CMP_DRV_GetConfigAll(const uint32_t instance, cmp_module_t *const config)
Gets the current comparator configuration.
Definition: cmp_driver.c:180
cmp_ch_list_t roundRobinChannelsState
Definition: cmp_driver.h:243
cmp_output_trigger_t
Comparator output interrupt configuration Implements : cmp_output_trigger_t_Class.
Definition: cmp_driver.h:127
cmp_hysteresis_t
Comparator hysteresis control Implements : cmp_hysteresis_t_Class.
Definition: cmp_driver.h:107
uint8_t filterSamplePeriod
Definition: cmp_driver.h:178
Defines the comparator module configuration.
Definition: cmp_driver.h:256
status_t CMP_DRV_ConfigMUX(const uint32_t instance, const cmp_anmux_t *config)
Configure only the MUX component.
Definition: cmp_driver.c:293
status_t CMP_DRV_GetInitConfigMUX(cmp_anmux_t *config)
Get reset configuration for registers related with MUX.
Definition: cmp_driver.c:275
status_t CMP_DRV_GetInputFlags(const uint32_t instance, cmp_ch_list_t *flags)
Gets input channels change flags.
Definition: cmp_driver.c:445
cmp_voltage_reference_t voltageReferenceSource
Definition: cmp_driver.h:222
status_t CMP_DRV_ConfigComparator(const uint32_t instance, const cmp_comparator_t *config)
Configure only comparator features.
Definition: cmp_driver.c:510
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:184
status_t CMP_DRV_GetInitConfigAll(cmp_module_t *config)
Get reset configuration for all registers.
Definition: cmp_driver.c:99
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:137
cmp_ch_number_t negativeInputMux
Definition: cmp_driver.h:211
cmp_port_mux_t positivePortMux
Definition: cmp_driver.h:204
uint8_t cmp_ch_list_t
Comparator channels list (1bit/channel) |------—|------—|--—|------—|------—| |CH7_state|CH6_sta...
Definition: cmp_driver.h:157
cmp_comparator_t comparator
Definition: cmp_driver.h:258
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:177
cmp_offset_t
Comparator hard block offset control Implements : cmp_offset_t_Class.
Definition: cmp_driver.h:98
cmp_dac_t dac
Definition: cmp_driver.h:260
cmp_output_select_t outputSelect
Definition: cmp_driver.h:186
cmp_offset_t offsetLevel
Definition: cmp_driver.h:188
cmp_fixed_port_t
Comparator Round-Robin fixed port Implements : cmp_fixed_port_t_Class.
Definition: cmp_driver.h:118
status_t CMP_DRV_GetInitConfigDAC(cmp_dac_t *config)
Get reset configuration for registers related with DAC.
Definition: cmp_driver.c:222
Defines the block configuration.
Definition: cmp_driver.h:170
cmp_hysteresis_t hysteresisLevel
Definition: cmp_driver.h:190
status_t CMP_DRV_ClearOutputFlags(const uint32_t instance)
Clear comparator output flags.
Definition: cmp_driver.c:418
uint8_t filterSampleCount
Definition: cmp_driver.h:179
cmp_trigger_mode_t triggerMode
Definition: cmp_driver.h:261
cmp_output_trigger_t outputInterruptTrigger
Definition: cmp_driver.h:173
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:313
Defines the DAC block.
Definition: cmp_driver.h:220
cmp_ch_list_t programedState
Definition: cmp_driver.h:247
cmp_power_mode_t powerMode
Definition: cmp_driver.h:180
cmp_inverter_t inverterState
Definition: cmp_driver.h:182
cmp_port_mux_t negativePortMux
Definition: cmp_driver.h:207
cmp_output_enable_t
Comparator output pin enable selection Implements : cmp_output_enable_t_Class.
Definition: cmp_driver.h:89