When playing with the RFM95 LoRa chip, I was surprised how complicated it is to reduce the power consumption to the values advertised in the datasheet. I happily designed the Picoballon probe for 2021 competition without any means of switching RFM95 the to save some PCB space and weight, the advertised sub uA power consumption looked perfect for this. But when I tested to board, the sleep current was around 2 mA!
Let's take a closer look on what's going on, first why do we get such a high current? All the other peripheral are sleeping and consuming few uA, so it has to be the RFM module. After some digging on the internet, I tried to set the RegOpMode (0x01) to 0x00 (FSK mode, sleep state) instead of 0x80 (LoRa mode, sleep state). Bang! The current drops to around 200 uA and rises back to 500 uA in a dozen of seconds. So what happened? All the examples on the internet are using 0x80 to sleep in LoRa mode and nobody complains. I've tried switching to LoRa with no further configuration, disabling the PA, etc. But the device never went to sleep while in LoRa mode. I don't know, maybe a counterfeit device? Forgot to set something vital elsewhere? Anyway, the device enters sleep once the write 0x00 here, so it's OK for now.
The second part, the consumption is still almost 0,5 mA even through it dropped to 200 uA initially, this looks a bit fishy. Maybe there are no pullups on the RFM and floating pin increases consumption as the input latch gets into undefined state? At first I suspected the SPI CS pin is the case, the MCU goes to sleep and sets all pins to inputs, as there's no pullup to reduce PCB size to extremes, it might be the case. After I added the pull-up resistor to CS pin, the current dropped to 150 uA and risen back to 0,5 mA. We are on a good track! When fiddling around the board with my fingers, I touched some other pins accidentally and the current dropped even less and risen back to 0,5 mA. So I've started adding pullups to other pins. After I added pullups to MISO/MOSI pin, the current dropped instantly to few uA and stayed there.
So what seems to be the case? The floating pins are probably slowly gathering some charge and going to undefined region between the H a L logical states, this makes the input circuits in the RFM95 draw more current than expected. Pulling all of the inputs to defined states gets rid of this problem! I've fixed my Picoballoon probe like this: