[stm32] sleep mode, stop mode, standby mode의 차이

이채윤·2022년 5월 12일
0

임베디드

목록 보기
27/70
post-thumbnail

[절전모드에 대해서]

  • Stm32에서는 sleep, stop, standby 3가지의 절전모드를 지원한다.
  • 각각 sleep, stop, standby 로 점차 전력소모가 더 줄어들게 된다. (sleep이 전력소모가 가장 많다.)

[sleep mode]

  • Sleep mode는 WFI 또는 WFE 명령을 실행하여 절전모드로 들어간다.
  • 이 모드에서는 모든 I/O핀이 실행 모드와 동일한 상태를 유지한다.
  • 해당 모드 에서는 core만 정지하고 다른 주변장치에는 변화가 없다.
  • WFI로 수행할 경우, NVIC 등록된 주변장치 인터럽트 발생 시 wakeup한다.
  • WFE로 수행시, NVIC IRQ 인터럽트 또는 Event모드로 설정된 EXTI 인터럽트 발생 시 wakeup 한다.
  • 아래 명령어에서 두번째 매개변수는 WFI 또는 WFE를 지정할 수 있다.

[stop mode]

  • 해당 모드 에서는 모든 Clock이 멈춘다.
  • 따라서 wakeup 시에 모든 clock이 멈추었던 상태이기 때문에 clock 재설정이 필요하다.
  • SRAM 및 레지스터 내용이 보존된다.
  • Stop mode에서는 I/O핀이 실행 모드와 동일한 상태를 유지한다.
  • WFI로 수행할 경우, NVIC 등록된 주변장치 인터럽트 발생 시 wakeup한다.
  • WFE로 수행시, NVIC IRQ 인터럽트 또는 Event모드로 설정된 EXTI 인터럽트 발생 시 wakeup 한다.
  • 아래 명령어에서 두번째 매개변수는 WFI 또는 WFE를 지정할 수 있다.
  • Stop mode로 들어가려면, 모든 EXTI 라인 보류 비트, 모든 주변 장치 인터럽트 보류 비트 및 RTC 알람 플래그를 재설정해야 한다.
    그렇지 않으면, stop mode 입력 절차가 무시되고 프로그램 실행이 계속된다.
  • Stop mode로 들어가기 전에 외부 clock HSE를 비활성화해야 하는 경우, 먼저 시스템 클럭 소스를 HIS로 전환한 다음 HSE비트를 지워야 한다.
    그렇지 않으면, stop mode로 들어가기 전에 HSON 비트가 1로 유지되는 경우 외부 클럭 고장을 감지하고 오작동을 피하기 위해서 보안 시스템(CSS) 기능을 활성화해야 한다.
  • 인터럽트 또는 EXTI로 구성된 것은 WFI 또는 WFE 명령을 사용하여 저전력 모드로 진입한 경우 CPU를 강제로 stop mode에서 나오게 한다.
  • Stop mode로 들어가기 전에 HSE와 PLL이 모두 비활성화 되므로, 저전력 모드에서 나올 때 MCU clock이 HIS로 설정된다
    이것은 우리의 코드가 원하는 SYSCLK 속도에 따라 clock tree를 재구성해야 한다는 것을 의미한다.

[standby mode]

  • SRAM, 레지스터 내용을 유지하지 못한다.
  • PLL 멀티플렉서, HIS 및 HSE 오실레이터도 꺼진다.
  • 외부 재설정(NRST pin), IWDG 재설정, 상승에지 또는 RTC이벤트가 발생하면 standby mode에서 나온다.
  • 해당 모드에서 나오고 나면 프로그램 실행은 재설정 후와 같은 방식으로 다시 시작된다. (부트 핀 샘플링, 옵션 바이트 로드, 재설정 벡터 가져오기 등)
  • Standby mode로 들어가기 전에 HSE와 PLL이 모두 비활성화 되므로, 이 전력 모드를 종료할 때 MCU 소스 클럭이 HIS로 설정된다.
    따라서 우리가 원하는 SYSCLK 속도에 따라 클럭 트리를 재구성해야 한다.
  • External Reset, IWDG Reset, WKUP 핀 인터럽트, RTC Event로 Wakeup 가능하다.

0개의 댓글