ADT7310 SPI temperature sensor¶
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/driver_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)
-
ADT7310_CONF_FAULT_QUEUE_MASK
¶ 1
(0x03)
-
ADT7310_CONF_FAULT_QUEUE_SHIFT
¶ 1
(0)
-
ADT7310_CONF_FAULT_QUEUE
( x)¶ 1
(((x) << ADT7310_CONF_FAULT_QUEUE_SHIFT) & ADT7310_CONF_FAULT_QUEUE_MASK)
-
ADT7310_CONF_CT_POL_MASK
¶ 1
(0x04)
-
ADT7310_CONF_CT_POL_SHIFT
¶ 1
(2)
-
ADT7310_CONF_CT_POL
( x)¶ 1
(((x) << ADT7310_CONF_CT_POL_SHIFT) & ADT7310_CONF_CT_POL_MASK)
-
ADT7310_CONF_INT_POL_MASK
¶ 1
(0x08)
-
ADT7310_CONF_INT_POL_SHIFT
¶ 1
(3)
-
ADT7310_CONF_INT_POL
( x)¶ 1
(((x) << ADT7310_CONF_INT_POL_SHIFT) & ADT7310_CONF_INT_POL_MASK)
-
ADT7310_CONF_INTCT_MODE_MASK
¶ 1
(0x10)
-
ADT7310_CONF_INTCT_MODE_SHIFT
¶ 1
(4)
-
ADT7310_CONF_INTCT_MODE
( x)¶ 1
(((x) << ADT7310_CONF_INTCT_MODE_SHIFT) & ADT7310_CONF_INTCT_MODE_MASK)
-
ADT7310_CONF_OPERATION_MODE_MASK
¶ 1
(0x60)
-
ADT7310_CONF_OPERATION_MODE_SHIFT
¶ 1
(5)
-
ADT7310_CONF_OPERATION_MODE
( x)¶ 1
(((x) << ADT7310_CONF_OPERATION_MODE_SHIFT) & ADT7310_CONF_OPERATION_MODE_MASK)
-
ADT7310_CONF_RESOLUTION_MASK
¶ 1
(0x80)
-
ADT7310_CONF_RESOLUTION_SHIFT
¶ 1
(7)
-
ADT7310_CONF_RESOLUTION
( x)¶ 1
(((x) << ADT7310_CONF_RESOLUTION_SHIFT) & ADT7310_CONF_RESOLUTION_MASK)
-
ADT7310_MODE_CONTINUOUS
¶ Continuous operation mode.
1
(ADT7310_CONF_OPERATION_MODE(0))
-
ADT7310_MODE_ONE_SHOT
¶ One shot.
1
(ADT7310_CONF_OPERATION_MODE(1))
-
ADT7310_MODE_1SPS
¶ 1 sample per second
1
(ADT7310_CONF_OPERATION_MODE(2))
-
ADT7310_MODE_SHUTDOWN
¶ Shut down (powersave)
1
(ADT7310_CONF_OPERATION_MODE(3))
-
int
adt7310_set_config
(adt7310_t * dev, uint8_t config)¶ Set configuration register of an ADT7310 sensor.
Parameters
dev: pointer to sensor device descriptor config: configuration byte, see macros in adt7310.h Return values
- 0 on success
- -1 on error
-
int
adt7310_init
(adt7310_t * dev,spi.h::spi_t
spi,atmega_common/include/periph_cpu_common.h::spi_clk_t
clk,gpio.h::gpio_t
cs)¶ Initialize the ADT7310 sensor driver.
Note
The SPI bus is expected to have been initialized when adt7310_init is called.
Parameters
dev: pointer to sensor device descriptor spi: SPI bus the sensor is connected to clk: SPI bus speed cs: GPIO pin the chip select signal is connected to Return values
- 0 on success
- <0 on error
-
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
dev: pointer to sensor device descriptor Return values
- raw sensor value on success
- INT16_MIN on error
-
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
dev: pointer to sensor device descriptor Return values
- temperature in milli-degrees Celsius
- INT32_MIN on errors
-
float
adt7310_read_float
(const adt7310_t * dev)¶ Read temperature value from sensor and convert to degrees Celsius.
Parameters
dev: pointer to sensor device descriptor Return values
- floating point representation of temperature in degrees Celsius
- NaN on errors
-
struct
adt7310_t
¶ Device descriptor for ADT7310 sensors.
-
spi.h::spi_t
spi
¶ SPI bus the sensor is connected to.
-
atmega_common/include/periph_cpu_common.h::spi_clk_t
clk
¶ SPI bus clock speed.
-
gpio.h::gpio_t
cs
¶ CS pin GPIO handle.
-
bool
initialized
¶ sensor status, true if sensor is initialized
-
bool
high_res
¶ Sensor resolution, true if configured to 16 bit resolution.
-