GPIO(Trisate Buffer)의 정체와 GPIO ISR

유명현·2024년 6월 22일

ARM base의 MCU 입장에서의 GPIO는 AMBA bus에 연결된 SOC Periphral 입니다. APB bus에 연결된 Slave라고 보시면 되는거죠. 이런 GPUO들은 Register를 가지고 있고, CPU입장에서는 Register를 통해서 control 가능합니다.

그 control이라는 게 I/O로 쓸 수 있다고 했으니까, 어쩔 때는 input, 어쩔 때는 Output으로 써야 하니까, 이런 I/O는 Register를 통해서 Programmable하답니다.

1) Pin의 Mode를 정할 수 있습니다.

  • GPIO로 쓸 꺼냐, Alternative functionally로 쓸 꺼냐
  • Alternative로 설정하게 되면 GPIO로 못쓰니가, 여기서 게임 오바.
  • 게임 오바 되면 Hardware적으로 정해진 임루를 수행

2) Pin의 상태 (Mode)를 활성화 하면서 Data Direction을 정할 수 있습니다.

  • 지금부터 Pin이 사용 가능하도록 Init 하겠다.
  • input이냐, Output이냐를 결정하겠다.

3) 값을 읽거나, 쓰기 가능

Alternative Funtionally로 pin을 설정하게 되면 Hardware적으로 Path 자체가 해당 Alternative Function의 회로에 연결되므로, GPIO로서의 자격을 상실하게 됩니다.

GPIO는 Hardware적으로는 3상태 버퍼 Tristate Buffer로 구현이 됩니다. 3상태 Buffer라는 건 1, 0, High impedence(HI-Z) 요런 3가지 종류의 상태를 가질 수 있는 Buffer를 의미합니다.

Tristate Buffer를 살펴 보면, Switch가 1일 때는 I값이 o에 그대로 전달됩니다. Switch가 0일 때는 I값이 O에 전달되지 않고 회로가 열려 버려서, 마치 회로가 Open 된 것처럼 됩니다.

이렇게 Open 된 것처럼 된 상태를 Hi-Impedence (HI-Z)라고 읽고, I(Input)와 O(Output)의 연결된 부분이 끊어져서 I와 O는 서로 연관성이 없어지게 됩니다.

Switch를 0으로 만들어 놓고, I와 O를 isolation시키는 거죠, 결국 High impedence란 반대편의 Input을 그대로 받아들이는 상태라고 보시면 됩니다. 이 pin에 물려 있는 다른 편의 pin에 값이 1이며 이쪽도 1, 0이면 이쪽도 0 이런 식의 상태입니다.

출처 : 임베디드 레시피

profile
기억보다 기록을

0개의 댓글