MCU는 STM32F030F4P6을 사용하였고 관련 데이터 시트는 아래 첨부했습니다.
GPIO mode - Input mode
스위치이므로 핀을 Input mode로 설정한다.
GPIO Pull-up/Pull-down – No pull-up and no pull-down/Pull-up/Pull-down
1. Floating
디지털 신호는 High(1) 또는 Low(0)이지만 실제는 그렇지 않은 경우가 많다.
Floating은 0과 1이 명확하지 않게 펄럭거리는 상황을 말하며 정전기, 잡음에 의해서 오류가 생기는 것이 가능하다.
위의 그림은 Floating 상태를 보여준다. Input을 1로 받을지 0으로 받을지 모르기 때문이다.
즉, 확실한 전압차이가 나지 않아서 전류가 흐르는지 아닌지도 불명확하기 때문에 1과 0이 확실하게 구분되지 않는다.
그래서 Input을 명확히 하기 위해서 Pull-up, Pull-down 저항을 사용하여 회로를 구성한다.
2. Pull-up
Pull-up 저항은 전원 앞에 붙는 저항을 말하며, 보통 Pull-up 회로를 구성할 때 4.7k~10k를 사용하나 데이터시트를 참고해야 한다.
위의 그림은 Pull-up 저항을 단 회로이다.
스위치를 열면 5v가 저항 하나로 인하여 전류가 Input쪽으로 흐른다.
그러면 Input은 항상 기본값이 5v로 묶여있게 되어 1이다.
스위치를 닫으면 5v와 Input 모두 그라운드 쪽으로 전류가 흐르게 된다. 그러면 Input은 0이 된다.
이 상태를 Pull-up되었다 혹은 Pull-up상태로 만들었다라고 한다.
※ 만약 Pull-up저항이 없다면 어떻게 될까?
위의 그림처럼 저항이 없다면 쇼트상태가 되어 엄청난 과전류가 흐른다.
그 결과 전선이 탈 수도 있고 MCU에도 타격이 간다.
그럼 과전류를 막기 위해 5V를 제거한다면 어떻게 될까?
스위치를 열면 open상태(floating)가 되고 닫으면 0(Low)이다.
그래서 이것은 보장된 1을 만들 수 없어서 써먹을 수가 없다.
3. Pull-down
저항을 그라운드 쪽에 붙여준다.
스위치를 열면 MCU에서 전류가 그라운드 쪽으로 흐른다. 그러면 Input은 항상 기본 값이 0이다.
스위치를 닫으면 5V가 MCU쪽으로 전류가 흐른다. 그러면 Input은 1이 된다.
※ 만약 Pull-down저항이 없다면 어떻게 될까?
위의 그림에서는 쇼트상태가 되어 과전류가 흐른다. 즉, 전선 또는 MCU가 탄다.
위의 그림에서는 스위치가 열리면 open상태(floating)가 되고 닫으면 0(Low)이다.
Open 상태는 보장된 값을 얻을 수 없어서 마찬가지로 사용할 수 없다.
※ Pull-up이 노이즈에 더 강한 이유
아무것도 연결을 하지 않으면(스위치 OFF 상태) 각종 노이즈나 주위 환경에 따라 수시로 상태가 변할 수 있다.
하지만 Pull-up저항은 스위치 OFF 상태일 경우 5v(HIGH)에 묶여있기 때문에 노이즈에 강하다.
따라서 일반적으로 Pull-down보다는 Pull-up을 더 많이 사용한다.
최종 설정 및 정리
회로에서 보면 여기서 사용하는 스위치에 이미 Pull-up저항이 달려있다.
따라서 Input mode, No pull-up and no pull-down으로 설정했다.
'개발환경 > STM32CubeMX' 카테고리의 다른 글
GPIO(LED) 설정 - STM32F030F4P6 (0) | 2023.11.18 |
---|---|
Debug 설정 - STM32F030F4P6 (1) | 2023.11.18 |
ADC 설정 - STM32F030F4P6 (1) | 2023.11.18 |
UART(RS-485) 설정 - STM32F030F4P6 (1) | 2023.11.18 |
타이머 설정 - STM32F030F4P6 (1) | 2023.11.18 |