Line data Source code
1 0 : /*
2 : * Copyright (c) 2024 Nordic Semiconductor ASA
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : #ifndef ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_
8 : #define ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_
9 :
10 : #include <zephyr/drivers/comparator.h>
11 :
12 : #ifdef __cplusplus
13 : extern "C" {
14 : #endif
15 :
16 : /** Positive input selection */
17 1 : enum comp_nrf_lpcomp_psel {
18 : /** AIN0 external input */
19 : COMP_NRF_LPCOMP_PSEL_AIN0,
20 : /** AIN1 external input */
21 : COMP_NRF_LPCOMP_PSEL_AIN1,
22 : /** AIN2 external input */
23 : COMP_NRF_LPCOMP_PSEL_AIN2,
24 : /** AIN3 external input */
25 : COMP_NRF_LPCOMP_PSEL_AIN3,
26 : /** AIN4 external input */
27 : COMP_NRF_LPCOMP_PSEL_AIN4,
28 : /** AIN5 external input */
29 : COMP_NRF_LPCOMP_PSEL_AIN5,
30 : /** AIN6 external input */
31 : COMP_NRF_LPCOMP_PSEL_AIN6,
32 : /** AIN7 external input */
33 : COMP_NRF_LPCOMP_PSEL_AIN7,
34 : };
35 :
36 : /** External reference selection */
37 1 : enum comp_nrf_lpcomp_extrefsel {
38 : /** AIN0 external input */
39 : COMP_NRF_LPCOMP_EXTREFSEL_AIN0,
40 : /** AIN1 external input */
41 : COMP_NRF_LPCOMP_EXTREFSEL_AIN1,
42 : };
43 :
44 : /** Reference selection */
45 1 : enum comp_nrf_lpcomp_refsel {
46 : /** Use (VDD * (1/8)) as reference */
47 : COMP_NRF_LPCOMP_REFSEL_VDD_1_8,
48 : /** Use (VDD * (2/8)) as reference */
49 : COMP_NRF_LPCOMP_REFSEL_VDD_2_8,
50 : /** Use (VDD * (3/8)) as reference */
51 : COMP_NRF_LPCOMP_REFSEL_VDD_3_8,
52 : /** Use (VDD * (4/8)) as reference */
53 : COMP_NRF_LPCOMP_REFSEL_VDD_4_8,
54 : /** Use (VDD * (5/8)) as reference */
55 : COMP_NRF_LPCOMP_REFSEL_VDD_5_8,
56 : /** Use (VDD * (6/8)) as reference */
57 : COMP_NRF_LPCOMP_REFSEL_VDD_6_8,
58 : /** Use (VDD * (7/8)) as reference */
59 : COMP_NRF_LPCOMP_REFSEL_VDD_7_8,
60 : /** Use (VDD * (1/16)) as reference */
61 : COMP_NRF_LPCOMP_REFSEL_VDD_1_16,
62 : /** Use (VDD * (3/16)) as reference */
63 : COMP_NRF_LPCOMP_REFSEL_VDD_3_16,
64 : /** Use (VDD * (5/16)) as reference */
65 : COMP_NRF_LPCOMP_REFSEL_VDD_5_16,
66 : /** Use (VDD * (7/16)) as reference */
67 : COMP_NRF_LPCOMP_REFSEL_VDD_7_16,
68 : /** Use (VDD * (9/16)) as reference */
69 : COMP_NRF_LPCOMP_REFSEL_VDD_9_16,
70 : /** Use (VDD * (11/16)) as reference */
71 : COMP_NRF_LPCOMP_REFSEL_VDD_11_16,
72 : /** Use (VDD * (13/16)) as reference */
73 : COMP_NRF_LPCOMP_REFSEL_VDD_13_16,
74 : /** Use (VDD * (15/16)) as reference */
75 : COMP_NRF_LPCOMP_REFSEL_VDD_15_16,
76 : /** Use external analog reference */
77 : COMP_NRF_LPCOMP_REFSEL_AREF,
78 : };
79 :
80 : /**
81 : * @brief Configuration structure
82 : *
83 : * @note extrefsel is only used if refsel == COMP_NRF_LPCOMP_REFSEL_AREF
84 : */
85 1 : struct comp_nrf_lpcomp_config {
86 : /** Positive input selection */
87 1 : enum comp_nrf_lpcomp_psel psel;
88 : /** External reference selection */
89 1 : enum comp_nrf_lpcomp_extrefsel extrefsel;
90 : /** Reference selection */
91 1 : enum comp_nrf_lpcomp_refsel refsel;
92 : /** Hysteresis configuration */
93 1 : bool enable_hyst;
94 : };
95 :
96 : /**
97 : * @brief Configure comparator
98 : *
99 : * @param dev Comparator device instance
100 : * @param config Configuration
101 : *
102 : * @retval 0 if successful
103 : * @retval negative errno-code otherwise
104 : */
105 1 : int comp_nrf_lpcomp_configure(const struct device *dev,
106 : const struct comp_nrf_lpcomp_config *config);
107 :
108 : #ifdef __cplusplus
109 : }
110 : #endif
111 :
112 : #endif /* ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_LPCOMP_H_ */
|