Hello!
I am working on firmware for device that has freertos in the base and implements BLE beacon and 1 service with 7 characteristics. Everything works. But power consumption is too high.
After plenty of tests on final HW, I've created playground based on ble_app_hrs_freertos_pca10040_s132 sample project and switched to sparkfun board.
When have just FreeRTOS with no user-defined tasks, consumption is about 1uA.
After I call ble_stack_init with code below, I got about 500uA. It is without advertising at all.
static void ble_stack_init(void) { ret_code_t err_code; err_code = nrf_sdh_enable_request(); APP_ERROR_CHECK(err_code); // Configure the BLE stack using the default settings. // Fetch the start address of the application RAM. uint32_t ram_start = 0; err_code = nrf_sdh_ble_default_cfg_set(APP_BLE_CONN_CFG_TAG, &ram_start); APP_ERROR_CHECK(err_code); // Enable BLE stack. err_code = nrf_sdh_ble_enable(&ram_start); APP_ERROR_CHECK(err_code); // Register a handler for BLE events. NRF_SDH_BLE_OBSERVER(m_ble_observer, APP_BLE_OBSERVER_PRIO, ble_evt_handler, NULL); }
When beacon is enabled I have cca 650uA.
When GATT and beacon are working I have cca 750uA.
I measure with multimeter.
Results seems fine for me except for those 500uA after stack is initialized. Why is it so high? What can I do to lower it?
- SDK v 15.0
- NRF_LOG_ENABLED is 0
- Using RELEASE configuration.
- Tried S132 and S140 - result is the same