본문 바로가기
카테고리 없음

RP2040 전원 인가 동작 루틴

by Alan_S 2024. 12. 30.

RP2040의 전원 동작 시퀀스에 대해 알아보고자 한다. 

가장 먼저 위 Block Diagram을 이해해야 한다. 

여기서 가장 중요한 점은 오른 쪽 상단의 rst_n_psm이다. psm이란 power on state machine이란 뜻으로, 뒤에 설명하겠지만 chip이 동작하는데 가장 중요한 clk,rom,sram, bus 등 모든 것들이 초기화되는 과정이다. 

 

Chip에 처음 전원이 공급되고, 내부 regulator로 core전압이 공급된 뒤, Chip의 기본 셋팅이 모두 이뤄지면 그 이후에 psm이 이뤄져야 한다. 그렇기 때문에 그 이전에 n_rst_psm이 high로 올라가게 되면 chip은 정상적인 부팅을 하지 못한다. 

 

이런 것들을 위해 rp2040에는 보호 회로가 들어가 있다. 위와 같이 block diagrm으로 나와있다. RUN은 기존 다른 MCU들의 RST이 아니다. 그렇기 때문에 RUN을 RST으로 착각하여 POR을 신경쓰지 않아도 된다. (다만 Pull-up은 당연히)

 

RP2040 전원인가 동작 시퀀스

상황 1. 전원 인가 즉시, VREG_IOVDD(3.3V)가 먼저 들어온다. 현재 상황에선 내부 레귤레이터가 Core전압인 DVDD(1.1V)를 만들어내기 전인 상황이다.

 

여기선 Brown-out Detevtion이 동작하게 되는데, 해당 시퀀스는 DVDD의 전압레벨을 감지하고 있다가 DVDD.BOD.TH값보다 내려가면 bod_n을 낮춰버린다. 해당 값은 BOD 레지스터로 설정할 수 있다. 이 동작은 전원공급 불안정으로 인한 불확실한 동작을 예방할 수 있다. 

 

 

 

아무튼 bod_n은 0이되고, 따라서 _por_n도 0이된다. 즉 rst_n_psm은 0인 상태로 걸려있는 상태이다.

 

상황 2. VERG_IOVDD와 DVDD모두 안정적으로 들어오는 상태

위와 같이 VREG_IOVDD 와 DVDD가 안정적으로 동작하면 최종 _por_n 신호는 1이다. 

그러면 rst_n_psm도 1로 동작하게되고, psm이 동작한다. 


아래는 위의 과정을 한눈에 볼수 있게 만든 timing 그래프이다.

DVDD가 정상적으로 되면 por_n이 풀리면서 psm이 정상적으로 돌아갈테고, DVDD전압이 내려오면 Brown-out Detection이 알아채면서 Power_on Reset을 활성화시키며 por_n을 낮추게 된다. 이 후, DVDD가 다시 안정적이되면 por_n은 자동적으로 올라오게 된다. 

# 아마 brown-out detection 기능이 없더라도 Power on reset의 DVDD가 어느정도로 내려오면 분명 por_n은 Low로 활성화 될 것이다. 하지만 brown-out detection 기능을 넣음으로써 사용자에게 전원 안정성에 대한 컨트롤을 할 수 있는 기능을 제공했다고 보면 될 것 같다.(레지스터로 값을 설정할 수 있기 때문)

 

*** 회로설계시 주의 *** 

하지만 위와 같은 POR, BOD 보호회로가 들어가 있다고 해도, RP2040의 부팅에는 문제가 생길 수 있다. 

DVDD 전원이 타이밍이 어긋나여 불안정하게 들어오던지, 노이즈로 인해 por_n이 1을 내보내게 되면 RP2040의 부팅에 문제가 생긴다. 
그렇기 때문에 전원이 불안정한 경우에는 RUN의 전압을 충분히 늦게 올리는 것이 도움이 될 수 있다. 

(내부 POR이 아무리 노이즈가 있고 문제가 있더라도 RUN을 늦게 올리면 그 기간동안 PSM은 동작하지 않을 것이기 때문)


Power-On State Machine

위 보호회로로 인한 동작이 끝나고 rst_n_psm이 high로 풀리게 되면 Power-on state machine이 루틴이 동작한다.

**RP2040의 Power-On State Machine(PSM)**은 전원이 공급되거나 리셋될 때 칩의 하드웨어를 특정 순서로 초기화하는 역할을 한다. 주요 내용은 다음과 같다:

  1. 초기화 순서:
    • 전원이 들어오면 디지털 코어 전압(DVDD)이 안정화되고 RUN 핀이 활성화되면 칩 레벨 리셋 서브시스템이 리셋 신호를 해제한다.
    • 링 오실레이터가 먼저 시작되고, 크리스탈 오실레이터는 아직 활성화되지 않은 상태로 준비된다.
    • 클럭 생성기(clk_ref, clk_sys)가 링 오실레이터를 초기 클럭 소스로 사용하여 활성화된다.
  2. 주요 초기화 순서:
    • 리셋 컨트롤러: 모든 주변 장치의 리셋을 관리.
    • 칩 레벨 리셋 및 전압 조정기: 부팅 상태 확인 및 서브시스템 리셋을 관리.
    • XIP(Execute-In-Place): 외부 SPI 플래시에서 직접 코드를 실행할 수 있도록 활성화.
    • ROM 및 SRAM: 부트 ROM이 초기화되고 SRAM이 사용 가능.
    • 버스 패브릭: 프로세서와 주변 장치 간 통신을 설정.
    • 프로세서 컴플렉스: 두 코어가 리셋되고 준비되며, proc1 코어는 슬립 모드로 들어가고 proc0 코어는 부트 코드를 실행.
  3. 자동 동작:
    • PSM은 완전히 자동으로 동작하며 사용자의 개입 없이 작동합니다. 디버깅을 위해 레지스터를 통해 동작을 제어하거나 확인할 수 있는 기능도 제공.