본문 바로가기

nRF52   ( 40 )


nRF52 . Watch Dog Timer nRF52 WDT WDT 활용 코드 - WDT 에서 지정한 시간 이내에 main while 문 내의 마지막 에 추가한 WDT리로드 함수 실행 되지 않으면 리셋된다. 즉, 어떤 사유이든 cpu 먹통 된 경우 WDT 가 자동 리셋 해준다. #include "nrf_drv_wdt.h" nrf_drv_wdt_channel_id m_channel_id; static void wdt_event_handler(void) { //NOTE: The max amount of time we can spend in WDT interrupt is two cycles of 32768[Hz] clock - after that, reset occurs } static void init_wdt() { uint32_t err_code .. 2023. 10. 30.
nRF52 . 컴파일 에러 해결 . unknown type name 'nrf_dfu_set_adv_name_svci_async_t' 컴파일 에러 상황 nRF5 SDK 에서 제공되는 파일 ble_dfu_unbonded.c 가 포함된 SES 프로젝트 빌드시 아래와 같은 컴파일 에러 발생. unknown type name 'nrf_dfu_set_adv_name_svci_async_t' 해결방법 1. 아래 define 문을 소스 파일에 추가하든지 혹은 프로젝트 옵션의 preprocessor -> Preprocessor Definitions 에 NRF_DFU_TRANSPORT_BLE = 1 추가하면 해결됨. #define NRF_DFU_TRANSPORT_BLE 1 기타. 포럼에 질문 올라온 것의 댓글보면 위 설정 말고 다른 설정도 언급하고 있는데, 나의 경우에는 위 설정 하나만 해도 컴파일 에러 해결됨. 포럼글 링크 : https://devz.. 2023. 8. 4.
nRF52 . 코드에서 핀 리셋 용 GPIO 핀 연결 설정 . CONFIG_GPIO_AS_PINRESET SES 프로젝트 에서 핀리셋 GPIO 핀 연결 설정 프로젝트 Option 에서 Preprocessor Definitions 부분, CONFIG_GPIO_AS_PINRESET 이 기록되어있으면 GPIO 핀 을 핀 리셋 용으로 연결 시킨다는 설정이다. 기본 P0.18 핀 이 리셋 용도로 사용된다. 핀리셋용도로 GPIO 핀을 연결하지 않으려면 위 창에서 CONFIG_GPIO_AS_PINRESET 을 삭제한다. 설정 변경 이후 필수 처리 사항. CONFIG_GPIO_AS_PINRESET 설정 변경한 경우 타켓칩의 플래시 메모리를 모두 삭제(erase all)하고 펌웨어 기록해야 설정 변경한 것이 적용된다. SES IDE 에서는 erase all 기능이 제공되지 않으므로 nRF Connect Programmer .. 2023. 7. 26.
nRF52 . 리셋 사유 코드에서 확인 방법 nRF52 리셋 사유 확인 코드 main() { APP_ERROR_CHECK(NRF_LOG_INIT(NULL)); NRF_LOG_DEFAULT_BACKENDS_INIT(); uint32_t ui32_reset_reason = NRF_POWER->RESETREAS; NRF_LOG_INFO("Reset Reason = 0x%x\n", ui32_reset_reason); NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; // a field is cleared by writing 1. .. // softdevice 활성화 전에 상기 실행해야함. while() { ... } } 상기 코드에서 NRF_POWER->RESETREAS = NRF_POWER->RESETREAS; 부분이 통상.. 2023. 7. 26.
nRF52 . 플래시 메모리 쓰기, 지우기 SoftDevice 활용시 플래시 쓰기 , 지우기 펌웨어에서 SoftDevice 활용하는 경우에는 플래시 메모리 쓰기, 지우기 위하여 직접 NVMC 이용하지 못하며, SoftdDevice 에서 제공하는 아래 함수 이용하여 쓰기 지우기 해야함. 또한 이 함수들은 비동기함수(= non-blocking 함수) 여서 함수 호출시 실행 성공 여부 무관하게 즉시 리턴되며, 플래시 쓰기 , 지우기 성공여부는 이벤트로 제공된다. 지우기, 쓰기 함수 호출이후 발생하는 이벤트 NRF_EVT_FLASH_OPERATION_SUCCESS - The command was successfully completed. NRF_EVT_FLASH_OPERATION_ERROR - The command could not be started... 2023. 7. 24.
nRF52 . application timer . RTC1 . LFCLK 개요 - nRF5 SDK 로 제공되는 application timer 사용 위한 주요 정보. application timer 활용시 필수 이해사항. - RTC1. LFCLK - application timer 는 RTC1 기반으로 작동하며, RTC1 이 작동하려면 LFCLK 를 enable 시켜야 한다. - 타겟칩에 softdevice 가 탑재되고 softdevice 가 enable 된 상태라면 이 과정에서 LFCLK 가 활성화 되므로 별도의 활성화 과정 필요 없지만 softdevice 를 enable 하지 않는 경우에는 필수 LFCLK 활성화 하는 코드 작성하고 호출해야함. static void lfclk_request(void) { ret_code_t err_code = nrf_drv_clock_in.. 2023. 2. 6.
nRF52 . BLE . RSSI BLE connection 상태의 RSSI ble_evt_handler 내부에서 BLE_GAP_EVT_RSSI_CHANGED 추가해둔 상태에서, 함수 sd_ble_gap_rssi_start(,,) 호출하면 rssi 값 확보가능 static void ble_evt_handler(ble_evt_t const * p_ble_evt, void * p_context) { switch (p_ble_evt->header.evt_id) { .. 중략. case BLE_GAP_EVT_RSSI_CHANGED: //int8_t Received Signal Strength Indication in dBm. NRF_LOG_INFO("Changed RSSI : %d", p_ble_evt->evt.gap_evt.params.rss.. 2023. 1. 30.
nRF52 . BLE . Tx Power 설정. BLE Advertising 상태의 Tx Power 설정. - 함수 sd_ble_gap_tx_power_set ( , , ) 호출하면서 마지막 인자로 설정하려는 출력 파워 기록한다. - advertising init 과정에서 함수 ble_advertising_init 호출 이후 advertising 핸들 정상 확보된 이후에만 sd_ble_gap_tx_power_set( ) 호출가능하다. - 아래 호출 예는 ble_advertising_init 호출 직후 즉시 tx power 설정 하는 예제. static void advertising_init() { err_code = ble_advertising_init(&m_advertising, &init); APP_ERROR_CHECK(err_code); //BL.. 2023. 1. 29.
nRF52 . BLE . 연속 advertising . fatal error 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 발생.. 2023. 1. 29.
nRF52 . SES . 빌드 오류 해결 . unknown type name '__printf_tag_ptr' 상황. nRF5 SDK 버전 : nRF5_SDK_17.1.0_ddde560 SES 버전 : 7.10 프로젝트 : SDK 에서 제공된 예제 중 - nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140 - nRF5_SDK_17.1.0_ddde560\examples\ble_central\ble_app_uart_c\pca10056\s140 빌드 오류 증상. - 아래 빌드 오류 처럼 unknown type name '__printf_tag_ptr' - putchar 관련 오류 또 등장하는 구나. 이전(2018년)에도 문제 있었음. nRF5 SDK 버그. __putchar(int ch, FILE * p_file) 버그내용. nRF5 S.. 2023. 1. 21.
nRF52 . SES . 빌드 오류 해결 . __vfprintf.h: No such file or directory 상황. nRF5 SDK 버전 : nRF5_SDK_17.1.0_ddde560 SES 버전 : 7.10 빌드 오류 증상 - nRF5 SDK 예제들 빌드 하다보면 헤더파일 __vfprintf.h 없다는 에러 - 해당 소스코드는 SEGGER_RTT_Syscalls_SES.c 임. 해결 방법. 왼쪽 Project Items 창에서 파일 SEGGER_RTT_Syscalls_SES.c 마우스 우클릭하여 보이는 메뉴 중에서 제거(remove )하든지 혹은 Exclude from Build 클릭한다. - 이 파일은 SES 관련 파일인데 프로젝트 구성요소에서 필수 아님 , 없어도 됨. 연관 nRF52 . SES . 빌드 오류 해결 .text .rodata is larger than specified size. 상황. nR.. 2023. 1. 20.
nRF52 . Programmer . 경고 Part of the HEX regions are out of the device memory size 경고 내용 - Programmer v3.0.4 에서 부트로더 펌웨어(아래 그림 푸른박스) 파일 읽어들이면 붉은 박스 처럼 경고표시 보인다. 칩의 메모리 사이즈를 벗어났다는 경고 표시이다. 조치 필요없음 - 이 경고는 뭔가 조치를 해야 하는건 아니고, 무시하고 기록 진행하면된다. 칩에 기록된 부트로더 정상 작동한다. - bootloader 가 기록되는 플래시 메모리 영역이 일반 application 기록 영역과 달라서 프로그래머에서 이런 경고 표시 하는것 같은데,, 프로그래머 소프트웨어의 완성도 부족이다. 포럼에서의 관련 내용을 봐도 경고 무시하고 그냥 기록하면 된다고 함. Part of the HEX regions are out of the device memory size...from Programme.. 2023. 1. 20.
nRF52 . SES . 빌드 오류 해결 .text .rodata is larger than specified size. 상황. nRF5 SDK 버전 : nRF5_SDK_17.1.0_ddde560 SES 버전 : 7.10 빌드 오류 내용. - nRF52 SDK 예제 프로젝트 빌드 하다보면 아래와 같은 오류 나는 경우 종종 있다. 오류 원인 프로젝트 구성 파일중 flash_placement.xml 에서 .text 와 .rodata 의 사이즈 제한 되어있기때문. 해결 방법 파일 flash_placement.xml 파일을 편집기로 열어서 .text 와 .rodata 의 사이즈 제한 한것 삭제 ( size="0x04" 부분 삭제 )한 이후 SES 재실행하여 리빌드하면 정상 빌드됨. 연관 STM32. nRF52. ESP32. EFM8. EFM32. PSoC 활용 정리. STM32. nRF52. ESP32. EFM8. EFM32. P.. 2023. 1. 19.
nRF52. MBR, bootloader , SoftDevice , Application , 플래시 메모리 배치 메모리에서 주소가 고정되어있는 영역은 MBR 의 시작, 끝주소및 SoftDevice 의 시작주소( MBR 의 끝 주소와 동일함)뿐이다. 그 외에 SodftDevice 끝주소, Application 시작, 끝 주소, Bootloader 시작주소는 가변 가능하며, 즉 개발자가 해당 주소를 사용자 정의해야 한다. - MBR ( Master Boot Record )은 필수 기록되어있어야 함. - SoftDevice 활용하는 경우에는 SoftDevice 내에 MBR 이 기본 포함되어있기 때문에 SoftDevice 기록시 MBR 도 같이 기록됨. - Bootloader 는 필수는 아니며 필요시 구현하여 기록. 위와 같은 메모리 구조에서 사용자 데이터를 플래시에 기록하려면 어디가 좋은가? Application 의 끝.. 2021. 3. 22.
nRF52. BLE Central Multilink. Nordic UART Service(NUS) Client 구현. 개요멀티링크 구현 시작점 . nRF5 SDK( https://igotit.tistory.com/1663 ) 설치하면 예제코드 중에 \examples\ble_central\ble_app_multilink_central 에 멀티링크 기본 골격 소스 코드가 제공되고 있으며, 예제에서의 서비스 는 LED 제어하는 예로 제공되고 있다. 위 예제 코드는 멀리링크 코드 작성위한 골격이며 BLE 서비스는 사용자가 필요에 따라 다른것으로 구현가능하다. 아래 영상의 동작 시험은 NUS(Nordic UART Service) 을 멀티 링크로 구현. mult ilink NUS 구현의 직접적인 코드예제는 제공되지 않으나, 제조사의 개발자 포럼에서 관련 정보 많이 보인다. 이들 정보 참조하여 구현작업 진행. https://devz.. 2019. 11. 10.
nRF52. SPI nRF52 SPI Features SPI 수량 : nRF52840 의 경우 SPI master 로 사용시 4개, spi slave 로 사용시 3개. nRF52840 SPI 최대 통신 속도 및 SPI 클럭 SPIM3 최대통신속도 32Mbps . 주의 : 32Mbps 는 SPIM3 에서만 지원되는 사양. 최대 통신 속도는 SPI 클럭으로 결정되는데 , 데이트 시트 전기사양 부분을 보면 SPIM3을 비롯한 모든 nRF52840 의 SPI 클럭 최대 주파수는 8MHz 로 명시되어있는데, SPI 클럭 최대 8MHz 라면 통신 속도 32Mbps 는 불가능한데 32Mbps 가능하다고 표현하고 있음. from : http://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.0.pdf 의.. 2019. 10. 25.
nRF52. 본인 제작 SDK 의 설정 헤더 파일 및 SES CMSIS Config Wizard 설정 개요 본글은 자신이 직접 만드는 공통활용 SDK (소스 형태의 라이브러리) 에 공통 적용되는 설정 사항들을 정의하는 헤더파일과 이를 SES 에서 CMSIS Configuration Wizard 보기 위한 설정 정리된다. 사전 준비 1.본인 제작 범용 소스 형식 구성 - 본 글은 하기 작업 이후에 이뤄지는 설정들임. nRF52. 본인 만든 범용 소스들 재활용 가능 구성 개요. 본 내용은 아래 링크 의 4번 항목에서 설명된 것처럼 코드 작업중 범용적인 것들을 다른 프로젝트에서도 재활용 가능한 형식 구축방법 정리. https://igotit.tistory.com/2339 nRF52. 예제프로젝트 기반 내.. igotit.tistory.com 사전준비 2. nRF5 SDK 의 sdk_config.h 를 CMSI.. 2019. 10. 21.
nRF52. GPIO (General Purpose Input Output) nRF52840 GPIO Features • Up to 32 GPIO pins per GPIO port • Configurable output drive strength • Internal pull-up and pull-down resistors • Wake-up from high or low level triggers on all pins • Trigger interrupt on state changes on any pin • All pins can be used by the PPI task/event system • One or more GPIO outputs can be controlled through PPI and GPIOTE channels • All pins can be individuall.. 2019. 10. 19.


 

비트코인




암호화폐       외환/나스닥/골드       암호화폐/외환/나스닥/골드 암호화폐/외환/나스닥/골드   암호화폐/외환/나스닥/골드
     
현물 |선물 인버스 |선물 USDT       전략매니저(카피트레이딩)     롤오버 이자 없는 스왑프리계좌
( 스왑프리 암호화폐도 거래 가능 )    
MT4, MT5 , cTrader 모두 지원     FTMO 계좌 매매운용. MT4,MT5