How to get 2.1uA with LoRa-E5 in low power mode?

Hi there,

How can I achieve 2uA current when processor is idle? Quick test with the demo app (LoRa_End_Node) shows 50-100uA. This is during idle period, not including duty cycle. What needs to be done to achieve 2.1uA?

I’ve tried with disconnected debug probe and UART, disabled logging. Still averaging around 50uA during idle period. Demo app joins LoRaWAN network and sends small packet every 30 seconds.

When I look closely, I see peaks to 400uA every 10ms or so, see the picture pls. Average is then almost 50uA. What might it be?

I’ve found what the problem was: floating RX pin of UART. Since I use only TX for logging during debugging, RX is not used at all. When I initialized it as analog, consumption stays at 2.2uA, as it should be:

GPIO_InitTypeDef GPIO_InitStructure = {0};
GPIO_InitStructure.Pin = USARTx_RX_Pin;
GPIO_InitStructure.Mode = GPIO_MODE_ANALOG;
GPIO_InitStructure.Pull = GPIO_NOPULL;
HAL_GPIO_Init(USARTx_RX_GPIO_Port, &GPIO_InitStructure);

I found it by creating empty application which goes directly into Stop2 mode and never comes back. Current consumption was about 1.6uA. Then I was adding devices one-by-one in MX, recompiling, flashing and checking current consumption again. I could quickly isolate UART as a problem.

For the low consumption everything has to be physically disconnected from the module/board: debugger interface, UART etc and no pins have to be pulled up or down, unless it is strictly dictated by schematic. Device has to be power cycled after flashing - reset is not enough: it can leave device in a strange state with relatively high consumption, not sure what it is.

1 Like

Hi, how did you get such low power consumption?

I have tried the the deep sleep AT command , AT+LOWPOWER=AUTOON. current dropped from 13mA to 5 mA. which not even close to data sheet levele 2.1uA.

I am developing my own firmware, based on STM32CubeWL Firmware Package. I already optimised it further to 1.3uA by switching off bunch of GPIO’s I do not really need.

AT slave firmware will never be able to get there because UART is always on. STM32WL has also low power UART (LPUART), I do not know how much it consumes. I assume more than 2uA. Baud rate is limited to 9600.

It is also possible to make custom AT-slave firmware with a wake-up GPIO pin: when it is low, it goes into STOP2 mode where it will consume like 2uA and when high, it wakes up and ready to communicate via UART.

I’ve read the specs and it seems they’ve implemented some kind of low power mode in AT slave firmware. Key point to me is RX pin (looking from LoRa-E5 side) should not change during sleep, ie it should not be floating. They do not say anything about 9600, so it does not seem to be LPUART. Probably they just switching between using RX pin for UART (wake-up mode) and GPIO external interrupt in sleep? May be look via scope what is happening on RX pin when you send AT+LOWPOWER=AUTOON?

5mA seems like radio is always on. Did you switched to Class A device? What other devices are connected to your board? Any LED is on maybe? or a sensor. Even connected debugger probe sucks some current, but not 5mA

yesterday I used stdio chip , and power from USB port, when it I working it wa 15mA at deep dropped to 5mA, today I texted powering the module directly without ftdi, now at deep sleep mode 0.5mA draws, still this is too high.

also now I cannot get out of deep sleep mode seems they AT command dent work , AUTOOFF hex format FFFFFFFF61742B6C6F77706F7765723D6175746F6F66660D0A. is this in command lit written should get out of the deep sleep mode but doesn’t ,do you have any experience?

RX pin connected to ftdi chip

Unfortunately, I do not have much experience with AT-slave firmware and do not have any device around to test. According to specs any activity on RX pin should wake up the module. Which makes sense to me.

Seems like you have an issue with power supply. Check your wiring and supply voltage - it has to be in the range from 2V to 3.6V. Also if it is too noisy or cannot handle sudden current changes without significant voltage changes, then MC can go into random state and ‘freeze’. If voltage is ok - may be add a decoupling capacitor? 1uF or higher - the higher the better

0.5mA is what I would expect with UART staying always on, but they seem to switch UART off in deepsleep. This is what I make from reading their specs. Do you have a scope? To look at the power line and RX pin - how much noise is there.

on deep sleep mode UART sis off but you can send command by adding four " 0xFFs" to the beginning of AT command, this is written on “AT Command List” file page 49. voltage is correct with capacitor. I was monitored current drop after I sent the deep sleep command.

how did you test this module with such low current usage ? also is it possible to get help from you by telegram or Skype?

Thanks for the information it was quite helpful.