본문 바로가기

Nordic/nRF52

[nRF52 xBee EVM] BLE 테스트 - BLE UART 테스트 (IAR)

nRF52의 가장 큰 특징인 BLE 동작 테스를 해 보자
nRF5 SDK에서 기본으로 제공하는 BLE UART 예제를 이용하여 테스트 할 수 있다.

examples\ble_peripheral\ble_app_uart
 

BLE를 사용하려면 softdevice 라이브러리가 필요 한데 softdevice를 다운로그 하려면 

가 필요하다.
 
우선 nRFgo-Studio를 이용해서 hex 파일을 프로그램 해주어야 한다.

/components/softdevice/s132/hex

 

디버깅 메시지 출력을 위해 설정 파일 수정이 필요 하다.
examples\ble_peripheral\ble_app_uart\pca10040\s132\config\sdk_config.h
 
#ifndef CLOCK_CONFIG_LF_SRC
#define CLOCK_CONFIG_LF_SRC 0
#endif
 

 

BLE 소스코드에서 BLE UART 앱에서 전송되는 데이터를 처리 하는 함수 nus_data_handler() 를 수정해서 보드의 LED를 제어 할 수 있도록 수정 했다.

#define LED_PIN1                        17
#define LED_PIN2                        19


static void nus_data_handler(ble_nus_t * p_nus, uint8_t * p_data, uint16_t length)
{
    for (uint32_t i = 0; i < length; i++)
    {
        while (app_uart_put(p_data[i]) != NRF_SUCCESS);
        
        if(p_data[0] == 'a')nrf_gpio_pin_toggle(LED_PIN1);
        else if(p_data[0] == 'b')nrf_gpio_pin_toggle(LED_PIN2);
            
    }
    while (app_uart_put('\r') != NRF_SUCCESS);
    while (app_uart_put('\n') != NRF_SUCCESS);
}

 

 

 

int main(void)
{
    uint32_t err_code;
    bool erase_bonds;

    // Initialize.
    APP_TIMER_INIT(APP_TIMER_PRESCALER, APP_TIMER_OP_QUEUE_SIZE, false);
    uart_init();

    buttons_leds_init(&erase_bonds);
    
    nrf_gpio_cfg_output(LED_PIN1);
    nrf_gpio_cfg_output(LED_PIN2);
    
    ble_stack_init();
    gap_params_init();
    services_init();
    advertising_init();
    conn_params_init();

    
   
    err_code = ble_advertising_start(BLE_ADV_MODE_FAST);
    APP_ERROR_CHECK(err_code);
 printf("\r\nUART Start!\r\n");
    // Enter main loop.
    for (;;)
    {
        power_manage();
    }
}

 


BLE UART를 구동하고 블루투스 장치를 검색하면 Nrodic_UART로 검색이 된다.

 

 

 

 

노르딕사의 BLE 툴(nRF Toolbox for Bluetooth LE)을 이용하면 UART 구동을 쉽게 테스트 가능하다.

 

 

 

프로그램 실행후 UART 테스트 모드로 테스트 해 볼 수 있다.

 

 

BLE UART로 연결이 되면 커멘드를 등록해서 UART값을 전송 할 수 있다.

 


UART앱에서 전송하는 데이터를 출력하고 값에 따라 LED가 On/Off 되는 것를 확인 할 수 있다.

 

UART Start!
a
b
a
a

 

반응형