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.