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

description: Texas Instruments Bidirectional Current/Power Sensor

compatible: "ti,ina219"

include: [sensor-device.yaml, 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
    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
    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
    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
    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
