ADT7310 SPI temperature sensor

Driver for the Analog Devices ADT7310 temperature sensor. More...

Detailed Description

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:

Files

file  adt7310.h
 Interface definition for the ADT7310 sensor driver.
 

Data Structures

struct  adt7310_t
 Device descriptor for ADT7310 sensors. More...
 

Functions

int adt7310_set_config (adt7310_t *dev, uint8_t config)
 Set configuration register of an ADT7310 sensor. More...
 
int adt7310_init (adt7310_t *dev, spi_t spi, spi_clk_t clk, gpio_t cs)
 Initialize the ADT7310 sensor driver. More...
 
int16_t adt7310_read_raw (const adt7310_t *dev)
 Read raw temperature register value. More...
 
int32_t adt7310_read (const adt7310_t *dev)
 Read temperature value from sensor and convert to milli-degrees Celsius. More...
 
float adt7310_read_float (const adt7310_t *dev)
 Read temperature value from sensor and convert to degrees Celsius. More...
 

ADT7310 configuration bits

#define ADT7310_CONF_FAULT_QUEUE_MASK   (0x03)
 
#define ADT7310_CONF_FAULT_QUEUE_SHIFT   (0)
 
#define ADT7310_CONF_FAULT_QUEUE(x)   (((x) << ADT7310_CONF_FAULT_QUEUE_SHIFT) & ADT7310_CONF_FAULT_QUEUE_MASK)
 
#define ADT7310_CONF_CT_POL_MASK   (0x04)
 
#define ADT7310_CONF_CT_POL_SHIFT   (2)
 
#define ADT7310_CONF_CT_POL(x)   (((x) << ADT7310_CONF_CT_POL_SHIFT) & ADT7310_CONF_CT_POL_MASK)
 
#define ADT7310_CONF_INT_POL_MASK   (0x08)
 
#define ADT7310_CONF_INT_POL_SHIFT   (3)
 
#define ADT7310_CONF_INT_POL(x)   (((x) << ADT7310_CONF_INT_POL_SHIFT) & ADT7310_CONF_INT_POL_MASK)
 
#define ADT7310_CONF_INTCT_MODE_MASK   (0x10)
 
#define ADT7310_CONF_INTCT_MODE_SHIFT   (4)
 
#define ADT7310_CONF_INTCT_MODE(x)   (((x) << ADT7310_CONF_INTCT_MODE_SHIFT) & ADT7310_CONF_INTCT_MODE_MASK)
 
#define ADT7310_CONF_OPERATION_MODE_MASK   (0x60)
 
#define ADT7310_CONF_OPERATION_MODE_SHIFT   (5)
 
#define ADT7310_CONF_OPERATION_MODE(x)   (((x) << ADT7310_CONF_OPERATION_MODE_SHIFT) & ADT7310_CONF_OPERATION_MODE_MASK)
 
#define ADT7310_CONF_RESOLUTION_MASK   (0x80)
 
#define ADT7310_CONF_RESOLUTION_SHIFT   (7)
 
#define ADT7310_CONF_RESOLUTION(x)   (((x) << ADT7310_CONF_RESOLUTION_SHIFT) & ADT7310_CONF_RESOLUTION_MASK)
 
#define ADT7310_MODE_CONTINUOUS   (ADT7310_CONF_OPERATION_MODE(0))
 Continuous operation mode.
 
#define ADT7310_MODE_ONE_SHOT   (ADT7310_CONF_OPERATION_MODE(1))
 One shot.
 
#define ADT7310_MODE_1SPS   (ADT7310_CONF_OPERATION_MODE(2))
 1 sample per second
 
#define ADT7310_MODE_SHUTDOWN   (ADT7310_CONF_OPERATION_MODE(3))
 Shut down (powersave)
 

Function Documentation

◆ adt7310_init()

int adt7310_init ( adt7310_t dev,
spi_t  spi,
spi_clk_t  clk,
gpio_t  cs 
)

Initialize the ADT7310 sensor driver.

Note
The SPI bus is expected to have been initialized when adt7310_init is called.
Parameters
[in]devpointer to sensor device descriptor
[in]spiSPI bus the sensor is connected to
[in]clkSPI bus speed
[in]csGPIO 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]devpointer 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]devpointer 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]devpointer 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]devpointer to sensor device descriptor
[in]configconfiguration byte, see macros in adt7310.h
Returns
0 on success
-1 on error