Line data Source code
1 1 : /*
2 : * Copyright (c) 2025 Thomas Schmid <tom@lfence.de>
3 : *
4 : * SPDX-License-Identifier: Apache-2.0
5 : */
6 :
7 : /**
8 : * @file
9 : * @brief Header file for extended sensor API of MCP9600 sensor
10 : * @ingroup mcp9600_interface
11 : */
12 :
13 : #ifndef ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCP9600H_
14 : #define ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCP9600H_
15 :
16 : /**
17 : * @brief Microchip MCP9600 Thermocouple Electromotive Force (EMF) to °C Converter
18 : * @defgroup mcp9600_interface MCP9600
19 : * @ingroup sensor_interface_ext
20 : * @{
21 : */
22 :
23 : #ifdef __cplusplus
24 : extern "C" {
25 : #endif /* __cplusplus */
26 :
27 : #include <zephyr/drivers/sensor.h>
28 :
29 : /**
30 : * @brief Custom sensor channels for MCP9600
31 : */
32 0 : enum sensor_channel_mcp9600 {
33 : SENSOR_CHAN_MCP9600_COLD_JUNCTION_TEMP = SENSOR_CHAN_PRIV_START,
34 : SENSOR_CHAN_MCP9600_HOT_JUNCTION_TEMP,
35 : SENSOR_CHAN_MCP9600_DELTA_TEMP,
36 : SENSOR_CHAN_MCP9600_RAW_ADC,
37 : };
38 :
39 : /**
40 : * @brief Custom sensor attributes for MCP9600
41 : */
42 0 : enum sensor_attribute_mcp9600 {
43 : SENSOR_ATTR_MCP9600_ADC_RES = SENSOR_ATTR_PRIV_START,
44 : SENSOR_ATTR_MCP9600_FILTER_COEFFICIENT,
45 : SENSOR_ATTR_MCP9600_THERMOCOUPLE_TYPE,
46 : SENSOR_ATTR_MCP9600_COLD_JUNCTION_RESOLUTION,
47 : SENSOR_ATTR_MCP9600_DEV_ID, /** @brief read only */
48 : };
49 :
50 : /**
51 : * @name Thermocouple type selection
52 : * @brief Values for attribute SENSOR_CHAN_MCP9600_THERMOCOUPLE_TYPE
53 : * @{
54 : */
55 0 : #define MCP9600_ATTR_VALUE_TYPE_K 0x0
56 0 : #define MCP9600_ATTR_VALUE_TYPE_J 0x1
57 0 : #define MCP9600_ATTR_VALUE_TYPE_T 0x2
58 0 : #define MCP9600_ATTR_VALUE_TYPE_N 0x3
59 0 : #define MCP9600_ATTR_VALUE_TYPE_S 0x4
60 0 : #define MCP9600_ATTR_VALUE_TYPE_E 0x5
61 0 : #define MCP9600_ATTR_VALUE_TYPE_B 0x6
62 0 : #define MCP9600_ATTR_VALUE_TYPE_R 0x7
63 : /** @} */
64 :
65 :
66 : /**
67 : * @name ADC resolution
68 : * @brief MCP9600 values for attribute SENSOR_ATTR_MCP9600_ADC_RES
69 : * @{
70 : */
71 0 : #define MCP9600_ATTR_VALUE_ADC_RES_18BIT 0x0
72 0 : #define MCP9600_ATTR_VALUE_ADC_RES_16BIT 0x1
73 0 : #define MCP9600_ATTR_VALUE_ADC_RES_14BIT 0x2
74 0 : #define MCP9600_ATTR_VALUE_ADC_RES_12BIT 0x3
75 : /**
76 : * @}
77 : */
78 :
79 :
80 : /**
81 : * @name Cold junction temperature resolution
82 : * @brief MCP9600 values for attribute SENSOR_ATTR_MCP9600_COLD_JUNCTION_RESOLUTION
83 : * @{
84 : */
85 0 : #define MCP9600_ATTR_VALUE_COLD_JUNC_TMP_RES_0_0625C 0x0
86 0 : #define MCP9600_ATTR_VALUE_COLD_JUNC_TMP_RES_0_25C 0x1
87 : /**
88 : * @}
89 : */
90 :
91 : #ifdef __cplusplus
92 : }
93 : #endif /* __cplusplus */
94 :
95 : /**
96 : * @}
97 : */
98 :
99 : #endif /* ZEPHYR_INCLUDE_DRIVERS_SENSOR_MCP9600H_ */
|