Line data Source code
1 1 : /*
2 : * Copyright (c) 2020 Vestas Wind Systems A/S
3 : * Copyright 2022, 2024-2025 NXP
4 : *
5 : * SPDX-License-Identifier: Apache-2.0
6 : */
7 :
8 : /**
9 : * @file
10 : * @brief Extended public API for the NXP MCUX Analog Comparator (ACMP)
11 : */
12 :
13 : #ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_
14 : #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_
15 :
16 : #ifdef __cplusplus
17 : extern "C" {
18 : #endif
19 :
20 : #include <zephyr/drivers/sensor.h>
21 :
22 : #if defined(FSL_FEATURE_ACMP_HAS_C1_INPSEL_BIT) && (FSL_FEATURE_ACMP_HAS_C1_INPSEL_BIT == 1U)
23 : #define MCUX_ACMP_HAS_INPSEL 1
24 : #else
25 0 : #define MCUX_ACMP_HAS_INPSEL 0
26 : #endif
27 :
28 : #if defined(FSL_FEATURE_ACMP_HAS_C1_INNSEL_BIT) && (FSL_FEATURE_ACMP_HAS_C1_INNSEL_BIT == 1U)
29 : #define MCUX_ACMP_HAS_INNSEL 1
30 : #else
31 0 : #define MCUX_ACMP_HAS_INNSEL 0
32 : #endif
33 :
34 : #if defined(FSL_FEATURE_ACMP_HAS_C0_OFFSET_BIT) && (FSL_FEATURE_ACMP_HAS_C0_OFFSET_BIT == 1U)
35 : #define MCUX_ACMP_HAS_OFFSET 1
36 : #else
37 0 : #define MCUX_ACMP_HAS_OFFSET 0
38 : #endif
39 :
40 : #if defined(FSL_FEATURE_ACMP_HAS_C3_REG) && (FSL_FEATURE_ACMP_HAS_C3_REG != 0U) && \
41 : (FSL_FEATURE_ACMP_HAS_NO_3V_DOMAIN == 0U)
42 : #define MCUX_ACMP_HAS_DISCRETE_MODE 1
43 : #else
44 0 : #define MCUX_ACMP_HAS_DISCRETE_MODE 0
45 : #endif
46 :
47 : #if defined(FSL_FEATURE_ACMP_HAS_C0_HYSTCTR_BIT) && (FSL_FEATURE_ACMP_HAS_C0_HYSTCTR_BIT == 1U)
48 : #define MCUX_ACMP_HAS_HYSTCTR 1
49 : #else
50 0 : #define MCUX_ACMP_HAS_HYSTCTR 0
51 : #endif
52 :
53 : #if defined(FSL_FEATURE_ACMP_HAS_NO_WINDOW_MODE) && (FSL_FEATURE_ACMP_HAS_NO_WINDOW_MODE == 1U)
54 : #define MCUX_ACMP_HAS_WINDOW_MODE 0
55 : #else
56 0 : #define MCUX_ACMP_HAS_WINDOW_MODE 1
57 : #endif
58 :
59 : #if defined(FSL_FEATURE_ACMP_HAS_NO_C0_SE_BIT) && (FSL_FEATURE_ACMP_HAS_NO_C0_SE_BIT == 1U)
60 : #define MCUX_ACMP_HAS_SAMPLE_CLOCK_SELECTION 0
61 : #else
62 0 : #define MCUX_ACMP_HAS_SAMPLE_CLOCK_SELECTION 1
63 : #endif
64 :
65 0 : enum sensor_channel_mcux_acmp {
66 : /** Analog Comparator Output. */
67 : SENSOR_CHAN_MCUX_ACMP_OUTPUT = SENSOR_CHAN_PRIV_START,
68 : };
69 :
70 0 : enum sensor_trigger_type_mcux_acmp {
71 : /** Analog Comparator Output rising event trigger. */
72 : SENSOR_TRIG_MCUX_ACMP_OUTPUT_RISING = SENSOR_TRIG_PRIV_START,
73 : /** Analog Comparator Output falling event trigger. */
74 : SENSOR_TRIG_MCUX_ACMP_OUTPUT_FALLING,
75 : };
76 :
77 0 : enum sensor_attribute_mcux_acmp {
78 : /** Analog Comparator hard block offset. */
79 : SENSOR_ATTR_MCUX_ACMP_OFFSET_LEVEL = SENSOR_ATTR_COMMON_COUNT,
80 : /** Analog Comparator hysteresis level. */
81 : SENSOR_ATTR_MCUX_ACMP_HYSTERESIS_LEVEL,
82 : /**
83 : * Analog Comparator Digital-to-Analog Converter voltage
84 : * reference source.
85 : */
86 : SENSOR_ATTR_MCUX_ACMP_DAC_VOLTAGE_REFERENCE,
87 : /** Analog Comparator Digital-to-Analog Converter value. */
88 : SENSOR_ATTR_MCUX_ACMP_DAC_VALUE,
89 : /** Analog Comparator positive port input. */
90 : SENSOR_ATTR_MCUX_ACMP_POSITIVE_PORT_INPUT,
91 : /** Analog Comparator positive mux input. */
92 : SENSOR_ATTR_MCUX_ACMP_POSITIVE_MUX_INPUT,
93 : /** Analog Comparator negative port input. */
94 : SENSOR_ATTR_MCUX_ACMP_NEGATIVE_PORT_INPUT,
95 : /** Analog Comparator negative mux input. */
96 : SENSOR_ATTR_MCUX_ACMP_NEGATIVE_MUX_INPUT,
97 : #if MCUX_ACMP_HAS_DISCRETE_MODE
98 : /** Analog Comparator Positive Channel Discrete Mode Enable. */
99 : SENSOR_ATTR_MCUX_ACMP_POSITIVE_DISCRETE_MODE,
100 : /** Analog Comparator Negative Channel Discrete Mode Enable. */
101 : SENSOR_ATTR_MCUX_ACMP_NEGATIVE_DISCRETE_MODE,
102 : /** Analog Comparator discrete mode clock selection. */
103 : SENSOR_ATTR_MCUX_ACMP_DISCRETE_CLOCK,
104 : /** Analog Comparator resistor divider enable. */
105 : SENSOR_ATTR_MCUX_ACMP_DISCRETE_ENABLE_RESISTOR_DIVIDER,
106 : /** Analog Comparator discrete sample selection. */
107 : SENSOR_ATTR_MCUX_ACMP_DISCRETE_SAMPLE_TIME,
108 : /** Analog Comparator discrete phase1 sampling time selection. */
109 : SENSOR_ATTR_MCUX_ACMP_DISCRETE_PHASE1_TIME,
110 : /** Analog Comparator discrete phase2 sampling time selection. */
111 : SENSOR_ATTR_MCUX_ACMP_DISCRETE_PHASE2_TIME,
112 : #endif
113 : };
114 :
115 : #ifdef __cplusplus
116 : }
117 : #endif
118 :
119 : #endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCUX_ACMP_H_ */
|