본문 바로가기

임베디드.일렉트로닉스/nRF52   ( 84 )


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.
nRF5 SDK . NRF_LOG_INFO 고속 출력시 표현 누락 해결책 nRF5 SDK . NRF_LOG_INFO - nRF5 SDK 에서 제공되는 함수 NRF_LOG_INFO() 디버깅 중에 코드 정상작동 확인에 매우 유용하나, 고속 출력시 표현 누락하는 오류 있음. 위 상태의 코드를 디버깅 모드에 콘솔에 출력된것 보면 아래. 총 size 31 이고 for 루프에서 30 이 될때까지 출력하라고 했는데 출력된것 보면 12까지 만 표현되는 오류있 다. 이 오류는 나의 코드가 비정상 작동하는 것이 아닌 NRF_LOG_INFO 의 고속출력 지원되지 않는 부실한 특성 때문임. 해결책 NRF_LOG_INFO 출력 시 시간지연 최소 1msec 라도 해줘야 정상 표현된다. 위 코드처럼 nrf_delay_ms(1); 추가된것 실행 시켜보면 정상적으로 30까지 표현된다. 연관 NRF_LOG.. 2023. 8. 24.
nRF5 SDK . sdk_config.h 엉망 체계. 해결 방법 nRF5 SDK 의 sdk_config.h 역할 및 엉망 품질 .. 본 설명의 nRF5 SDK 버전 : 17.1.0 (정확한 버전 : 17.1.0_ddde560 2023 년 8월 가장 최신 버전의 SDK ) 예 . SPIS 를 예로 설명하나 다른 페리페랄들 모두 동일하게 적용됨. SDK 로 제공되는 SPIS 관련 파일 중에서 nrfx_spis.c 파일을 보면 NRFX_SPIS_ENABLED 가 1이면 이후 코드 활성화 시키고 0이면 비활성화 하는 식으로 sdk 소스 파일들 관리 체계 구현되어있고 그 설정을 sdk_config.h 에서 기록하게 되어있다. sdk_config.h 는 nRF5 SDK 사용자가 가장 많이 사용하게 되는 중요한 파일이며 그 관리체계에 자체 모순이 있으면 안되는 지점이다. 위와 같.. 2023. 8. 5.
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.
SES . 해결 . #error "libc++ does not support using GCC with C++03. Please enable C++11" SES 에서 C++ 코드 추가하여 빌드시 아래 파란박스 처럼 error 나오는 경우 프로젝트 옵션에서 아래 붉은색 박스 처럼 설정하여 해결. 즉, C++ Language Standard 기본 설정은 gnu+98 로 되어있다. 이것을 C++11 로 변경 한다. 기타 C++20 까지 지원되나봄. 이번 설정 하면서 처음 알았음. 이제 임베디드 코딩도 C++ 이 대세가 될듯함. 첫 등록 : 2023.07.27 최종 수정 : 단축 주소 : https://igotit.tistory.com/4749 2023. 7. 27.
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 . reset Reset Reason - nRF52 는 총12개의 리셋 요인 있고, 레지스터 RESETREAS 에서 어떤 요인에 의하여 리셋되었는지 확인 가능. - 레지스터에는 9개의 리셋요인만 있고, 9개 중 어느 것도 아닌 경우에는 파워온 / 파워실패 /브라운아웃 리셋인 경우이다. from : https://infocenter.nordicsemi.com/pdf/nRF52840_PS_v1.7.pdf 페이지 78 코드에서 리셋 사유 확인 방법 별도정리. nRF52 . 리셋 사유 코드에서 확인 방법 nRF52 리셋 사유 확인 코드 main() { APP_ERROR_CHECK(NRF_LOG_INIT(NULL)); NRF_LOG_DEFAULT_BACKENDS_INIT(); uint32_t ui32_reset_reason =.. 2023. 7. 26.
SES . 프로젝트 복사하여 다른 이름 새 프로젝트 만들기. Segger Emdedded Studio (SES) 에서 프로젝트 복사 방법 SES 에서 이미 만들어져 있는 프로젝트 복사하여 다른 이름 새프로젝트 만들기 상황예 프로젝트 폴더구성 템플릿 3 ( 타겟 칩 nRF52840 으로 하고, nRF5_SDK 기반 프로젝트 폴더 구성) 형식으로 구성되어있는 상태. 아래 그림에서 WORK_NRF5 폴더내부에 nRF5_SDK 폴더 및 내가 만든 SDK 류들인 CySDK_nRF5 도 있고, 동일 레벨에 프로젝트 1개 단위로 폴더들이 생성되어 있는 상태 위 프로젝트 중에 붉은 박스 (폴더명 : D0F4_BLENUSC)에 있는 1개의 프로젝트를 아래 그림의 붉은 박스 (폴더명 : WORK_NRF5_CyUF ) 내부에 프로젝트명 : CyU3F1_BleNusCSIngle 라는 .. 2023. 7. 24.
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.
nRF52840 . 메모리 레이아웃 . RAM , Flash , NVMC nRF52840 메모리 - Flash 1024kByte - RAM 256kByte 메모리 레이아웃 Flash - Non-volatile memory Flash memory is divided into 256 pages of 4 kB each that can be accessed by the CPU via the ICODE and DCODE buses . Writing to flash memory is managed by the non-volatile memory controller (NVMC), see NVMC — Non-volatile memory controller. The CPU can read from flash memory an unlimited number of times, but is res.. 2023. 2. 9.
HOLYIOT-21069-nRF5340 . BLE 5.3 모듈. 품번 : HOLYIOT-21069-nRF5340 - 장착칩 : nRF5340 - 사이즈 : 19 x 13.5 x 2.4 mm - 칩안테나 장착. 판매처 가격 : 1만원대. 8.5US $ |HOLYIOT nRF5340 BLE 5.0 Bluetooth ultra low power consumption module FCC CE certificated| | - AliExpress Smarter Shopping, Better Living! Aliexpress.com www.aliexpress.com 핀맵 연관 장착칩 : nRF5340 nRF5340 . 블루투스 5.3 . LE Audio nRF5340 - Bluetooth 5.3 - LE Audio - 블루투스 방향 탐지. - Dual CPU : 128MHz / .. 2023. 2. 7.
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.
nRF5340 . 블루투스 5.3 . LE Audio nRF5340 - Bluetooth 5.3 - LE Audio - 블루투스 방향 탐지. - Dual CPU : 128MHz / 64MHz ARM Cortex-M33 - Flash 1MByte, RAM 512kbyte. - 작동온도 : -40도 ~ 105도. - 작동전압 : 1.7 ~ 5.5V - TX power : -20 ~ 3 dBm 1dB 스텝. - RX sensitivity : -98dBm @ 1Mbps , -95dBm @ 2Mbps - Analog : ADC 12 bit 200 ksps , comparator. - 그외 nRF52840 의 모든 feature 지원 - product brief (pdf) - 제조사 제품 소개 페이지. 패키지 aQFN94(7x7mm) , WLCSP(4.4 x 4mm).. 2023. 1. 31.
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 . 빌드 오류 해결 . __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.


 

비트코인




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