Part numbers are a help, but really it would take examining the actual implementation detail of schematic and software to find the fault.
Consider going around and evaluating each I/Os sleep level compared to any internal or external pulling resistors.
See if you can get the radio out of the circuit entirely and measure the current without it.
Consider desoldering the accelerometer, or make sure you’ve gotten it into the right mode - I have one from another brand that consumes more current on power-on, and only hits low consumption when it’s been explicitly configured to the proper mode.
To understand whats going on, why the sleep current is higher than you think\want you really do have to start from the begining.
Trying to troubleshoot why a complete design, processor, LoRa device, I2C stuff and more does not provide a low sleep current is I have found, not very informative.
Start at the beginning.
What is the sleep current with just the processor and no other components ?
Thanks for your advices,
According to your directions, i checked GPIOs pin at standby and see that one of them seems to be floating (0,156 V at pulldown). And some GPIOs migth be misconfigured. I quickly test it and the consumption didnt change yet but i will check GPIOs pin by pin. I will let you know the result but it may take some time.
Then i will desolder LORA and ACC if i could not correct the consumption with GPIOs.
Does anyone have experience with these STM32F411CEU6 boards?
This board appears to be the nextgen of the older STMF103 based blackpills. It comes with STM32F411 that is more powerful, has more memory, floating point support and a USB-C connector. It comes with a bootloader that has USB support.
No idea, but I’m not sure why an F4 would be a good choice.
A while back after studying pinouts and concluding it should work I swapped out the STM32F103 on a bluepill with an STM32L073 that makes a great choice for low power sensors; admittedly I then never actually did anything with it…
I want to update my problem with latest tests. When i did desolder the Lora SX1276 and ACC, i can actually see the 7 uA consumption with STM32L412KB standby mode. I found some GPIOs are misconfigured and i can decrease the consumption from 0,37 mA to 0,18 mA. I can’t decrease further yet but i continue to change the configuration of GPIOs.
By the way i could not find any configuration to shutdown TCXO. Could you help me with this ?
I attached the schematic of my circuit. STM with LORA.pdf (241.8 KB)
I want to update my situation again. Finally i can decrease the current consumption to 10 uA. First of all i start using stop mode instead of standby mode (I think gpio internal pull up pull downs not working in standby mode). Secondly, i disconnected dio3, dio4 and dio5 pins of sx1276. I think they consume power because they connected to 5V tolerant pins. Lastly, accelerometer SA0 pin was grounded. As design perspective it was not wrong but consumes to much energy according to datasheet. I changed it and connected to VCC. I hope these information helps someone who is going crazy ) and thank you for helping me.
Hello nicomedia,
I have made my own STM32 board with STM32L051 and RFM95W. I can power down to 1,5 - 1,9 uA in sleep mode with a BME280 attached. checkout https://www.iot-lab.org/blog/370/ for some inspiration.
Regards, Leo.
Hello everyone.
I have stm32 bluepill and lora module sx1276. I am using the guide made by: www.iotbyskovholm.dk/?Q=content/ibm-lmic-stm32cubemx. Unfortunately, the LoRa module is not transmitting, the program sends the “EV_TXSTART unkown event” message all the time. On thethingsnetwork, my node has an online status, but has not sent any package. Does anyone know what the problem is?
I would like to use an STM32 HAL code in STM32 Cube IDE and not an Arduino.
I have no experience with stm32CubeMX but it appears that join requests are sent, but the join accept is not received. Either because latter is not sent or because it is not received/recognized by the node.
This indicates that the event is triggered by the LoRaWAN stack but is not handled by your application code.
Do you have access to a nearby gateway and its traffic in the TTN console? Do you see any join accept downlink messages in respons to join requests?
The events with green lightning icon are join accepts sent to your node.
So the issue is with the node not seeing/recognizing the join accepts.
This often indicates a timing issue (causing downlink message not to be recognized), but may also relate to EV_TXSTART not being handled.
The issue will have to be further investigated in the code on your node (but stm32CubeMX currently exceeds my knowledge).
The “unknown event” is separate from the EV_TXSTART - something has changed / been added in to the heart of MCCI LMIC recently which I haven’t traced yet that fires an event that’s not recognised by the user facing code.
That was added more than a year ago already somewhere in v3.0 IIRC. The “unknow event” in that case is caused by not handling the event in the event handler in some of the included examples, which were later fixed but the issue still occurs when using older versions of the examples with newer versions of the library, or worse use examples from a totally different library.
But see:
The file set you can download here LINK TO FILE ZIP - unzip into its own folder so it is easy to find for you later on - see video first.
The file set is the original IBM LMIC version 1.6 but stripped for everything which were sensor or board specific, so it contain only the core IBM Lmic files and the HAL.c modified for STM32CubeMX - it will help your undestanding
Which apparently is not MCCI LMIC for the Arduino framework.
(Unless the reference to IBM LMIC in the description is incorrect and MCCI LMIC may have been used as the source instead. I haven’t verified.)
@SzymonJk If you don’t want to use the Arduino framework but STM32Cube then it may also be worth having a look at Semtech’s LoRaMac-node library. There will probably exist an implementation for STM32Cube.