nRF54L15 power domains effect on current consumption

Hi,

I'm developing an application on the nRF54L15 and recently I designed a custom PCB with a sensor that gives interrupts when its FIFO is full (should be around every 800ms) and the communication with the sensor uses TWI/I2C. At the time, I wasn't aware of the limitation of not being able to have an interrupt on GPIO2 and I wasn't very familiar with the power domains for the different GPIO ports, and I ended up connecting both the interrupt pin and the TWI pins to GPIO2. I know I will have to do a redesign to maximally make use of the most efficient settings, but I want to learn as much as possible from the current design before updating the design, so I wanted to confirm something.

To circumvent the interrupt issue, I just implement a polling method with a k_sleep(M_SEC(800)). Having only that, with the firmware checking the state of the interrupt pin, the current consumption is pretty much exactly what I expect. However, when I start actually reading the samples from the sensor using the TWI, that's when the current consumption starts showing weird patterns that don't align with my expectations. I'm wondering if this is related to TWI peripheral being in the MCU domain (as opposed to the low-power/peripheral domain.

For reference, this is the current consumption of only the sensor running and the polling happening every 800ms.

This is the exact same code, but with the i2c_read functions enabled (nothing else happens after reading the data for now)

As you can see, the interval between sharp increases is 800ms, which is exactly the interval we're using to read out the device. My feeling is that initiating the i2c_read starts up the MCU domain, which runs for some time and then stops, to then all start again 800ms later. Is that a correct assumption of what could be happening?

But then the question also remains why the baseline current consumption is so much higher for the case where the I2C reads are happening.

For now, I don't have the BLE enabled, but I plan to use it to stream the data every time it comes in (800ms). I assume using BLE will be part of the MCU domain, but I hope it will be possible to get the current consumption to be lower. For reference, I was able to use the nRF52 to get everything working with an average current consumption <100µA (sensor running, reading data over I2C and streaming all data). Would doing as much as possible with peripherals in the low-power domain be my best bet on getting the lowest possible current consumption, or do you believe somethign else could be causing this high current consumption?

Related