Unexpected Vbus readings for M5StickC-Plus
-
I came across a mystery (well, at least a mystery to me) while porting some code to the M5Unified API. In trying to see if the USB power was unplugged, I came across the undocumented M5.Power.getVBUSVoltage() method. In following the source code all they way down, I can see that it's reading the VBus voltage from the AXP192 and then scaling it to return a value in millivolts.
I expected to be able to compare that result against 0 to decide if the USB cable was plugged in. When it is plugged in, I get readings a little above 5000 mV. However, when the cable is unplugged, I get readings around 830 mV. That's with the internal battery nearly fully charged. I don't know if the unplugged reading changes with the internal battery charge or with the M5StickC-Plus workload or whatever.
As a workaround, I'm comparing against 2000 mV instead of 0 mV to decide if the device is unplugged.
Where do those 830 mV come from?
-
Perhaps I should mention what I was doing before porting to the M5Unified API. I was using the M5.Axp API to read the input power status register and decoding it. That told me directly what I wanted to know, but it doesn't seem to be available in the current iteration of the M5Unified API.