LCOV - code coverage report
Current view: top level - zephyr/drivers/comparator - nrf_comp.h Coverage Total Hit
Test: new.info Lines: 95.5 % 22 21
Test Date: 2025-09-05 20:47:19

            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 2.0-1