# Current Source

## Description

The current source is a module designed to provide a consistent, tunable current source via output on a GPIO pin. Outputting this constant current source allows measurement of temperature via the addition of a thermistor in series from the selected GPIO pad to ground.

A trimmable current of 1 µA to 16 µA (default 10 μA) can be sourced to a chosen GPIO pin. The LSAD measures the voltage on the IO pin; this voltage can be used to calculate the actual temperature.

To improve accuracy, it is recommended that you perform a four-point measurement when using the current source. There are many switches in series to connect the current externally, causing some voltage drop. This can easily be improved by using two GPIOs, one to output the current and another one to measure the exact voltage on the positive voltage node. See the "Thermistor Configuration Using Two GPIOs" figure, which demonstrates utilizing GPIO6 as the output of the current source, and using GPIO2 to measure the resulting voltage.

For registers, see Current Source Registers.

Figure: Thermistor Configuration Using Two GPIOs

NOTE: The impedance characteristic of the thermistor can be logarithmic; therefore, to obtain a valid input range for the LSAD such that it can be measured correctly, the scale of the current needs to be changed.

## Current Source Configuration

The current source can be configured to output a current between 1 uA and 16 uA. The current is linearly set in the ACS_TEMP_CURR_CURRENT_VALUE bit-field in the ACS_TEMP_CURR_CFG register, starting with a setting of 0 corresponding to 1 uA. The current output can also be trimmed to a maximum of +/- 10% from the default trimming. This can be set in the same register’s ACS_TEMP_CURR_CURRENT_TRIM bit-field. In order to lower power consumption, the current source can be dynamically enabled according to the LSAD duty cycle. For example, if GPIO6 is used to measure the voltage generated by the current source, the current source is only enabled when the LSAD conversion on the selected GPIO6 is occurring. The GPIO duty cycle to use is selected via the ACS_TEMP_CURR_CFG_GPIO_IN_USE bit-field in the ACS_TEMP_CURR_CFG register. In this example, GPIO6 is chosen as the GPIO that the LSAD channel is connected to.

## Temperature Calculation

The temperature can be calculated using the traditional thermistor formula:

- T [°K]: measured temperature
- B [°K]: thermistor variation coefficient over temperature. It is given by the thermistor component datasheet
- R0 [Ω]: thermistor resistor at T0
- T0 [°K]: reference temperature (25°C)
- Rthermistor [Ω] given by the LSAD output voltage and thermistor current value

To obtain maximum accuracy, it is recommended that you adjust the thermistor current to have an LSAD voltage close to the middle of the LSAD range, around 1.0 V. This can be accomplished with firmware, by adjusting the thermistor current () using the field ACS_TEMP_CURR_CFG :CURRENT_VALUE.