Driver for the Analog Devices ADT7310 temperature sensor.
More...
Driver for the Analog Devices ADT7310 temperature sensor.
Description
The ADT7310 is a high accuracy digital temperature sensor in a narrow SOIC package. It contains a band gap temperature reference and a 13-bit ADC to monitor and digitize the temperature to a 0.0625°C resolution. The ADC resolution, by default, is set to 13 bits (0.0625 °C). This can be changed to 16 bits (0.0078 °C) by setting Bit 7 in the configuration register (Register Address 0x01). The ADT7310 is guaranteed to operate over supply voltages from 2.7 V to 5.5 V. Operating at 3.3 V, the average supply current is typically 210 μA. The ADT7310 has a shutdown mode that powers down the device and offers a shutdown current of typically 2 μA. The ADT7310 is rated for operation over the −55°C to +150°C temperature range.
Usage
See tests/drivers/adt7310
for an example application using this driver.
Caveats
This driver is currently missing support for a number of hardware features:
- Interrupt and compare pins are not handled
- There is no public API for setting the temperature alarm levels
- Device SPI reset is not implemented (drive MISO high from the master while clocking SCK)
|
file | adt7310.h |
| Interface definition for the ADT7310 sensor driver.
|
|
◆ ADT7310_CONF_CT_POL
#define ADT7310_CONF_CT_POL |
( |
|
x | ) |
(((x) << ADT7310_CONF_CT_POL_SHIFT) & ADT7310_CONF_CT_POL_MASK) |
◆ ADT7310_CONF_CT_POL_MASK
#define ADT7310_CONF_CT_POL_MASK (0x04) |
◆ ADT7310_CONF_CT_POL_SHIFT
#define ADT7310_CONF_CT_POL_SHIFT (2) |
◆ ADT7310_CONF_FAULT_QUEUE
#define ADT7310_CONF_FAULT_QUEUE |
( |
|
x | ) |
(((x) << ADT7310_CONF_FAULT_QUEUE_SHIFT) & ADT7310_CONF_FAULT_QUEUE_MASK) |
◆ ADT7310_CONF_FAULT_QUEUE_MASK
#define ADT7310_CONF_FAULT_QUEUE_MASK (0x03) |
◆ ADT7310_CONF_FAULT_QUEUE_SHIFT
#define ADT7310_CONF_FAULT_QUEUE_SHIFT (0) |
◆ ADT7310_CONF_INT_POL
#define ADT7310_CONF_INT_POL |
( |
|
x | ) |
(((x) << ADT7310_CONF_INT_POL_SHIFT) & ADT7310_CONF_INT_POL_MASK) |
◆ ADT7310_CONF_INT_POL_MASK
#define ADT7310_CONF_INT_POL_MASK (0x08) |
◆ ADT7310_CONF_INT_POL_SHIFT
#define ADT7310_CONF_INT_POL_SHIFT (3) |
◆ ADT7310_CONF_INTCT_MODE
#define ADT7310_CONF_INTCT_MODE |
( |
|
x | ) |
(((x) << ADT7310_CONF_INTCT_MODE_SHIFT) & ADT7310_CONF_INTCT_MODE_MASK) |
◆ ADT7310_CONF_INTCT_MODE_MASK
#define ADT7310_CONF_INTCT_MODE_MASK (0x10) |
◆ ADT7310_CONF_INTCT_MODE_SHIFT
#define ADT7310_CONF_INTCT_MODE_SHIFT (4) |
◆ ADT7310_CONF_OPERATION_MODE
#define ADT7310_CONF_OPERATION_MODE |
( |
|
x | ) |
(((x) << ADT7310_CONF_OPERATION_MODE_SHIFT) & ADT7310_CONF_OPERATION_MODE_MASK) |
◆ ADT7310_CONF_OPERATION_MODE_MASK
#define ADT7310_CONF_OPERATION_MODE_MASK (0x60) |
◆ ADT7310_CONF_OPERATION_MODE_SHIFT
#define ADT7310_CONF_OPERATION_MODE_SHIFT (5) |
◆ ADT7310_CONF_RESOLUTION
#define ADT7310_CONF_RESOLUTION |
( |
|
x | ) |
(((x) << ADT7310_CONF_RESOLUTION_SHIFT) & ADT7310_CONF_RESOLUTION_MASK) |
◆ ADT7310_CONF_RESOLUTION_MASK
#define ADT7310_CONF_RESOLUTION_MASK (0x80) |
◆ ADT7310_CONF_RESOLUTION_SHIFT
#define ADT7310_CONF_RESOLUTION_SHIFT (7) |
◆ ADT7310_MODE_1SPS
#define ADT7310_MODE_1SPS (ADT7310_CONF_OPERATION_MODE(2)) |
1 sample per second
Definition at line 108 of file adt7310.h.
◆ ADT7310_MODE_CONTINUOUS
#define ADT7310_MODE_CONTINUOUS (ADT7310_CONF_OPERATION_MODE(0)) |
Continuous operation mode.
Definition at line 100 of file adt7310.h.
◆ ADT7310_MODE_ONE_SHOT
#define ADT7310_MODE_ONE_SHOT (ADT7310_CONF_OPERATION_MODE(1)) |
◆ ADT7310_MODE_SHUTDOWN
#define ADT7310_MODE_SHUTDOWN (ADT7310_CONF_OPERATION_MODE(3)) |
Shut down (powersave)
Definition at line 112 of file adt7310.h.
◆ adt7310_init()
Initialize the ADT7310 sensor driver.
- Note
- The SPI bus is expected to have been initialized when adt7310_init is called.
- Parameters
-
[in] | dev | pointer to sensor device descriptor |
[in] | spi | SPI bus the sensor is connected to |
[in] | clk | SPI bus speed |
[in] | cs | GPIO pin the chip select signal is connected to |
- Returns
- 0 on success
-
<0 on error
◆ adt7310_read()
int32_t adt7310_read |
( |
const adt7310_t * |
dev | ) |
|
Read temperature value from sensor and convert to milli-degrees Celsius.
Divide the returned value by 1000 to get integer degrees.
- Parameters
-
[in] | dev | pointer to sensor device descriptor |
- Returns
- temperature in milli-degrees Celsius
-
INT32_MIN on errors
◆ adt7310_read_float()
float adt7310_read_float |
( |
const adt7310_t * |
dev | ) |
|
Read temperature value from sensor and convert to degrees Celsius.
- Parameters
-
[in] | dev | pointer to sensor device descriptor |
- Returns
- floating point representation of temperature in degrees Celsius
-
NaN on errors
◆ adt7310_read_raw()
int16_t adt7310_read_raw |
( |
const adt7310_t * |
dev | ) |
|
Read raw temperature register value.
- Note
- The three least-significant bits of the value register are used for flags if the sensor is configured for 13 bit mode.
- Parameters
-
[in] | dev | pointer to sensor device descriptor |
- Returns
- raw sensor value on success
-
INT16_MIN on error
◆ adt7310_set_config()
int adt7310_set_config |
( |
adt7310_t * |
dev, |
|
|
uint8_t |
config |
|
) |
| |
Set configuration register of an ADT7310 sensor.
- Parameters
-
[in] | dev | pointer to sensor device descriptor |
[in] | config | configuration byte, see macros in adt7310.h |
- Returns
- 0 on success
-
-1 on error