造成52832休眠时功耗偏高的原因之一
在我公司项目中, 一次测试设备时发现, 设备进入休眠状态时的电流任然有200微安。 这超出了我们的预期, 我们接受的电流应该是几十微安或者更低一些。设备的主芯片时52832, 由俩个外设, 一个3轴加速计QMA7981, 和一个磁力计QMC7983。 先开始认为可能是某一个传感器没有进入待机模式, 但仔细检查设置后发现,它们的设置是真确的。
查了很久, 发现问题出在加速计的中断输出和52832连接的IO口。 这个中断是用来唤醒设备的, 中断模式是: 有中断时IO口输出为高, 否则为低。 在52832 的中断唤醒里, 设置的口是上拉,高有效:
nrf_gpio_cfg_sense_input(PIN_IN_ACC, NRF_GPIO_PIN_PULLUP, NRF_GPIO_PIN_SENSE_HIGH);
这会造成在休眠时, 该IO口和加速计有电势差, 所以会有漏电流。 那么如何修改呢, 将QMA7981的中断配置为中断时输出为低, 否则输出为高。 这样在休眠时就不会有电势差, 也就不会有漏电流了。 修改后测试, 休眠电流降为9微安。效果很明显。