본문으로 바로가기

[nRF52] SysTick 와 RTC 타이머

category nRF52 2024. 12. 24. 15:52

SysTick란?

SysTick은 Cortex-M 계열 마이크로컨트롤러(예: NRF52832)에 내장된 타이머로, 일정한 시간 간격으로 작업을 수행하거나 이벤트를 처리하는 데 사용됩니다. 간단히 말해, 시스템에서 시간 간격을 정확하게 측정하고 작업을 반복적으로 수행하게 해주는 타이머입니다.


SysTick의 주요 특징

  1. 정확한 타이밍:
    • CPU 클럭(예: NRF52832의 시스템 클럭)을 기준으로 동작하여 매우 정확한 타이밍을 제공합니다.
  2. 주기적 인터럽트:
    • 특정 시간 간격마다 인터럽트를 발생시켜 작업을 처리하거나 이벤트를 실행할 수 있습니다.
  3. 간단한 설정:
    • 원하는 시간 간격(밀리초, 마이크로초 등)을 설정하여 반복적인 작업을 자동으로 처리할 수 있습니다.
  4. CPU와 연계:
    • CPU가 활성 상태일 때 동작하며, CPU 클럭 속도에 의존합니다.
    • 저전력 상태에서는 RTC보다 전력을 더 소모할 수 있습니다.

SysTick의 구성 요소

  1. CSR(Control and Status Register):
    • SysTick의 활성화/비활성화, 클럭 소스 설정, 인터럽트 활성화를 관리합니다.
  2. RVR(Reload Value Register):
    • 타이머가 얼마나 빠르게 카운트다운할지를 설정합니다.
  3. CVR(Current Value Register):
    • 현재 남은 시간을 나타냅니다.

SysTick의 동작 원리

  1. RVR에 값 설정:
    • 주기 시간에 해당하는 값을 RVR에 설정합니다.
  2. 카운트다운:
    • SysTick은 RVR에서 설정한 값을 기준으로 카운트다운을 시작합니다.
  3. 0 도달 시 이벤트 발생:
    • 카운트가 0에 도달하면 인터럽트가 발생하고, 타이머는 자동으로 초기값으로 재설정되어 반복적으로 동작합니다.
      • SysTick에는 3개의 주요 레지스터가 있습니다:

SysTick을 효율적으로 사용하는 팁

        1. 짧은 시간 간격 작업:
          • LED 깜박임(100ms 단위), 데이터를 주기적으로 확인하는 작업에 적합합니다.
        2. CPU가 항상 켜져 있을 때:
          • BLE 이벤트와 같이 CPU가 절전 상태로 들어가지 않고 항상 활성 상태일 때 적합합니다.
        3. 저전력이 중요하지 않을 때:
          • RTC보다 전력을 많이 소모하기 때문에 배터리 기반 장치에서는 제한적으로 사용하는 것이 좋습니다.


RTC 타이머란?

  • RTC 타이머는 매우 정확한 시계처럼 동작합니다.
  • 시간을 **작은 틱(tick)**으로 나눠서 일정 시간마다 일을 하도록 설정할 수 있습니다.
    • 예: 1초마다 LED를 켜거나, 10ms마다 데이터를 확인하기.
  • RTC는 전력이 적게 들기 때문에 배터리로 작동하는 장치(스마트워치, IoT 센서)에서 주로 사용됩니다.

RTC 타이머 주요 특징

  1. 시간 간격 작업:
    • 1초마다 온도 센서를 읽고 데이터를 저장.
    • 매 100ms마다 BLE 데이터를 송수신.
  2. 배터리 절약:
    • RTC는 전력을 거의 소모하지 않기 때문에 배터리를 아끼는 장치에서 사용됩니다.
    • 장치가 쉬는 동안에도 RTC는 작동하며, "정해진 시간에 깨워주는 역할"을 합니다.
  3. 타이머 기반 이벤트:
    • 정해진 주기로 LED 깜박임.
    • 알람이나 특정 시간에 작업 실행.

RTC 타이머 동작 원리

  • 시계처럼 움직이는 클럭을 사용해 시간이 흐르는 것을 계산합니다.
  • NRF52832의 RTC는 32.768kHz라는 초당 32,768번 진동하는 신호를 사용합니다.
  • 사용자가 원하는 시간 간격을 설정하면, RTC가 그 시간마다 이벤트를 발생시킵니다.

RTC 타이머의 장점

  1. 저전력:
    • RTC는 저속 클럭을 사용하기 때문에 배터리 소모를 최소화합니다.
    • BLE와 함께 사용하면 매우 효율적입니다.
  2. 긴 주기 작업:
    • 몇 초, 몇 분, 몇 시간 단위의 작업에 적합합니다.
  3. 독립 실행:
    • CPU가 잠자기 상태여도 RTC는 계속 작동합니다.
    • 작업이 필요할 때 CPU를 깨워서 실행할 수 있습니다.

RTC 타이머를 효율적으로 사용하는 팁

  • 배터리 기반 IoT 장치에서 작업 주기를 설정하고 싶을 때.
  • BLE 장치에서 주기적으로 데이터를 송수신하거나, 절전 모드를 유지하면서 이벤트를 처리하고 싶을 때.
  • 긴 시간 간격(초 단위 이상의 작업)이 필요한 애플리케이션에서.


SysTick과 RTC의 비교

SysTickRTC

CPU 클럭을 사용 저속 클럭(LFCLK) 사용
주로 짧은 시간 간격 (ms, µs) 긴 시간 간격 (초, 분, 시간)
전력 소모가 더 높음 전력 소모가 매우 적음
CPU가 활성 상태여야만 동작 CPU가 절전 모드에서도 동작 가능
짧은 주기 작업에 적합 배터리 기반, 긴 주기 작업에 적합

1. CPU 클럭과 저속 클럭(LFCLK)란?

  • CPU 클럭:
    • CPU(Core)에서 모든 작업을 처리할 때 사용하는 고속 클럭.
    • NRF52832의 경우 주로 64MHz 클럭을 사용.
    • BLE, UART 같은 작업에서 빠르게 처리해야 하는 작업에 사용.
  • 저속 클럭(LFCLK):
    • CPU가 꺼져 있을 때에도 작동할 수 있는 저전력 클럭.
    • NRF52832의 경우 32.768kHz의 낮은 주파수를 사용.
    • 주로 RTC(Real-Time Counter)와 같이 장시간 정확한 시간을 측정해야 하는 작업에서 사용.

2. 주요 차이점

특징CPU 클럭 (HFCLK)저속 클럭 (LFCLK)

속도 고속 (예: 64MHz) 저속 (예: 32.768kHz)
정확도 매우 정확 매우 정확
전력 소모 전력 소모가 큼 전력 소모가 적음
사용 환경 빠른 작업 처리 (BLE, 데이터 송수신 등) 긴 주기의 작업 (RTC, Deep Sleep 등)
CPU 의존성 CPU가 활성 상태여야 함 CPU가 꺼진 상태에서도 동작 가능
대표 사용 사례 - BLE 이벤트 처리 - RTC 타이머
  - LED 깜박임 (빠르게) - 절전 모드에서 일정 시간마다 작업

3. 차이점에 따른 동작 방식

(1) CPU 클럭 (HFCLK)

  • 작동 원리:
    • CPU에서 동작하며, 고속 연산과 데이터 처리에 사용.
    • BLE 데이터 처리, GPIO 빠른 제어 등 빠른 반응이 필요한 작업에 적합.
  • 한계:
    • CPU가 활성 상태일 때만 작동하므로, CPU가 잠자기(Sleep) 모드로 들어가면 클럭도 멈춤.
    • 배터리 소모가 크기 때문에, 지속적으로 실행하는 작업에는 적합하지 않음.
  • 장점:
    • 매우 빠른 속도로 데이터를 처리할 수 있어 BLE 같은 고속 통신 작업에 유리.

(2) 저속 클럭 (LFCLK)

    • 작동 원리:
      • NRF52832에서 사용하는 LFCLK는 32.768kHz로 작동.
      • 주로 RTC, Watchdog Timer(WDT)와 같은 주기적인 타이밍 작업에 사용.
    • 장점:
      • CPU가 Sleep 모드에 있거나 시스템이 낮은 전력 상태로 들어가도 작동.
      • 배터리 소모가 적어 IoT 디바이스, 웨어러블과 같은 장기 사용 장치에 적합.
    • 한계:
      • 속도가 느리기 때문에 고속 연산 작업에는 적합하지 않음.
      • BLE 이벤트와 같은 짧고 빠른 응답이 필요한 작업에는 적절하지 않음.

5. 전력 소비 외 주요 차이

(1) 시간 간격

        • CPU 클럭은 정밀한 짧은 시간(예: 마이크로초 단위) 측정에 적합.
          • 예: LED를 100ms 간격으로 깜박이기.
        • 저속 클럭은 긴 시간 간격(예: 초 단위 이상) 측정에 적합.
          • 예: 1시간마다 온도 센서를 읽고 데이터 저장.

(2) 시스템 전반 영향

        • CPU 클럭은 CPU가 항상 깨어 있어야 하므로 시스템 전체 전력을 높임.
        • 저속 클럭은 CPU가 꺼진 상태에서도 동작 가능하므로 시스템 전력을 절약.

  •  

'nRF52' 카테고리의 다른 글

[nRF52] undefined reference to `nrfx_twim_tx' ERROR 해결  (2) 2023.06.13
[nRF52] header file ERROR 해결  (3) 2023.06.08
[nRF52] TWI ERROR 해결  (0) 2023.06.07