반응형
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저항 풀업을 달아주면 안정적으로 신호가 나오는 것을 확인 할 수 있다.
반응형
'임베디드 용어설명' 카테고리의 다른 글
Raspberry pi cm4 SPI0 CE0 CE1 사용 / ENC28J60, TFT 2.2 LCD 사용 (0) | 2021.06.17 |
---|---|
STM32F105 CDC라고 쓰고 USB 가상포트 라고 읽는다. (0) | 2021.04.22 |
openwrt 사용법 (HLK-7688AN) (0) | 2021.02.04 |
WIZ107SR TTL to Ethernet 모듈 HW_Trig_pin CMD모드 진입 IP설정 방법 (4) | 2020.12.17 |
ESP-EYE (ESP-IDF 설치 및 빌드) (0) | 2020.07.02 |