RegForge

All parts / ADS1115

ADS1115 register map

16-bit delta-sigma ADC with PGA, comparator and I2C interface — Texas Instruments

4 registers I2C I²C 0x48, 0x49, 0x4A, 0x4B 8-bit reg addresses 100% bit coverage not yet human-verified
I²C address conflict. On its default address(es) this part collides with INA219 (0x48, 0x49, 0x4A, 0x4B); INA226 (0x48, 0x49, 0x4A, 0x4B); PCA9685 (0x48, 0x49, 0x4A, 0x4B). You cannot put them on the same bus without changing a strap pin, using an I²C multiplexer, or moving one to a second bus. See the full address map.

Get it as a C header

pip install regforge
regforge gen ADS1115 --out ./src --driver --tests

Writes ads1115_regs.h with every address, mask and shift below, a bus-agnostic driver skeleton, and a file of compile-time assertions that make your compiler check the bit arithmetic. No API key needed — this part ships inside the package.

Not yet human-verified. Transcribed and mechanically validated — no overlapping fields, no out-of-range bits, reset values consistent with their fields — but not yet checked line-by-line against the datasheet. Verifying it is a useful half hour.

Registers

AddrRegisterAccessWidthResetDescription
0x00CONVERSIONRO160x0000Last conversion result, two's complement, left-aligned
0x01CONFIGRW160x8583Operating mode, input multiplexer, PGA, data rate and comparator
0x02LO_THRESHRW160x8000Comparator low threshold, two's complement
0x03HI_THRESHRW160x7FFFComparator high threshold, two's complement

Bit layouts

Drawn MSB-first, the way the datasheet draws them. [7:5] means shift 5, width 3, mask 0xE0 — this is the notation that costs people a day when they read it backwards.

CONFIG  @  0x01  —  9 fields
OS[15]
MUX[14:12]
PGA[11:9]
MODE[8]
DR[7:5]
COMP_MODE[4]
COMP_POL[3]
COMP_LAT[2]
COMP_QUE[1:0]
BitsFieldAccessMaskResetDescription
[15]OSRW0x80000x01Write 1 to start a single conversion; reads 0 while a conversion is running
[14:12]MUXRW0x70000x00Input multiplexer configuration
[11:9]PGARW0x0E000x02Programmable gain amplifier setting
[8]MODERW0x01000x01Conversion mode
[7:5]DRRW0x00E00x04Data rate
[4]COMP_MODERW0x00100x00Comparator mode
[3]COMP_POLRW0x00080x00ALERT/RDY polarity
[2]COMP_LATRW0x00040x00Latching comparator
[1:0]COMP_QUERW0x00030x03Comparator queue and disable

CONFIG.OS values

ValueNameMeaning
0x00BUSYConversion in progress (on read)
0x01STARTStart a single conversion (on write)

CONFIG.MUX values

ValueNameMeaning
0x00AIN0_AIN1Differential AIN0 - AIN1 (default)
0x01AIN0_AIN3Differential AIN0 - AIN3
0x02AIN1_AIN3Differential AIN1 - AIN3
0x03AIN2_AIN3Differential AIN2 - AIN3
0x04AIN0_GNDSingle-ended AIN0
0x05AIN1_GNDSingle-ended AIN1
0x06AIN2_GNDSingle-ended AIN2
0x07AIN3_GNDSingle-ended AIN3

CONFIG.PGA values

ValueNameMeaning
0x00FSR_6_144VFull-scale range +/-6.144 V
0x01FSR_4_096VFull-scale range +/-4.096 V
0x02FSR_2_048VFull-scale range +/-2.048 V (default)
0x03FSR_1_024VFull-scale range +/-1.024 V
0x04FSR_0_512VFull-scale range +/-0.512 V
0x05FSR_0_256VFull-scale range +/-0.256 V

CONFIG.MODE values

ValueNameMeaning
0x00CONTINUOUSContinuous conversion
0x01SINGLE_SHOTSingle-shot, power down between (default)

CONFIG.DR values

ValueNameMeaning
0x00SPS_88 samples per second
0x01SPS_1616 samples per second
0x02SPS_3232 samples per second
0x03SPS_6464 samples per second
0x04SPS_128128 samples per second (default)
0x05SPS_250250 samples per second
0x06SPS_475475 samples per second
0x07SPS_860860 samples per second

CONFIG.COMP_MODE values

ValueNameMeaning
0x00TRADITIONALTraditional comparator (default)
0x01WINDOWWindow comparator

CONFIG.COMP_POL values

ValueNameMeaning
0x00ACTIVE_LOWActive low (default)
0x01ACTIVE_HIGHActive high

CONFIG.COMP_LAT values

ValueNameMeaning
0x00NON_LATCHINGNon-latching (default)
0x01LATCHINGLatching until read

CONFIG.COMP_QUE values

ValueNameMeaning
0x00ASSERT_AFTER_1Assert after one conversion
0x01ASSERT_AFTER_2Assert after two conversions
0x02ASSERT_AFTER_4Assert after four conversions
0x03DISABLEDComparator disabled, ALERT/RDY high-Z (default)

Generated C header

What regforge gen ADS1115 writes for CONFIG:

/* ------------------------------------------------------------------------ */
/* CONFIG @ 0x01u  rw  16-bit  reset 0x8583u */
/* Operating mode, input multiplexer, PGA, data rate and comparator */
/* ------------------------------------------------------------------------ */

#define ADS1115_CONFIG                                 0x01u
#define ADS1115_CONFIG_WIDTH                           16u
#define ADS1115_CONFIG_RESET                           0x8583u

/*   OS bits [15] rw reset 0x01u -- Write 1 to start a single conversion; reads 0 while a conversion is running */
#define ADS1115_CONFIG_OS_SHIFT                        15u
#define ADS1115_CONFIG_OS_WIDTH                        1u
#define ADS1115_CONFIG_OS_MASK                         0x8000u
#define ADS1115_CONFIG_OS_GET(reg)                     (((uint16_t)(reg) & 0x8000u) >> 15u)
#define ADS1115_CONFIG_OS_SET(reg, val)                (((uint16_t)(reg) & (uint16_t)~0x8000u) | (((uint16_t)(val) << 15u) & 0x8000u))
#define ADS1115_CONFIG_OS_BUSY                         0x00u  /* Conversion in progress (on read) */
#define ADS1115_CONFIG_OS_START                        0x01u  /* Start a single conversion (on write) */

/*   MUX bits [14:12] rw reset 0x00u -- Input multiplexer configuration */
#define ADS1115_CONFIG_MUX_SHIFT                       12u
#define ADS1115_CONFIG_MUX_WIDTH                       3u
#define ADS1115_CONFIG_MUX_MASK                        0x7000u
#define ADS1115_CONFIG_MUX_GET(reg)                    (((uint16_t)(reg) & 0x7000u) >> 12u)
#define ADS1115_CONFIG_MUX_SET(reg, val)               (((uint16_t)(reg) & (uint16_t)~0x7000u) | (((uint16_t)(val) << 12u) & 0x7000u))
#define ADS1115_CONFIG_MUX_AIN0_AIN1                   0x00u  /* Differential AIN0 - AIN1 (default) */
#define ADS1115_CONFIG_MUX_AIN0_AIN3                   0x01u  /* Differential AIN0 - AIN3 */
#define ADS1115_CONFIG_MUX_AIN1_AIN3                   0x02u  /* Differential AIN1 - AIN3 */
#define ADS1115_CONFIG_MUX_AIN2_AIN3                   0x03u  /* Differential AIN2 - AIN3 */
#define ADS1115_CONFIG_MUX_AIN0_GND                    0x04u  /* Single-ended AIN0 */
#define ADS1115_CONFIG_MUX_AIN1_GND                    0x05u  /* Single-ended AIN1 */
#define ADS1115_CONFIG_MUX_AIN2_GND                    0x06u  /* Single-ended AIN2 */
#define ADS1115_CONFIG_MUX_AIN3_GND                    0x07u  /* Single-ended AIN3 */

/*   PGA bits [11:9] rw reset 0x02u -- Programmable gain amplifier setting */
#define ADS1115_CONFIG_PGA_SHIFT                       9u
#define ADS1115_CONFIG_PGA_WIDTH                       3u
#define ADS1115_CONFIG_PGA_MASK                        0x0E00u
#define ADS1115_CONFIG_PGA_GET(reg)                    (((uint16_t)(reg) & 0x0E00u) >> 9u)
#define ADS1115_CONFIG_PGA_SET(reg, val)               (((uint16_t)(reg) & (uint16_t)~0x0E00u) | (((uint16_t)(val) << 9u) & 0x0E00u))
#define ADS1115_CONFIG_PGA_FSR_6_144V                  0x00u  /* Full-scale range +/-6.144 V */
#define ADS1115_CONFIG_PGA_FSR_4_096V                  0x01u  /* Full-scale range +/-4.096 V */
#define ADS1115_CONFIG_PGA_FSR_2_048V                  0x02u  /* Full-scale range +/-2.048 V (default) */
#define ADS1115_CONFIG_PGA_FSR_1_024V                  0x03u  /* Full-scale range +/-1.024 V */
#define ADS1115_CONFIG_PGA_FSR_0_512V                  0x04u  /* Full-scale range +/-0.512 V */

Related parts

INA219
Texas Instruments
6 registers
INA226
Texas Instruments
10 registers
ADXL345
Analog Devices
30 registers

Source

Transcribed from TI ADS1115 datasheet (SBAS444) (hand-transcribed) (hand-transcribed). Hand-authored seed entry, not machine-extracted. Check against TI ADS1115 datasheet (SBAS444) before trusting it, then mark it verified.

Raw JSON · Report an error