STM32 회로 리뷰 방법 - UART 통신 Interface

대표적인 비동기 Serial 통신 중에 하나인 UART(USART) 통신 Interface의 회로 리뷰를 해보도록 하겠습니다.

위는 STM32G4 시리즈의 USART 블럭도 입니다. 총 5개의 Output이 나와 있습니다. 각 핀에 대한 설명은 데이터시트를 참조하였습니다.

RX(데이터 입력 수신)

RX는 직렬 데이터 입력입니다. 데이터 복구를 위해 오버샘플링 기술이 사용됩니다. 유효한 수신 데이터와 노이즈를 구별합니다.

TX(데이터 출력 전송)

트랜스미터가 비활성화되면 출력 핀이 I/O 포트 구성으로 돌아갑니다. 송신기가 활성화되고 데이터를 전송할 필요가 없을 때 TX 핀은 High(Idle High)입니다. 단일 와이어 및 스마트 카드 모드에서 이 I/O는 데이터를 전송 및 수신하는 데 사용됩니다.

CTS(Clear To Send) - RS232

High로 구동되면 이 신호는 현재 전송이 끝날 때 데이터 전송을 차단합니다.

RTS(Request To Send) - RS232

Low 일 때 이 신호는 USART가 데이터를 수신할 준비가 되었음을 나타냅니다.

DE(Driver Enable) - RS485

이 신호는 외부 트랜시버의 전송 모드를 활성화합니다.

CK

이 핀은 Synchronous master 및 Smart Card 모드에서 클록 출력으로 작동합니다. Clock 입력이 동기식 슬레이브 모드로 동작합니다. 동기 마스터 모드에서 이 핀은 SPI 마스터 모드에 해당하는 동기 전송을 위한 송신기 데이터 클럭을 출력합니다(시작 비트 및 정지 비트에 클럭 펄스 없음, 마지막 데이터 비트에 클럭 펄스를 보내는 소프트웨어 옵션). 병렬로 데이터는 RX 핀에서 동기적으로 수신될 수 있습니다. 이 메커니즘을 사용할 수 있습니다

시프트 레지스터(예: LCD 드라이버)가 있는 주변 장치를 제어합니다. 클록 위상과 극성은 소프트웨어로 프로그래밍할 수 있습니다. 스마트카드 모드에서 CK 출력은 스마트카드에 시계를 제공합니다.

 

• NSS

이 핀은 Synchronous slave 모드에서 슬레이브 선택 입력으로 작동합니다.

RS232, RS485 등의 특별한 경우를 제외하고는 RX,TX 만 외부 디바이스에 연결해 주면 됩니다.

1. 리뷰시 주의해야 할 점은 연결되는 외부 디바이스의 전압 차이입니다.

STM32가 Logic Low로 판단하는 전압은 0.3 x VDD 입니다. 그리고 Logic High로 판단하는 전압은 0.7 x VDD입니다. 그 중간 어디쯤의 전압은 불투명합니다. 따라서 MCU와 외부 전압의 차가 없도록 하는 것이 가장 중요합니다.

USART/UART는 Idle High인 상태에서 Start bit가 발생하고 데이터 전송이 시작됩니다. 따라서 Idle일 경우 High상태로 유지 시켜주는 것이 필요한데, 이를 위해서 외부에 Pull-up을 달아줄 수도 있습니다. 만약 외부 Pull-up이 없는 상황에서 외부 디바이스의 전원 시퀀스가 다르다면 MCU는 첫번째 데이터 통신전에 Error를 발생시킬 수도 있습니다.

아래는 System bootloader에서 USART를 사용할 때 권장하는 Pull-up 회로도입니다.

2. 두번째는 MCU와 외부 디바이스간의 통신 시작시 보내는 Start 비트를 올바르게 인식 할 수 있는 최소 bit width입니다. 드문 경우이긴 하나 이것이 맞지 않으면 통신시 에러가 발생하게 됩니다. 이를 확인하기 위해서는 사용하려는 MCU와 통신하려는 외부 디바이스의 Specification을 확인하여야 합니다.

Falling edge를 시작으로 Start 비트 결정이 되는 것을 볼 수 있습니다. 16 또는 8로 오버샘플링할 때 Start 비트 감지 순서는 동일합니다. USART에서 특정 샘플 시퀀스가 인식되면 Start bit로 인지됩니다. 이 시퀀스는 1 1 1 0 X 0 X 0X 0X 0 X 0X 0 입니다.

이상입니다.