# Copyright (c) 2021 Leonard Pollak
# SPDX-License-Identifier: Apache-2.0

description: Texas Instruments Bidirectional Current/Power Sensor

compatible: "ti,ina219"

include: i2c-device.yaml

properties:
    lsb-microamp:
      type: int
      required: true
      description: |
        Current LSB in microAmpere
        Current LSB = max expected current [A] / 2^15
        example: 100 -> ~3A
    shunt-milliohm:
      type: int
      required: true
      description: |
        Value of the shunt resistor in milliOhm
    brng:
      type: int
      required: false
      default: 1
      description: |
        Bus Voltage Range
        0 = 16 V FSR
        1 = 32 V FSR

        The default of 32V is the power-on reset value of the device.

        Should the expected bus voltage be below 16V set this to 0.
      enum:
        - 0
        - 1
    pg:
      type: int
      required: false
      default: 3
      description: |
        Programmable Gain
        0 = 1  -> ±40 mV
        1 = /2 -> ±80 mV
        2 = /4 -> ±160 mV
        3 = /8 -> ±320 mV

        The default of ±320 mV is the power-on reset value of the device.

        In case the expected voltage drop across the shunt resistor is lower
        one can adjust this to get more accurate readings.
      enum:
        - 0
        - 1
        - 2
        - 3
    badc:
      type: int
      required: false
      default: 3
      description: |
        Bus ADC configuration
        0  = 9 bit -> 84 µs
        1  = 10 bit -> 148 µs
        2  = 11 bit -> 276 µs
        3  = 12 bit -> 532 µs
        9  = 12 bit - 2 sample averaging -> 1.06 ms
        10 = 12 bit - 4 sample averaging -> 2.13 ms
        11 = 12 bit - 8 sample averaging -> 4.26 ms
        12 = 12 bit - 16 sample averaging -> 8.51 ms
        13 = 12 bit - 32 sample averaging -> 17.02 ms
        14 = 12 bit - 64 sample averaging -> 34.05 ms
        15 = 12 bit - 128 sample averaging -> 68.10 ms

        The default of 12 bit is the power-on reset value of the device.

        Lowering the resolution of the ADC gives less accurate readings but
        cuts down on conversion times.

        Averaging over multiple samples gives more stable readings but adds
        to overall conversion time.
      enum:
        - 0
        - 1
        - 2
        - 3
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        - 15
    sadc:
      type: int
      required: false
      default: 3
      description: |
        Shunt ADC configuration
        0  = 9 bit -> 84 µs
        1  = 10 bit -> 148 µs
        2  = 11 bit -> 276 µs
        3  = 12 bit -> 532 µs
        9  = 12 bit - 2 sample averaging -> 1.06 ms
        10 = 12 bit - 4 sample averaging -> 2.13 ms
        11 = 12 bit - 8 sample averaging -> 4.26 ms
        12 = 12 bit - 16 sample averaging -> 8.51 ms
        13 = 12 bit - 32 sample averaging -> 17.02 ms
        14 = 12 bit - 64 sample averaging -> 34.05 ms
        15 = 12 bit - 128 sample averaging -> 68.10 ms

        The default of 12 bit is the power-on reset value of the device.

        Lowering the resolution of the ADC gives less accurate readings but
        cuts down on conversion times.

        Averaging over multiple samples gives more stable readings but adds
        to overall conversion time.
      enum:
        - 0
        - 1
        - 2
        - 3
        - 9
        - 10
        - 11
        - 12
        - 13
        - 14
        - 15
