STM32 회로 리뷰 방법 - GPIO

지난번에 이어 STM32 회로 리뷰 방법에 대해 알아보도록 하겠습니다. GPIO는 MCU에서 중요한 부분이기도 하며 모든 회로 연결의 기본이기도 합니다.

GPIO 일반적으로 Logic-High, Logic-Low 신호를 출력하기도하고, USART/UART, I2C, SPI, USB 와 같은 통신용 혹은 ADC,DAC와 같은 아날로그 신호 입출력으로 사용되기도합니다.

우선 회로리뷰의 기본은 GPIO의 연결이 사용하고자하는 용도에 맞게 연결되어 있는지 확인이 필요합니다. 예를 들어 USB로 사용하기 위해 연결된 GPIO가 USB 출력이 가능한 Alternate 핀인지 Datasheet를 확인 하는 것으로 시작됩니다.

그 다음은 각 GPIO의 입력 범위를 확인 하는 것입니다. 지난 전원단에서도 언급되었던 이야기 인데, TT(Three voltage tolerant) 인지 FT(Five voltage tolerant)인지 확인하여 연결하여야 칩의 오동작이나 파괴를 막을 수 있습니다.

간혹 MCU가 리셋되거나 오동작을 할 경우 전원의 시퀀스를 의심하라

STM32 GPIO Block

위 그림은 AN4899 에서 발췌한 STM32 MCU의 GPIO 내부 블럭입니다. MCU에 연결된 모든 핀의 전원이 VDD과 동일한 타이밍에 켜지면 이상적이지만 그렇지 않은 경우도 발생합니다. 이러한 경우 반드시 조심해야 할 것이 I/O pin으로 유입되는 전류입니다.

위의 그림에서 I/O pin으로 전류가 유입될 수 있으며 이로 인해 VDD에 전원이 인가되어 실제 레귤레이터나 SMPS에서 출력한 전원이 VDD에 들어오기도 전에 의도하지 않게 MCU가 동작할 가능성이 있습니다. I/O로 들어오는 전류가 약할 경우에는 MCU 내부 로드로 인해 다시 전압이 강하하게 되면서 MCU의 BOR이 걸리기도 합니다.

따라서 GPIO에 입력되는 전원의 시퀀스가 다를 경우 전원의 시퀀스를 반드시 확인하여야 하며 초기 VDD가 인가되기 전에 GPIO의 상태를 올바르게 두어야 합니다.

또한 GPIO를 VDD나 GND에 직접 연결할 경우 주의를 기울여야 합니다. 위의 블럭 다이어그램처럼 GPIO는 Push-pull 설정이 가능하기때문에 VDD나 GND에 직렬 저항없이 연결할 경우, 잘못된 GPIO 설정에 따라 단락의 위험이 있으며 특별히 System bootloader를 사용하는 경우에는 몇몇 Pin들이 UART/SPI 와 같은 통신 Interface로 자동 설정되기 때문에 외부 연결을 꼼꼼하게 살펴야 합니다.

그밖에 외부인터럽트를 위해 GPIO를 EXTI로 사용하곤 하는데, 주의해야할 점이 한가지 있습니다. STM32의 GPIO의 EXTI 내부는 핀번호를 MUX해서 사용하기 때문에 GPIO A,B,C.. 와 상관없이 하나의 핀 번호에 하나의 EXTI를 할 수 밖에 없습니다. 회로 리뷰시 반드시 하나의 핀번호에 하나의 EXTI만 연결되어 있는지 확인하여야 합니다.

마지막으로 USB/UART 등 외부 콘넥터로 PIN이 나오는 경우에는 Protection을 달았는지 확인해 주시기 바랍니다. 보통 STM32MCU는 ESD Human body model의 경우 2KV까지 충족하지만 실제로 ESD는 그보다 더 강할 수도 있기 때문에 꼭 TVS와 같은 Protection을 필수적으로 추가 것을 검토하시기 바랍니다.

이상입니다.