임베디드 용어설명

STM32F103 UART TX를 OD핀으로 쓰기. 3.3v 신호를 5v 신호로 레벨시프트(3.3 v -> 5v level shift)

젊은우산 2021. 4. 13. 09:37
반응형

 

MCU를 사용하다보면 신호레벨에 따라 1.2, 3.3, 5[V] 의 신호를 받는 IC가 있다. 

요즘나오는 MCU들은 대부분 저전력 설계를 하고 있기에, 3.3v output level의 신호를 보낸다. 

반면 IC들은 여전히 5V level을 신호로 받는 소자들이 많기 때문에 3.3v 를 5v로 바꿔주는 level shift를 해주어야 한다. 

 

MCU의 GPIO가 OD(open drain)를 지원하지 않는다면, 트랜지스터(TR)을 하나 두고, GPIO output을 Base에, 5v를 Collector에, GND를 Emitter에 연결하고 사용하면 된다.

 

CubeMX에서 Open drain, Push Pull 등의 GPIO 옵션을 설정 할수 있다. 

그런데 uart는 CubeMX에서 OD를 설정하는 옵션이 없다. 

직접 수정해주어야하는데 stm32f1xx_hal_msp.c -> void HAL_UART_MspInit(UART_HandleTypeDef* huart) 

 

GPIO_InitStruct.Mode =GPIO_MODE_AF_PP;

GPIO_InitStruct.Mode = GPIO_InitStructGPIO_MODE_AF_OD;

바꿔주면 되겠다. 

 

5v - 10k저항 풀업을 달아주면 안정적으로 신호가 나오는 것을 확인 할 수 있다. 

반응형