I'm using the LTE Sensor Gateway sample (NCS 1.7) to transfer data from a BLE sensor to the nRF9160DK up to NRF Cloud. To get low power operation, I've been able to use the PSM feature to reduce LTE radio power draw, but my current consumption floor is still around 900 uA. I believe this is due to the UART being on.
When I try to disable the UART through proj.conf and spm.conf (as referenced in this blog post: https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/app_power_opt.html), I get a compile error. I imagine it's because this project needs the UART to communicate with the onboard nRF52840, via the HCI LP UART project that is programmed on it.
My question is the following: given the need to have UART enabled to talk to the onboard nRF52840, is there any way of reducing the overall current consumption floor? In my application, I'm ok with putting the nRF52840 to deep sleep until I need to use it, but I wasn't sure how best to do this in the LTE Sensor Gateway project. Any help you can give would be much appreciated, thank you.
For the HCI part, you can have a look at the lpuart example for nrf9160dk_nrf52840 board:
The lte_ble_gateway example uses lpuart by default for the nRF9160, but you need to disable serial in SPM.
That is done by adding CONFIG_SERIAL=n to this file:
Then you can also disable uart0 in the device tree overlay file (https://github.com/nrfconnect/sdk-nrf/blob/v1.7.0/samples/nrf9160/lte_ble_gateway/boards/nrf9160dk_nrf9160_ns.overlay) :
status = "disabled";
Could you try this and see if it works better now?
Thanks for the quick response. Starting with an unmodified lte_ble_gateway project (NCS 1.7.0), I tried the following:
a) Running the unmodified code on the nRF9160DK. Connected to NRF Cloud successfully with the following current profile, which looks correct. You'll notice the current floor in the idle periods is around 845 uA.
b) I then modified ./child_image/spm.conf to include CONFIG_SERIAL=n and disabled uart0 in the device tree overlay file (./boards/nrf9160dk_nrf9160_ns.overlay), as you suggested. I got the following current profile: To me, this looks like the device is reset due to an error condition, but since I disabled the UART I can't monitor the device to debug. Is it possible the base project requires uart0 for something specific?
Any additional insights you can give would be greatly appreciated, thanks very much.
My deepest apologies.
I see what is the issue. Could you try to set this in prj.conf?