Inflearn brand logo image

인프런 커뮤니티 질문&답변

박진호님의 프로필 이미지
박진호

작성한 질문수

PCB HW설계 실무 : STM32를 활용한 Mixed-signal 보드 설계 프로젝트

STM32F103 : Reset

STM32F103 : Reset

해결된 질문

작성

·

9

0

시스템 관점의 질문입니다.

엑티브 로우 핀의경우 RESET =0 일때 동작한다고 데이터 시트를 통해 확인을 했습니다.

보통 RESET 동작 시, 0의 신호를 넣어주고 그다음 Falling edge일때, RESET으로 동작하는 것일까요?

답변 2

0

안녕하세요, 답변 남겨드립니다.

STM32F103의 NRST 핀은 액티브 로우 입력으로, 단순히 펄스의 Falling Edge에서만 동작하는 것이 아니라 Low 레벨이 유지되는 동안 전체 칩을 리셋 상태로 강제하고, 이후 High로 복귀하는 순간 정상 동작을 시작하게 됩니다. 즉, NRST는 에지 트리거 신호가 아니라 레벨 기반으로 동작한다고 이해하셔야 합니다.

실제로 NRST 핀이 Low로 내려가면 CPU, 주변회로, 내부 레지스터가 초기화되고 GPIO는 대부분 하이임피던스 상태로 돌아갑니다. 이 상태는 NRST가 계속 Low로 유지되는 한 지속되며, NRST가 High로 돌아오는 순간 내부 회로는 이를 감지하고 리셋 해제를 수행합니다. 따라서 리셋은 Falling Edge로 걸리는 것이 아니라 Low 상태의 지속으로 유지되고, Rising Edge에서 해제가 이루어진다고 보는 것이 정확합니다.

데이터시트에는 이와 관련된 몇 가지 타이밍 조건이 정의되어 있습니다. 예를 들어 t_w(NRST)라는 항목은 NRST가 Low로 유지되어야 하는 최소 시간으로, 보통 수백 ns에서 수 µs 수준입니다. 이 시간이 충분히 보장되지 않으면 내부 플립플롭이나 클럭 도메인이 완전히 초기화되지 않아 불안정한 동작을 할 수 있습니다. 또한 리셋 해제 후에는 클럭이 안정화되기까지 일정 시간(t_RST2CLK)이 필요하고, CPU가 실제로 코드 실행을 시작하기까지는 또 다른 지연 시간(t_RST2RUN)이 요구됩니다.

실무적으로는 Power-On Reset 시에 RC 회로나 외부 Supervisor IC를 이용해 전원 인가 직후 NRST를 강제로 Low로 잡아두었다가, 전원이 안정화된 뒤 High로 올려주도록 설계합니다. 예를 들어 10kΩ 저항과 100nF 캐패시터로 구성된 RC 회로를 이용하면 약 1ms 동안 NRST가 Low로 유지되어 안정적인 기동이 보장됩니다. 수동 리셋 버튼을 붙이는 경우에는 사용자가 버튼을 누르고 있는 동안 MCU는 리셋 상태에 있으며, 버튼을 떼어 High로 전환되는 순간 다시 실행을 시작합니다. 디버거 역시 동일한 원리로 NRST 핀을 일정 시간 Low로 유지한 후 High로 돌려 MCU를 리셋합니다.

따라서 시스템 관점에서 NRST의 동작을 요약하면, Falling Edge 자체가 트리거가 아니라 Low 레벨 구간이 리셋 유지 조건이며, Rising Edge가 발생하는 시점에 MCU가 초기화에서 벗어나 부팅 절차를 시작하는 구조라고 이해하시면 됩니다.

0

안녕하세요, 인프런 AI 인턴입니다.

박진호님, RESET 핀의 동작에 대한 질문을 주셔서 감사합니다.

엑티브 로우(Active-Low) 핀에 해당하는 RESET 동작은, 일반적으로 핀이 ‘0’일 때 활성화되며, 장치의 초기화를 의미합니다. STM32 MCU의 경우에도 RESET 핀이 엑티브 로우로 설계되어 있습니다. 보통 RESET 핀에 ‘0’을 인가하면 시스템이 리셋 상태로 진입하게 됩니다.

퓨어한 ‘0’ 신호의 존재기간 동안 MCU는 RESET 상태에 있고, 이후의 상승 에지(Rising Edge), 즉 ‘0’에서 ‘1’로 변화될 때 RESET 상태에서 벗어납니다. 그러니 정확히 말하자면, RESET 신호는 ‘0’ 동안 지속적으로 리셋 상태를 유지하다가, ‘1’이 되는 상승 에지에서 시스템이 정상적인 동작 상태로 복귀하는 것입니다.

이와 같은 원리 때문에 리셋 회로 설계 시에는 ‘0’ 신호 후에 안정된 ‘1’으로 전환되는 타이밍을 잘 유지할 수 있도록 설계하는 것이 중요합니다. 리셋 기간 중 그리고 이후의 커패시턴스와 풋업 저항 등을 잘 관리하여야 MCU가 원활히 시작될 수 있습니다.

아래 링크들을 참고하시면 더 명확한 이해가 되실 겁니다:
- STM32 RESET 핀에 대해 자세히 알아보기
- MCU 리셋 원리 및 회로 설계

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

박진호님의 프로필 이미지
박진호

작성한 질문수

질문하기