Hi,
we are using a ISP130301 module from Insight SIP (containing a nrf51822CEAA) with a low power acceleration sensor ADXL362, connected via SPI. SoftDevice is s130_nrf51_2.0.0_softdevice.hex
and SDK v11.0.0.
Problem: When we do a SPI transfer to read the acceleration data, we get a strange energy consumption pattern within 200-300 ms afterwards. Please have a look at the following current measurement, x axis ist 200 ms/div:
The very short high spike on the left side is a BT communication event (either advertising or connection) with the SPI transfer initiated (when sd_app_evt_wait()
returns control to the main() loop). After the spike, the nRF51822 goes immediately back to sleep.
Approximately 80-100 ms later, while the nRF51822 is sleeping, the current into the system starts rising until it reaches a peak ~200-230 ms after the SPI transfer, and then falls again in a strange pattern. We found out that this current flows into VDD_IO from the ADXL362, this is why we expect that the memory leak is related to the nRF51822 connected to the IO pins.
As you can see from the measurement, this issue has a high impact on the average energy consumption of the system.
We observed the following behavior:
(1) If we disable the perform the SPI trasfer, we don't geht the energy leak.
(2) If we have a fast connection interval but do the SPI transfers only each ~700 ms, there will be additional "spikes" for the connection interval on top of the measurement shown. The energy leak will stay exactly the same.
(3) If we don't go to sleep in main() but wait with a while() loop, the energy leak pattern stays the same, although we get the expected current offset that is used by the nRF51822 while HFCLK and control flow are running. In other words, the problem is not related to the nRF51822 sleep mode.
(4) The SDK v11.0.0 SPI driver configures MISO with no pull. If we set it to Pull-Up after SPI initialization, we don't get the energy leak.
Does anyone have an idea on what could cause this behavior? CS on the ADXL362 is high (stable level) while the energy leak happens, so MISO should be disconnected. Also, the nRF51822 should not allow so much current to flow through a pin configuted as high impedance input.
Thanks, Michael
Update:
I know that an undefined level on input pins can lead to higher power consumption on some microcontroller architectures. But at least for a SPI Master, the MOSI pin should be tolerant to high impedance as this is a standard operating condition.
Can you confirm that the nRF5x series is robust against undefined / high impedance input levels and that the input pins have no impact on the overall power consumption?
As the current flows through the ADXL, I would conclude that the energy leak is not caused by the MOSI input pin of the nRF51822. On the other hand, MOSI on the ADXL should be a tri state circuit which should also work stable...