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

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

etc-image-0

위는 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와 외부 전압의 차가 없도록 하는 것이 가장 중요합니다.

etc-image-1

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

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

etc-image-2

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

etc-image-3

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

이상입니다.