본문 바로가기
임베디드SW/TC275 Lite Kit for 임베디드

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)

by 바이너리 임베디드 2021. 11. 24.

GPIO 제어하는 방법 (Floating Pull-up Pull-down)




저번 편에서는GPIO에 대한 일반적인 설명과 GPO에 대해 자세히 다루어 보았습니다.
Push-pull 모드와 Open-drain에 대해 어느정도 감을 잡으시기 위해서는 이전 글을 꼭 읽고 오시기 바랍니다.
오늘은 GPI에 대해 자세히 다루어 보겠습니다.

https://cookbook.tistory.com/20

 

GPIO 제어하는 방법 1편 (Push-pull 모드, Open-drain 모드)

GPIO는 General Purpose Input Output이라고 하는군요. 우선 GPIO를 제어하기 위해서 GPO부터 한번 파헤쳐 보도록 하겠습니다. 그 다음편에서는 GPI를 파헤쳐 보고, 그다음에는 TC275 Lite Kit에서 어떻게 구현하

cookbook.tistory.com

 

GPI 설정하는 방법

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)


오른쪽 면에 있는 HW Pin을 GPI로 설정해보려고 합니다.
우선 HW Pin을 설정하기 위해 I/O Control Register를 Input으로 설정합니다.
이제 이 Pin은 Input Pin으로 동작하게 됩니다.

그럼 조금 더 세부적인 모드를 설정해 주어야 합니다.
Input 핀은 외부 회로의 상태에 따라 다양하게 동작할 수 있기에 외부 회로의 형태를 정해주어야 합니다.
그래서 외부 회로를 Floating상태인지 Pull-up 상태인 Pull-down 상태인지 설정해 주어야 합니다.
Floating과 Pull-up과 Pull-down에 대해서 자세히 설명해보겠습니다.

그리고 Input Pin에 걸리는 전압을 읽어 3.3V이면 Input Data Buffer에 High상태로 0V이면 Low상태를 갖습니다.
그럼 SW를 통해 Input Data Buffer를 읽어 Application에서 그 값을 사용하게 됩니다.

제일 중요한것은 Control Register에서 Input핀으로 설정한다 제일 첫번째 설정입니다.

Floating 디바이스상태

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)



Floating이라는 것은 Input pin의 값이 Low인지 High인지 알수 없을때를 의미합니다.
둥둥떠있다라는 표현인데 전압이 알수 없는 값으로 둥둥 떠있다고 보시면 됩니다.
다른 어려운 말로는 High Impedance (Hi-z)라고도 표현 합니다.

스위치가 Off상태가 되면 전류가 어디로 흐르지 않는 상태가 되며 Input 핀에는 어떠한 전압도 걸리지 않는 상태가 됩니다. 그리고 매우 노이즈에 취약한 상태가 되어 외부의 작은 노이즈에도 Input 핀이 High상태나 Low상태로 Read하게 됩니다. 그래서 Input pin에서는 어떤 값을 갖게 될지 모르게 됩니다. 이상태가 Floating 상태라고 할수 있습니다.
그래서 MCU에서는 어떨때는 High로 읽기도 하고 어떨때는 Low로 읽기도하는 현상이 나타납니다.

MCU를 제어 하는 입장에서 Input data buffer값이 흔들리게 되면 정상적인 구동이 어려워지게 됩니다. 그래서 이러한 핀 상태를 High상태인지 Low상태인지 정확하게 해주어야 하는데 그 방법이 VCC전원 쪽에 Pull-up 저항을 달거나 GND쪽에 Pull-down 저항을 달아줘 해결해주어야 합니다.

Pull-up 디바이스 상태

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)


Floating 상태의 외부 회로에서 VCC 전원과 Input 핀 사이에 Pull-up 저항이 달려 있는 상태를 이야기 합니다.

외부 스위치가 Off상태가 되면 전류가 Input Pin으로 흘러 들어가 High 상태를 갖게 됩니다.

반대로 외부 스위치가 On상태가 되면 모든 전류가 그라운드쪽으로 흐르게 되고 Input Pin에 걸리는 전압은 0V가 됩니다. 그래서 Input Pin은 Low값을 갖게 됩니다.

그래서 스위치 상태에 따라 Floating 상태가 아닌 High값 또는 Low값을 갖게 됩니다.

 

Pull-down 디바이스 상태

GPIO 제어하는 방법 2편 (Floating, Pull-up, Pull-down)

Floating 디바이스 상태에서 그라운드쪽에 Pull-down 저항을 달아주어 Floating 상태를 해결해보겠습니다.

스위치가 Off가 되면 외부의 전원이 끊어진 상태가 되어 전류가 흐르지 않는 상태가 되어 data Input buffer에서는 LOW값을 읽게 됩니다.

스위치가 On이 되면 전류가 pull down 저항때문에 Input pin으로만 흐르게 되어 High값을 MCU가 읽게 됩니다.

 

마치며..


지금까지 GPI에 대해 배워보았습니다.
MCU를 제어할때 input pin은 꼭 Pull-up저항이나 Pull-down저항을 달아 설계하시기 바랍니다.
원치않는 신호때문에 오동작을 일으킬수 있기 때문입니다.
그럼 다음 편에서는 TC275에서 LED를 제어해보도록 하겠습니다.

궁금하신점이나 모르겠는부분이 있으면 아래로 오시면 됩니다. 함께 나누고 함께 공유하면 힘이 됩니다!!


바이너리 임베디드 카페

 

이 컨텐츠가 도움이 되셨다면!!!

ㅇ ㅏ ㄹ ㅐ 를 꼬 오 옥!! 부탁 드립니다. 큰 힘이 됩니다.

 

댓글