SLUSDQ4 April 2019 BQ79606A-Q1
The GPIO1 to GPIO6 input channels are available to be used to measure either ratiometric inputs (when in TS mode) or external analog voltages from 0 V to 5 V. Select the absolute or ratiometric for the individual GPIOs using the GPIO_ADC_CONF register. The GPIOs are enabled using the AUX_ADC_CTRL1[GPIO*_EN] bits.
When in Temperature Sensing "TS" operation, a resistor divider is connected from TSREF to AVSS with GPIO connected to the center tap. This linearizes the NTC curve and improves the resolution at extreme temperatures. The circuit is shown in Figure 17. Ensure that TSREF is enabled (using CONTROL2[TSREF_EN]) and settled before running any GPIO conversions.
The GPIO* voltage measurements are available with uncorrected values (to registers AUX_GPIO1_HU (MSB), AUX_GPIO1_MU (middle byte) and AUX_GPIO1_LU (LSB) for GPIO1 and AUX_GPIO*HU (MSB) and AUX_GPIO*_LU (LSB) for GPIO2-6)). The ratiometric ADC conversion result when in TS operation is calculated as:
To achieve the highest accuracy over temperature, a cell measurement must be taken to ensure the latest die temperature information is available for the correction. The absolute ADC conversion result when in absolute operation is calculated as:
The data for the GPIO1-6 voltages is 16-bit (spread over two registers) for the corrected and the uncorrected data (24-bit for the uncorrected data for GPIO1 only). To prevent the condition where a read of the full data results in data split between two reads (i.e. AUX_GPIO*H from first conversion and AUX_GPIO*L from second ADC conversion due to conversion update in the middle of a read), data for all registers for a single input are locked. For example, AUX_GPIO1_LU and AUX_GPIO1_MU are locked for updates until AUX_GPIO1_HU is read. The best practice is to group read all registers for a particular input.