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_ */