본문 바로가기
임베디드 관련/Raspberry Pi Pico

Raspberry Pi Pico 저전력 모드 함수 정리

by minhyeok.lee 2024. 11. 10.
반응형

Raspberry Pi Pico 저전력 모드 함수 정리

1. Raspberry Pi Pico는 다양한 저전력 모드를 지원해 배터리 수명 연장에 유리함

2. 아래는 라즈베리 파이 피코의 RP2040 SDK 내에서 사용할 수 있는 주요 전력 관리 함수들이다.


1. sleep_ms(uint32_t ms) 함수

#include "pico/stdlib.h"

sleep_ms(1000); // 1초 동안 슬립

설명: 지정된 밀리초 동안 시스템을 슬립 상태로 전환함

용도: 짧은 대기 시간을 줄 때 주로 사용하며, 특정 작업 대기 시 전력 소모를 줄이는 데 유용함

 


 

2. sleep_us(uint32_t us) 함수

#include "pico/stdlib.h"

sleep_us(100); // 100 마이크로초 동안 슬립

 

설명: 지정된 마이크로초 동안 시스템을 슬립 상태로 전환함

용도: 짧은 마이크로초 단위의 지연 시간을 줄 때 사용하며, 마이크로초 단위의 정밀한 슬립을 제공함

 


 

3. sleep_until(absolute_time_t target) 함수

#include "pico/stdlib.h"

absolute_time_t target_time = make_timeout_time_ms(500); // 500ms 이후 절대 시간
sleep_until(target_time); // target_time까지 슬립

설명: 특정 시간까지 슬립 상태로 유지되며, absolute_time_t는 목표 시간 값을 설정하는 데이터 구조체

용도: 특정 시간까지 기다려야 할 때 사용하며, 시간에 민감한 이벤트까지 시스템을 유휴 상태로 유지함

 


 

 

4. ulticore_reset_core1() 함수

#include "pico/multicore.h"

multicore_reset_core1(); // 두 번째 코어 비활성화

설명: 두 번째 코어를 초기화하고 중지시켜 저전력 모드로 전환함

용도: 두 번째 코어가 필요하지 않을 때 전력 소비를 줄이기 위해 사용하고 예를 들어, 특정 기능에서 코어 1만 필요하다면, 코어 2를 중지시켜 전력 소모를 줄일 수 있음

 


 

5. gpio_set_irq_enabled(uint gpio, uint32_t events, bool enabled) 함수

#include "pico/stdlib.h"

gpio_set_irq_enabled(25, GPIO_IRQ_EDGE_FALL, true); // GPIO 25 핀에서 폴링 인터럽트 발생 시 시스템 활성화

설명: 특정 GPIO 핀에 대한 인터럽트를 설정하거나 비활성화함. 인터럽트에 반응해 슬립 모드에서 깨어날 수 있음

용도: 특정 핀에서 이벤트 발생 시 시스템을 슬립 상태에서 깨어나도록 설정 가능. 핀에서 이벤트가 발생할 때만 시스템이 활성화되어 전력을 절약할 수 있음

 


 

6. gpio_put(uint gpio, bool value)

RTC(실시간 시계) 모듈을 사용해 Pico를 설정한 시간 후에 깨울 수 있음

주로 deepsleep()나 lightsleep() 모드에서 사용됨

import machine

# 5초 후 자동 웨이크업 설정 후 딥슬립 모드 진입
rtc = machine.RTC()
rtc.alarm(time=5000)  # 5초 타이머 설정
machine.deepsleep()

설명: 특정 GPIO 핀을 ON/OFF 상태로 전환하고 슬립 모드로 전환 시 필요하지 않은 주변 장치의 전원을 끄기 위해 사용될 수 있음

용도: 불필요한 장치에 전원을 공급하지 않기 위해 GPIO 핀을 제어하여 전력 소비를 줄임

 


 

7. __wfi() (Wait For Interrupt)

#include "hardware/structs/systick.h"

while (1) {
    __wfi(); // 인터럽트를 대기하며 CPU 유휴 상태로 유지
}

설명: 인터럽트를 대기하는 상태로 전환되며, 일반적으로 무한 루프와 함께 사용됨

용도: CPU를 유휴 상태로 전환하고 인터럽트가 발생할 때까지 대기하며, 이를 통해 전력 소비를 줄임

 


 

8. clock_stop() 및 clock_start()

설명

1. CPU 또는 특정 주변 장치의 클럭을 중지, 시작하는 함수

2. 현재 SDK에서 직접 사용할 수는 없으나, 수동으로 레지스터를 조작해 클럭을 중지할 수 있음

 

용도

1. 클럭이 필요하지 않은 장치를 중지하여 전력을 절약할 수 있음

2. 예를 들어, 사용하지 않는 UART, SPI 등의 클럭을 꺼서 불필요한 전력 소비를 줄임

 


 

결론

1. 라즈베리 파이 피코에서는 완전한 딥슬립 모드는 제공되지 않지만, 위와 같은 다양한 저전력 함수와 레지스터 조작을 통해 전력 소비를 줄이는 것이 가능함.

2. 이와 같은 함수와 설정들을 통해 Raspberry Pi Pico의 전력 소비를 효과적으로 줄일 수 있음

3. 필요에 따라 슬립 모드와 깨어나는 조건을 조정하여 배터리 수명을 최적화할 수 있음

반응형

댓글