lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:   Wed, 21 Nov 2018 16:13:01 +0000
From:   BrĂ¼ns, Stefan <Stefan.Bruens@...h-aachen.de>
To:     Nicolin Chen <nicoleotsuka@...il.com>
CC:     "jdelvare@...e.com" <jdelvare@...e.com>,
        "linux@...ck-us.net" <linux@...ck-us.net>,
        "linux-hwmon@...r.kernel.org" <linux-hwmon@...r.kernel.org>,
        "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
        "corbet@....net" <corbet@....net>,
        "linux-doc@...r.kernel.org" <linux-doc@...r.kernel.org>,
        "m.purski@...sung.com" <m.purski@...sung.com>
Subject: Re: [RFC][PATCH] hwmon: (ina2xx) Improve current and power reading
 precision

On Mittwoch, 21. November 2018 02:26:29 CET Nicolin Chen wrote:
> === Background ===
[...]
> 
> === Problem ===
> Both methods simplify software routine by fixing one factor, which
> sacrifices the precision of the hardware measurement results.
> 
> Using ina226 for example, with method A, the current scale was 1mA
> and the power scale was 25mA.
> 
> With method B, calibration value is fixed at 2048 so the precision
> is decided by shunt resistor value. It sounds reasonable since the
> hardware engineers can use a larger shunt resistor when they need
> higher resolution. However, they often concern power burning across
> the resistor as well, so the resistor usually won't be so large: a
> typical value 1000 micro-ohms, which results in a current scale at
> 2.5 mA and a power sacle at 62.5 mW.

Power loss surely is a concern, but figures should be kept reasonable.

1. You mention 1.8V bus voltage, and currents in the 30mA range. Using the 
1mOhm current shunt:

U_S = R_S * I_S 1e-3 Ohm * 30e-3 A = 30e-6 V  (30uV)
P_S = U_S * I_S = 30e-6V * 30e-3 A = 900e-9W = 0.9 uW

INA219 Power Supply (Datasheet)
Min operating Voltage: 3V
Quiescent Current: 0.7mA
-> Min power: 2.1mW

So the INA219 alone uses 2.1mW, 1000 times more than the shunt.

Another concern may be voltage drop over the shunt, but for this case you have 
a nominal voltage of 1.8V, so 30uV are 0.001%.
 
> When measuring a 1.8v voltage running a small current (e.g. 33 mA),
> the power value (that's supposed to be 59.4 mW) becomes inaccurate
> due to the larger scale (25mA for method A; 62.5 mA for method B).

Another look into the datasheet reveals, even at full gain (PGA=1), the LSB is
40mV / 2^12 = 40mV / 4096 ~ 10uV. So when the current ADC reads out as 3*LSB, 
this anything between 25mA and 35mA. This is the best case figure.

On top of quantisation error, you have the ADC offset voltage (V_OS), which is 
given as (for PGA=1, best case): (+-) 10uV typical, (+-) 100uV max.


So, if you want to have meaningful readouts adjust your shunt to a reasonable 
value. Even 100 times the current value will have no measurable effect on you 
system (power loss: 90uW, voltage drop: 3mV).

Kind regards,

Stefan

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ