본문 바로가기

Study/nRF51xxx(BLE)30

nRF51 DK 예제 12 - ram retention RAM Retention 예제입니다. 이 예제는 ram retention module을 사용하거나 인증하는 방법에 대해 알아보는 예제라고 합니다. 먼저 main을 보시겠습니다. main.c 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051int main(void){ uint32_t * volatile p_ram_test = (uint32_t *)RAM_MEMORY_TEST_ADDRESS; uint32_t loop_count = 0; LEDS_CONFIGURE(LEDS_MASK); LEDS_OFF(LEDS_MASK); nrf_gpio_cfg_sense_input(PIN_GPIO_WAKEUP.. 2015. 3. 12.
nRF51 SDK 업데이트 SDK가 7.x.x에서 8.0.0으로 업데이트 되었네요. SDK 정보는 이곳에서~ softdevice가 기존 88kb에서 96kb로 업데이트 되었습니다. softdevice 용량이 증가함에따라 어플 영역도 0x16000 -> 0x18000으로 달라졌습니다. 또한 예제가 늘어났네요. 기존에 없던 LPCOMP, QDEC등 driver 예제가 늘어났습니다. 그리고 IAR용으로도 코드가 제공됩니다.(전부는 아니고 일부분) 다만 IAR에서는 0x18000번지에 어플을 넣는걸 아직 찾지못하였네요.. IAR에서는 softdevice가 필요한 예제코드는 자동적으로 18000번지부터 세팅이 되어있습니다. softdevice가 필요없는 예제는 당연 0번지부터 세팅되어있습니다. softdevice 지우시고 하시면 될듯합니다.. 2015. 3. 9.
nRF51 DK 예제 11 - radiotest (2) 이어서 radio test 2번째입니다. 이부분은 앞에서 설정해준 test 값에 따라 radio를 control하는 부분입니다. source 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455switch (test) { case RADIO_TEST_TXCC: if (sweep) { radio_sweep_end(); sweep = false; } radio_tx_carrier(txpower_, mode_, channel_start_); cur_test = test; test = RADIO_TEST_NOP; break; case RADIO_TEST_TXMC: if (sweep) .. 2015. 3. 6.
nRF51 DK 예제 11 - radiotest (1) 이번 예제는 Radio Test 예제입니다. Radio와 관련된 각종 세팅들을 UART를 통해서 간단히 설정하는 예제입니다. main함수가 긴 관계로 잘라서 설명할께요. main.c 1234567891011121314151617181920212223242526272829int main(void){ uint32_t err_code; radio_tests_t test = RADIO_TEST_NOP; radio_tests_t cur_test = RADIO_TEST_NOP; init(); const app_uart_comm_params_t comm_params = { RX_PIN_NUMBER, TX_PIN_NUMBER, RTS_PIN_NUMBER, CTS_PIN_NUMBER, APP_UART_FLOW_CONTR.. 2015. 3. 5.
nRF51 DK 예제 10 - PWM 이번 예제는 PWM입니다. Timer를 이용하여 LED를 toggle하는데, 버튼을 누를때마다 토글되는 간격이 변하는 PWM예제입니다. main.c 1234567891011121314151617181920212223int main(void){ gpiote_init(); bsp_configuration(); ppi_init(); timer2_init(); NRF_POWER->TASKS_CONSTLAT = 1; // Enable interrupt on Timer 2. NVIC_EnableIRQ(TIMER2_IRQn); __enable_irq(); *(uint32_t *)0x4000AC0C = 1; // Start the timer. NRF_TIMER2->TASKS_START = 1; while (true) .. 2015. 3. 4.
nRF51 DK 예제 9 - PPI PPI는 GPIOTE 예제때 한번 나왔던 Programmable Peripheral Interconnect 를 말합니다. GPIOTE예제때는 타이머를 EEP로 LED토글(GPIOTE TASK)을 TEP로 해서 테스트를 했었습니다. 이번 예제에서는 타이머 3가지를 이용한 예제입니다. 타이머0은 카운터로 설정하고, 타이머1과 타이머2를 사용하여, 타이머1일때는 타이머0이 멈추고, 타이머 2일때는 타이머0이 동작해서 매 200ms마다 타이머0을 카운터하는 예제입니다. 먼저 main함수부터 보겠습니다. main.c 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647int main(void){ timer0_ini.. 2015. 3. 4.

인기글