Программирование ARM nRF52x: устройство BLE Central и функция sd_ble_gap_scan_start Tue, March 05 2024  

Поделиться

Нашли опечатку?

Пожалуйста, сообщите об этом - просто выделите ошибочное слово или фразу и нажмите Shift Enter.

nRF52x: устройство BLE Central и функция sd_ble_gap_scan_start Печать
Добавил(а) microsin   

Пришлось разбираться с тем, почему после отключения BLE Central от периферийного устройства ток потребления у Central неожиданно возрастает до 5.6 мА.

Оказалось все довольно просто. В примерах SDK устройство Central ведет себя так, что после отключения оно автоматически переходит в режим сканирования путем вызова функции sd_ble_gap_scan_start. Если этот вызов исключить, то ток потребления уменьшается до приемлемых значений - порядка 50 мкА.

Функция sd_ble_gap_scan_start нужна только для обнаружения BLE-устройств в сети. Если заранее известен MAC-адрес целевого устройства BLE, то для установки связи функция sd_ble_gap_scan_start не нужна, и её вызов можно исключить. Это может быть важно для устройств, которым критично энергопотребление.

uint32_t sd_ble_gap_scan_start (ble_gap_scan_params_t const * p_scan_params);

Функция запускает сканирование сети BLE - поиск устройств в сети (GAP Discovery procedure, Observer Procedure).

Генерируемые события:

BLE_GAP_EVT_ADV_REPORT Получен пакет адвертайзинга (advertising packet) или пакет ответа на сканирование (scan response packet).
BLE_GAP_EVT_TIMEOUT Произошел таймаут сканера.

Параметры функции:

[in] p_scan_params Указатель на структуру с параметрами сканирования.

Возвращаемые значения:

NRF_SUCCESS Процедура сканирования успешно инициирована.
NRF_ERROR_INVALID_ADDR Предоставлен недопустимый указатель.
NRF_ERROR_INVALID_STATE Недопустимое состояние для выполнения операции.
NRF_ERROR_INVALID_PARAM Предоставлен недопустимый параметр (параметры).
NRF_ERROR_BUSY Стек занят, обработайте ожидающие события и сделайте новую попытку запустить сканирование.
NRF_ERROR_RESOURCES Недостаточно доступных слотов для ролей BLE. Остановите одну активную роль (или большее количество активных ролей) - Central, Peripheral или Broadcaster, и сделайте новую попытку запуска сканирования.

uint32_t sd_ble_gap_scan_stop (void);

Функция останавливает сканирование сети BLE.

Возвращаемые значения:

NRF_SUCCESS Процедура сканирования успешно остановлена.
NRF_ERROR_INVALID_STATE Недопустимое состояние для выполнения операции (возможно Central не находится в состоянии сканирования).

 

 

Добавить комментарий


Защитный код
Обновить

Top of Page