Contrary to what I’d thought, the MAX4372 circuitry has a simple gain error: it’s about 10% low over the full-scale 300 mA current range.
A bench supply produces 5 V through an 8 Ω resistor, although the slope of the purple line is more like 7.3 Ω. Close enough.
The blue line is the current sense voltage, which is exactly the same as the setpoint voltage plus a little PWM noise contributing to the waviness. Unlike the previous solar-powered chart, the bench supply voltage doesn’t drop enough to saturate the current sink, so the result is a nice straight line.
The red line is the MAX4372 output, which is consistently 10% low right up to the end; I can fix that with simple software scaling. The curve doesn’t flatten out, either, because the common-mode voltage across the sense resistor stays well above the it-stops-working-well limit around 2 V.
Conspicuous by its absence is any sign of nonlinearity due to the Schottky protection diode across the sense terminal inputs. The full-scale sense voltage is 300 mA x 0.5 Ω = 150 mV, which is sufficiently below the 1N5819 threshold of about 300 mV.
The picture shows the hack-job mod I applied to the circuit board; basically a cut-and-solder job with 10 Ω SMD resistors and a through-hole 1N5819. Yes, I stacked those two chips to get 5 Ω on the -Sense input; it’s a nice way to get good fixed ratios.
Despite what the stripes look like, both of those through-hole resistors are 1.0 Ω: brown-black-gold-gold.
The MAX4372T, the heart of this discussion, is the nearly invisible black rectangle just in front of the diode’s right-hand lead.
Although I should take a look at the high-value resistor / no diode protection circuitry, this one will suffice for now. It’s worth mentioning that I haven’t managed to burn this MAX4372 out, despite perpetrating much the same indignities on it as I did to the others, so the diode protection really is working.