STM32 CPU가 활성화 된 순간 스위치 감지


10

편집 :이 질문은 잘못되었습니다. stm325105에는 웨이크 업 핀이 하나만 있습니다. 그러나 다른 ST- 파트에는 하나 이상의 웨이크 업 핀이 있으므로 주어진 답변이 유효합니다.


웨이크 업 입력에 연결된 두 개의 순간 버튼이있는 stm32f105가 있습니다. 프로세서가 대기 모드로 설정됩니다. 버튼을 누르거나 RTC 타이머가 작동하면 CPU가 작동합니다.

문제는 어떤 웨이크 업 입력이 트리거되었는지에 따라 CPU가 다른 작업을 수행하기를 원한다는 것입니다. 에 따르면 5.3.5 에서 ST stm32f105xx 참조 설명서 , 더 레지스터는 우리가 깨어했습니다 있음을 나타내는 상태 레지스터를 제외하고 보존되지 않습니다 (하지만 사람에 의해), 42 개 백업 레지스터.

대기 모드를 사용하면 전력 소비를 최소화 할 수 있습니다. 전압 조정기가 비활성화 된 Cortex ® -M3 딥 슬립 모드를 기반으로합니다. 1.8V 도메인의 전원이 꺼졌습니다. PLL, HSI 오실레이터 및 HSE 오실레이터도 꺼집니다. 백업 도메인 및 대기 회로의 레지스터를 제외하고 SRAM 및 레지스터 내용이 손실됩니다.

대기 모드에서 깨어 난 후 리셋 (부팅 핀 샘플링, 벡터 리셋 페치 등)과 같은 방식으로 프로그램 실행이 다시 시작됩니다. 전원 제어 / 상태 레지스터 (PWR_CSR)의 SBF 상태 플래그는 MCU가 대기 모드에 있음을 나타냅니다.

이 ST 포럼 게시물, 대기 모드에서 Wakeup의 출처를 확인하는 방법은 무엇입니까? , 소프트웨어에서 트리거 된 웨이크 업을 감지 할 수 없음을 나타냅니다. 더 많은 깨달음을주는 다른 게시물을 찾지 못했습니다.

깨어 난 후 어떤 웨이크 업 입력이 트리거되었는지 결정하기 위해 소프트웨어 또는 하드웨어를 어떻게 사용할 수 있습니까?


1
버튼에 캡을 충전하고 다음을 읽습니다.
PlasmaHH

1
몇 가지 STM32F105 변형을 찾았으며 하나의 웨이크 업 핀만 있습니다. 정확히 어느 부분을 의미하고 어떤 핀을 의미합니까?
berendi-5

@berendi My STM32F105에는 하나의 웨이크 업 핀이 있습니다. 내 질문에서 언급 한대로 대기 모드가 아닌 STOP 모드로 구성되었습니다. 깨우기 위해 EXTI 이벤트를 사용합니다. 나는 "EXTI events"의 의미를 "wakeup pins"과 섞었다. 그러나 누군가가 대기 모드에서 "깨우기 RTC"또는 "깨우기 핀으로 깨우기"를 구분해야하는 경우 Olin이 제공하는 답변이 여전히 유용하다고 생각합니다. Olins의 답변과 일치하도록이 질문을 편집하는 방법에 대한 제안이 있습니까? 처음에 무엇이 잘못되었는지 설명하는 작은 메모? 전체 재 편집? 아니면 전체 질문을 삭제해야합니까?
Daniel Näslund

1
F0, F3, L0 또는 L1과 같은 하나 이상의 웨이크 업 핀이있는 ST 컨트롤러가 있습니다.이 컨트롤러에는 단일 웨이크 업 입력 플래그가 있기 때문에 대기 모드를 종료 한 후에 소스를 확인할 수 없습니다. ST는 최신 F7 및 L4 시리즈에서 각 감시 입력에 대해 별도의 플래그가있는이 감시를 먼저 수정했습니다.
berendi-시위

답변:


11

이 ST 파트의 세부 사항을 모르므로 설명이 올바르다 고 가정하겠습니다.

두 버튼 중 하나를 누르면 프로세서가 곧 깨어납니다. 내부 RC 발진기가있는 경우 특히 그렇습니다. 정확성을 이유로 결국 크리스탈에서 실행해야하더라도 내부 RC에서 부품을 시작한 다음 나중에 크리스탈로 전환 할 수 있습니다. 당신의 것이 그들 중 하나인지는 모르겠지만, 그러한 일을 할 수있는 마이크로가 있습니다.

어쨌든 깨우기 후 가능한 빨리 두 입력을 모두 읽습니다. 이 ST 마이크로에 대해 이상한 점이 없으면 버튼 누름에서 1ms에서 수십 ms 사이 여야합니다.

회선이 여전히 낮게 유지되도록하려면 버튼을 놓은 후 커패시터를 사용하여 회선을 최대 100ms 동안 낮게 유지하십시오.

예를 들어, 보장 된 로직 낮은 입력 레벨이 공급 전압의 20 %라고 가정 해 봅시다. 라인은 저항으로 풀업되며 접지에 커패시터가 있습니다. 버튼은 접지선을 단락시킵니다. 따라서 선이 높이로 뜨고 버튼을 누를 때 적극적으로 접지됩니다. 버튼에서 손을 떼면 전압이 공급쪽으로 급격히 감소합니다.

최종 값의 20 %로 감소하는 것은 0.22 시간 상수에서 발생합니다. 버튼을 누른 후 100ms 동안 회선이 낮은 것처럼 보이게하고 싶다고 가정하겠습니다. 즉 RC 시간 상수는 450ms 여야합니다. 100kΩ 풀업의 경우 커패시턴스는 4.5µF 여야합니다. 따라서 4.7 µF 10 V 캡은 훌륭하게 작동합니다.

요약하면 다음과 같습니다.


1
다른 방법으로 STM32는 상승 에지에서 깨어납니다. 또한, 그들은 항상 내부 클럭으로 시작하여 외부 크리스탈로 전환하고 pll은 소프트웨어에 의해 수행됩니다. 문제는 CubeMX 도구에서 제공하거나 생성 한 시작 코드에 문제가있어 클럭 트리 설정 전에 사용자 코드를 실행하기가 다소 어렵습니다.
berendi-시위
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.