'Firmware'에 해당되는 글 4건

  1. 2020.02.04 nrf52840 uart
  2. 2020.02.04 nrf52840 gpio
  3. 2017.12.14 nRF51 Timer(1)
  4. 2017.12.13 Keil nRF51 간단한 쌍방향 통신.
Firmware2020. 2. 4. 11:29

Universal asynchronous receiver / transmitter

 

#define RX_PIN_NUMBER           36

#define TX_PIN_NUMBER           34

void uart_init(void)

{

    uint32_t err_code;

    const app_uart_comm_params_t comm_params =

    {

      RX_PIN_NUMBER,

      TX_PIN_NUMBER,

      RTS_PIN_NUMBER,

      CTS_PIN_NUMBER,

      UART_HWFC,

      false,

      NRF_UART_BAUDRATE_115200

    };

 

    APP_UART_FIFO_INIT(&comm_params,

                         UART_RX_BUF_SIZE,

                         UART_TX_BUF_SIZE,

                         uart_error_handle,

                         APP_IRQ_PRIORITY_LOWEST,

                         err_code);

 

    APP_ERROR_CHECK(err_code);

}

 

위 코드는 유아트 초기화.

 

sdk설정(sdk_config.h)은 필수.

추가적으로 printf 까지 설정하여 사용하면 편리하다.

'Firmware' 카테고리의 다른 글

nrf52840 gpio  (0) 2020.02.04
nRF51 Timer(1)  (0) 2017.12.14
Keil nRF51 간단한 쌍방향 통신.  (0) 2017.12.13
Posted by
Firmware2020. 2. 4. 11:26

General purpose input/output

 

 

#define LED_1 13

nrf_gpio_cfg_output(LED_1); 
nrf_gpio_pin_write(LED_1, 1);

 

기본적인 13번핀을 아웃풋 설정하는 함수와 디지털 설정하는 함수.

'Firmware' 카테고리의 다른 글

nrf52840 uart  (0) 2020.02.04
nRF51 Timer(1)  (0) 2017.12.14
Keil nRF51 간단한 쌍방향 통신.  (0) 2017.12.13
Posted by
Firmware2017. 12. 14. 15:51

nRF51 에서 타이머는 총 5가지가 존재한다.


일반적인 Timer/counters 3개

Real Time Counter 2개


자세히는 


TIMER0 는 8/16/24/32

TIMER1 는 8/16

TIMER2 는 8/16


RTC0 하나와 RTC1 로 존재한다.


사실 잘쓰면 적은 갯수는 아니지만 M0 칩 치고는 적은게 사실이다.


거기다가 이미 TIMER0 의 경우 BLE쪽에서 가져다 쓰고 있는데다가 PWM 또한 TIMER 자원을 공유하기 때문에

몇군데서 쓰기 시작하면 터무니없이 부족해질 수도 있다.


오늘 SDK에는 세번째 이상도 설정이 가능하길래 설정하다가 오류가 떳다.


왜그런가 해서 데이타시트를 살펴봤더니 타이머3가 존재하지 않았더란다.


노르딕에서 제공하는 SDK 에서 타이머 설정은 별로 어렵지 않다.


타이머 INIT에 관련된 구조체(변수) 를 찾아서 내가 원하는 값(주파수라던지 핸들러라던지)을 하나하나 세팅해준 뒤


해당 타이머를 INIT 해주고 ENABLE 해주면 끝이다.


추가적인 값을 세팅해주고 싶다면 해당 extended 함수를 살펴보면 된다.

'Firmware' 카테고리의 다른 글

nrf52840 uart  (0) 2020.02.04
nrf52840 gpio  (0) 2020.02.04
Keil nRF51 간단한 쌍방향 통신.  (0) 2017.12.13
Posted by
Firmware2017. 12. 13. 14:28

현재 내가 필요한 기능은 크게 보면 BLE, PWM, Timer 정도이다.


간단하게 BLE를 살펴보자.


보드는 PCA10028을 준비하고 SDK는 nRF_SDK_12.3.0 을 준비한다.


SDK의 예제중에 ble prepheral - ble app uart 라는 폴더에 보면 pca10028\s130\arn5_nopacks 에 프로젝트 파일이 있다.


열어주면 간단한 테스트를 진행할 수 있는 예제 코드가 준비되어 있다.


이 예제를 보드에 다운로드 시키면 준비는 완료되었다.



이제 0x31이란 데이터를 받으면 0x32를 뱉는 예제로 변환해보자.


일단 예제가 도착했다는 신호가 필요하다.


예제를 잘 살펴보면 ble 데이타가 도착했을때 작동하는 handler 가 있다. 본 예제에서는 nus_data_handler 으로 되어있다.


변수 하나(트리거)를 만들어서 해당 핸들러가 작동하면 TRUE로 만들어준다.


동시에 예제 구조를 잘 살펴보면 해당 핸들러의 변수중 *p_data 가 ble로 받는 데이타 임을 알 수 있다.


이걸 글로벌 변수 하나를 만들어 링크시켜주자.


이제 다 끝났다.



메인으로 돌아가 해당 트리거가 TRUE가 될 때 FALSE로 바꿔줌과 동시에 해당 BLE로 0x32를 Send 시키면 된다.


데이터를 보내는 방법은 아래 함수를 이용하면 된다.

ble_nus_string_send(&m_nus, 0x32, 1);

'Firmware' 카테고리의 다른 글

nrf52840 uart  (0) 2020.02.04
nrf52840 gpio  (0) 2020.02.04
nRF51 Timer(1)  (0) 2017.12.14
Posted by