LCOV - code coverage report
Current view: top level - zephyr/drivers/comparator - nrf_comp.h Hit Total Coverage
Test: new.info Lines: 21 22 95.5 %
Date: 2024-10-22 00:13:38

          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_COMP_H_
       8             : #define ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_COMP_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_comp_psel {
      18             :         /** AIN0 external input */
      19             :         COMP_NRF_COMP_PSEL_AIN0,
      20             :         /** AIN1 external input */
      21             :         COMP_NRF_COMP_PSEL_AIN1,
      22             :         /** AIN2 external input */
      23             :         COMP_NRF_COMP_PSEL_AIN2,
      24             :         /** AIN3 external input */
      25             :         COMP_NRF_COMP_PSEL_AIN3,
      26             :         /** AIN4 external input */
      27             :         COMP_NRF_COMP_PSEL_AIN4,
      28             :         /** AIN5 external input */
      29             :         COMP_NRF_COMP_PSEL_AIN5,
      30             :         /** AIN6 external input */
      31             :         COMP_NRF_COMP_PSEL_AIN6,
      32             :         /** AIN7 external input */
      33             :         COMP_NRF_COMP_PSEL_AIN7,
      34             :         /** VDD / 2 */
      35             :         COMP_NRF_COMP_PSEL_VDD_DIV2,
      36             :         /** VDDH / 5 */
      37             :         COMP_NRF_COMP_PSEL_VDDH_DIV5,
      38             : };
      39             : 
      40             : /** External reference selection */
      41           1 : enum comp_nrf_comp_extrefsel {
      42             :         /** AIN0 external input */
      43             :         COMP_NRF_COMP_EXTREFSEL_AIN0,
      44             :         /** AIN1 external input */
      45             :         COMP_NRF_COMP_EXTREFSEL_AIN1,
      46             :         /** AIN2 external input */
      47             :         COMP_NRF_COMP_EXTREFSEL_AIN2,
      48             :         /** AIN3 external input */
      49             :         COMP_NRF_COMP_EXTREFSEL_AIN3,
      50             :         /** AIN4 external input */
      51             :         COMP_NRF_COMP_EXTREFSEL_AIN4,
      52             :         /** AIN5 external input */
      53             :         COMP_NRF_COMP_EXTREFSEL_AIN5,
      54             :         /** AIN6 external input */
      55             :         COMP_NRF_COMP_EXTREFSEL_AIN6,
      56             :         /** AIN7 external input */
      57             :         COMP_NRF_COMP_EXTREFSEL_AIN7,
      58             : };
      59             : 
      60             : /** Reference selection */
      61           1 : enum comp_nrf_comp_refsel {
      62             :         /** Internal 1.2V reference */
      63             :         COMP_NRF_COMP_REFSEL_INT_1V2,
      64             :         /** Internal 1.8V reference */
      65             :         COMP_NRF_COMP_REFSEL_INT_1V8,
      66             :         /** Internal 2.4V reference */
      67             :         COMP_NRF_COMP_REFSEL_INT_2V4,
      68             :         /** AVDD 1.8V reference */
      69             :         COMP_NRF_COMP_REFSEL_AVDDAO1V8,
      70             :         /** VDD reference */
      71             :         COMP_NRF_COMP_REFSEL_VDD,
      72             :         /** Use external analog reference */
      73             :         COMP_NRF_COMP_REFSEL_AREF,
      74             : };
      75             : 
      76             : /** Speed mode selection */
      77           1 : enum comp_nrf_comp_sp_mode {
      78             :         /** Low-power mode */
      79             :         COMP_NRF_COMP_SP_MODE_LOW,
      80             :         /** Normal mode */
      81             :         COMP_NRF_COMP_SP_MODE_NORMAL,
      82             :         /** High-speed mode */
      83             :         COMP_NRF_COMP_SP_MODE_HIGH,
      84             : };
      85             : 
      86             : /** Current source configuration */
      87           1 : enum comp_nrf_comp_isource {
      88             :         /** Current source disabled */
      89             :         COMP_NRF_COMP_ISOURCE_DISABLED,
      90             :         /** 2.5uA current source enabled */
      91             :         COMP_NRF_COMP_ISOURCE_2UA5,
      92             :         /** 5uA current source enabled */
      93             :         COMP_NRF_COMP_ISOURCE_5UA,
      94             :         /** 10uA current source enabled */
      95             :         COMP_NRF_COMP_ISOURCE_10UA,
      96             : };
      97             : 
      98             : /**
      99             :  * @brief Single-ended mode configuration structure
     100             :  *
     101             :  * @note extrefsel is only used if refsel == COMP_NRF_COMP_REFSEL_AREF
     102             :  * @note Hysteresis down in volts = ((th_down + 1) / 64) * ref
     103             :  * @note Hysteresis up in volts = ((th_up + 1) / 64) * ref
     104             :  */
     105           1 : struct comp_nrf_comp_se_config {
     106             :         /** Positive input selection */
     107           1 :         enum comp_nrf_comp_psel psel;
     108             :         /** Speed mode selection */
     109           1 :         enum comp_nrf_comp_sp_mode sp_mode;
     110             :         /** Current source configuration */
     111           1 :         enum comp_nrf_comp_isource isource;
     112             :         /** External reference selection */
     113           1 :         enum comp_nrf_comp_extrefsel extrefsel;
     114             :         /** Reference selection */
     115           1 :         enum comp_nrf_comp_refsel refsel;
     116             :         /** Hysteresis down threshold configuration */
     117           1 :         uint8_t th_down;
     118             :         /** Hysteresis up threshold configuration */
     119           1 :         uint8_t th_up;
     120             : };
     121             : 
     122             : /**
     123             :  * @brief Configure comparator in single-ended mode
     124             :  *
     125             :  * @param dev Comparator device instance
     126             :  * @param config Single-ended mode configuration
     127             :  *
     128             :  * @retval 0 if successful
     129             :  * @retval negative errno-code otherwise
     130             :  */
     131           1 : int comp_nrf_comp_configure_se(const struct device *dev,
     132             :                                const struct comp_nrf_comp_se_config *config);
     133             : 
     134             : /** Differential mode configuration structure */
     135           1 : struct comp_nrf_comp_diff_config {
     136             :         /** Positive input selection */
     137           1 :         enum comp_nrf_comp_psel psel;
     138             :         /** Speed mode selection */
     139           1 :         enum comp_nrf_comp_sp_mode sp_mode;
     140             :         /** Current source configuration */
     141           1 :         enum comp_nrf_comp_isource isource;
     142             :         /** Negative input selection */
     143           1 :         enum comp_nrf_comp_extrefsel extrefsel;
     144             :         /** Hysteresis configuration */
     145           1 :         bool enable_hyst;
     146             : };
     147             : 
     148             : /**
     149             :  * @brief Configure comparator in differential mode
     150             :  *
     151             :  * @param dev Comparator device instance
     152             :  * @param config Differential mode configuration
     153             :  *
     154             :  * @retval 0 if successful
     155             :  * @retval negative errno-code otherwise
     156             :  */
     157           1 : int comp_nrf_comp_configure_diff(const struct device *dev,
     158             :                                  const struct comp_nrf_comp_diff_config *config);
     159             : 
     160             : #ifdef __cplusplus
     161             : }
     162             : #endif
     163             : 
     164             : #endif /* ZEPHYR_INCLUDE_DRIVERS_COMP_NRF_COMP_H_ */

Generated by: LCOV version 1.14