fatal error 발생 상황 .
nRF5 SDK 버전 : 17.1.0 의 예제 코드 : nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140
상기 예제 코드의 main.c 에서 advertising 시간 설정이 3분(180초) 으로 기본 설정되어있다.
#define APP_ADV_DURATION 18000 // unit 100msec.
즉, advertising 시작하고 3분 동안 BLE connection 없는 경우 advertising 중지하게 된다.
advertising 중지없이 연속으로 하려면 상기 parameter 값을 0으로 설정하면 되는데, 예제 코드에서는 0으로 설정하고 실행해보면 fatal error 발생한다.
원인
예제코드의 advertising 설정 함수 인 advertising_init ( , , ) 내부의 init.advdata.flags 설정한 값이 fatal error 일으키는 원인 지점.
static void advertising_init( ble_uuid_t * p_adv_uuids, uint8_t ui8_num_uuid)
{
.. 중략
init.advdata.flags = BLE_GAP_ADV_FLAGS_LE_ONLY_LIMITED_DISC_MODE;
.. 중략
}
해결책.
설정값을 BLE_GAP_ADV_FLAGS_LE_ONLY_GENERAL_DISC_MODE 으로 변경하면 연속 advertising ( #define APP_ADV_DURATION 0) 이든 180초 시간 설정( #define APP_ADV_DURATION 18000 ) 이든 모두 정상 작동한다.
기타.
본 예제 에서 뿐만 아니라 nRF5 SDK 기반 BLE 연속 advertising 설정하려면 위의 설정 처럼 해줘야 함.
포럼 관련글.
continuous advertising 으로 검색된 글 들 중에서 유용한 정보
https://devzone.nordicsemi.com/f/nordic-q-a/79685/ble_app_uart-continuous-advertise
연관
첫 등록 : 2023.01.29
최종 수정 :
단축 주소 : https://igotit.tistory.com/4204
'임베디드.일렉트로닉스 > nRF52' 카테고리의 다른 글
nRF52 . BLE . RSSI (0) | 2023.01.30 |
---|---|
nRF52 . BLE . Tx Power 설정. (0) | 2023.01.29 |
nRF52 . SES . 빌드 오류 해결 . __vfprintf.h: No such file or directory (0) | 2023.01.20 |
nRF52 . Programmer . 경고 Part of the HEX regions are out of the device memory size (0) | 2023.01.20 |
nRF52 . SES . 빌드 오류 해결 .text .rodata is larger than specified size. (0) | 2023.01.19 |
댓글