RS232

UART 통신 프로토콜 – 어떻게 작동합니까?

기하 2022. 2. 24. 11:21

https://www.codrey.com/embedded-systems/uart-serial-communication-rs232/

 

UART ( Universal Asynchronous Transmitter Receiver )는 전이중 직렬 통신 에 사용되는 가장 일반적인 프로토콜 입니다. 비동기 통신을 수행하도록 설계된 단일 LSI (대규모 통합) 칩입니다. 이 장치는 한 시스템에서 다른 시스템으로 데이터를 보내고 받습니다.

이 자습서에서는 UART 통신의 기본 사항과 UART의 작동을 배웁니다.

내용 [ 보여주기 ]

UART 란 무엇입니까?

"UART"는 범용 비동기식 수신기-송신기를 나타냅니다. 마이크로컨트롤러 내부에 있는 하드웨어 주변기기입니다. UART 의 기능은 들어오고 나가는 데이터를 직렬 바이너리 스트림으로 변환하는 것입니다. 주변기기로부터 수신된 8비트 직렬 데이터는 직렬-병렬 변환을 통해 병렬 형태로 변환되고, CPU로부터 수신된 병렬 데이터는 직렬-병렬 변환을 통해 변환된다. 이 데이터는 변조 형식으로 존재하며 정의된 전송 속도로 전송합니다.

UART가 사용되는 이유는 무엇입니까?

빠른 통신을 위해 SPI(Serial Peripheral Interface) 및 USB(Universal Serial Bus)와 같은 프로토콜이 사용됩니다. 고속 데이터 전송이 필요하지 않은 경우 UART가 사용됩니다. 송신기/수신기가 하나인 저렴한 통신기기입니다. 데이터를 전송하기 위한 단일 와이어와 수신을 위한 다른 와이어가 필요합니다.

UART 인터페이스

RS232-TTL 변환기 또는 USB-TTL 변환기를 사용하여 PC(개인용 컴퓨터)와 인터페이스할 수 있습니다. RS232 와 UART 의 공통점 은 둘 다 데이터를 송수신하는 데 클럭이 필요하지 않다는 것입니다. Uart 프레임은 1개의 시작 비트, 1 또는 2개의 정지 비트 및 직렬 데이터 전송을 위한 패리티 비트로 구성됩니다.

블록 다이어그램

UART는 다음과 같은 핵심 구성 요소로 구성됩니다. 그들은 송신기와 수신기입니다. 전송기는 전송 홀드 레지스터, 전송 시프트 레지스터 및 제어 로직으로 구성됩니다. 마찬가지로 수신기는 수신 홀드 레지스터, 수신기 시프트 레지스터 및 제어 로직으로 구성됩니다. 일반적으로 송신기와 수신기 모두 전송 속도 생성기와 함께 제공됩니다.

UART 블록 다이어그램

전송 속도 생성기는 송신기와 수신기가 데이터를 송수신해야 하는 속도를 생성합니다. 전송 보류 레지스터는 전송할 데이터 바이트를 포함합니다. 전송 시프트 레지스터와 수신기 시프트 레지스터는 데이터 바이트가 전송/수신될 때까지 비트를 왼쪽이나 오른쪽으로 시프트합니다.

이 외에도 읽기/쓰기 시점을 알려주는 읽기 또는 쓰기 제어 로직이 제공됩니다. 전송 속도 생성기는 110bps(초당 비트 수)에서 230400 사이의 속도를 생성합니다. 대부분의 마이크로컨트롤러는 더 빠른 데이터 전송을 위해 115200 및 57600과 같은 더 높은 전송 속도를 제공합니다. GPS 및 GSM 과 같은 장치 는 4800 및 9600에서 더 느린 전송 속도를 사용합니다.

UART는 어떻게 작동합니까?

UART의 작동을 알기 위해서는 직렬 통신 의 기본 기능을 이해해야 합니다 . 간단히 말해 송신기와 수신기는 시작 비트, 정지 비트 및 타이밍 매개변수를 사용하여 서로 동기화합니다. 원본 데이터는 병렬 형식입니다. 예를 들어 4비트 데이터가 있는데 직렬 형식으로 변환하려면 병렬-직렬 변환기가 필요합니다. 일반적으로 D 플립플롭 또는 래치는 컨버터를 설계하는 데 사용됩니다.

D 작업 – 플립플롭

기본 D 플립플롭

데이터 플립 플롭이라고도 하는 D 플립플롭 은 클럭이 하이 상태에서 로우 상태로 또는 로우 상태에서 하이 상태로의 전환을 변경할 때만 입력 측에서 출력 측으로 1비트를 이동합니다. 마찬가지로 4비트의 데이터를 전송하려면 4개의 플립플롭이 필요합니다.

참고: 여기,

' D '는 입력 데이터를 나타냅니다.

' CLK '는 클럭 펄스를 나타냅니다.

' Q '는 출력 데이터를 나타냅니다. 이제 병렬-직렬 및 직렬-병렬 변환기를 설계해 보겠습니다.

직렬 변환 병렬

직렬 변환 병렬

캐스케이드 연결 – 직렬에 병렬

1 단계:

플립플롭 4개를 가져갑니다. 플립플롭의 수는 전송할 비트 수와 동일합니다. 마찬가지로 각 플립플롭 앞에 멀티플렉서를 배치하되 첫 번째 플립플롭은 제외합니다. 멀티플렉서는 데이터를 결합하고 직렬 비트로 변환하기 위해 배치됩니다. 여기에는 두 개의 입력이 있습니다. 하나는 병렬 비트 데이터이고 다른 하나는 이전 플립플롭의 데이터입니다.

2 단계:

이제 D 플립플롭에 한 번에 데이터를 로드합니다. 병렬 데이터를 가져오고 마지막 플립플롭의 마지막 비트(4개)를 이동한 다음 세 번째 비트, 두 번째 비트, 마지막으로 첫 번째 비트를 이동합니다. 이제 병렬 데이터를 직렬 형태로 재변환하기 위해 직렬-병렬 변환기가 사용됩니다.

직렬에서 병렬로의 변환

직렬에서 병렬로의 변환

캐스케이드 연결 – 직렬에서 병렬로 변환

1 단계:

플립플롭 4개를 가져갑니다. 플립플롭의 수는 전송할 비트 수와 동일합니다.

2 단계:

처음에는 병렬 버스를 비활성화합니다. 모든 비트가 로드될 때까지 활성화하지 마십시오. 첫 번째 플립플롭의 입력에 데이터를 저장합니다. 이제 클록을 높이면 최하위 비트가 두 번째 플립플롭의 입력과 첫 번째 플립플롭의 출력으로 이동합니다. 마찬가지로 클럭 펄스를 높게 만들어 모든 비트를 하나씩 시프트합니다. 변환기는 모든 비트가 출력으로 전송될 때까지 홀드 상태에 있습니다.

3단계:

이제 각 플립플롭에는 1비트의 직렬 데이터가 포함됩니다. 모든 비트가 플립플롭 출력으로 전송되는 동안 버스를 활성화합니다. 이렇게 하면 변환기가 모든 비트를 한 번에 보내게 됩니다.

프로토콜 형식

UART는 시작 비트 '0'으로 통신을 시작합니다. 시작 비트는 직렬 데이터 전송을 시작하고 정지 비트는 데이터 트랜잭션을 종료합니다.

프로토콜 형식

또한 패리티 비트(짝수 또는 홀수)도 제공됩니다. 짝수 패리티 비트는 '0'(짝수 1)으로 표시되고 홀수 패리티 비트는 '1'(1의 홀수)로 표시됩니다.

전염

데이터 전송은 단일 전송 라인(TxD)을 사용하여 수행됩니다. 여기서 '0'은 공백으로 간주되고 '1'은 표시 상태로 알려져 있습니다.

전송 프레임

송신기는 한 번에 하나의 비트를 보냅니다. 한 비트를 보낸 후 다음 비트가 전송됩니다. 이러한 방식으로 모든 데이터 비트는 미리 정의된 전송 속도로 수신기로 전송됩니다. 각 비트를 전송하는 데 특정 지연이 있습니다. 예를 들어, 1바이트의 데이터를 9600 보드율로 전송하려면 각 비트가 108 µsec 지연으로 전송됩니다. 데이터는 패리티 비트와 함께 추가됩니다. 따라서 7비트의 데이터를 전송하려면 10비트의 데이터가 필요합니다.

참고 : 전송 시 항상 LSB(Least Significant Bit)가 먼저 전송됩니다.

리셉션

수신 중에는 RxD 라인(Receiver)을 사용하여 데이터를 수신합니다.

프레임 수신

UART 인터페이스의 예

이 예는 ESP8266 UART와 MAX232의 인터페이스를 보여줍니다. 그러나 인터페이스 세부 정보로 넘어가기 전에 Max232 드라이버의 핀 세부 정보를 공유하겠습니다.

MAX232 핀아웃

MAX232 IC는 232 레벨 전압을 구동하는 용량성 전압 발생기를 포함하는 5V 전원으로 전원이 공급됩니다. 드라이버(TIN, TOUT) 및 수신기(RIN 및 ROUT)라고도 하는 이중 송신기와 함께 제공됩니다.

여기서는 UART가 내장된 ESP8266(32비트 마이크로 컨트롤러)을 사용했습니다. RS232 -TTL 레벨 변환기(MAX232)를 통해 AT 명령을 사용하여 ESP8266과 통신할 수 있습니다 . 아래 그림은 ESP8266과 PC(퍼스널 컴퓨터)의 연결을 보여줍니다.

UART와 인터페이스하는 ESP8266

PC를 통해 유효한 AT 명령을 요청하면 Wi-Fi 칩이 승인으로 응답합니다. ESP8266에 대해 자세히 설명하고 싶지는 않으며 향후 자습서에서 설명할 것입니다.

다음은 PC와 직렬 통신 을 구현하는 단계 입니다.

  1. ESP8266의 송신기(TX)를 RS232의 수신기(TX)-TTL 레벨 변환기(MAX232)와 PC의 RX에 연결합니다.
  2. ESP8266의 수신기(RX)를 PC의 TX와 TTL 변환기의 RX에 연결합니다.

ESP8266 명령

AT 명령(PC에서 전송)ESP8266 응답(PC에서 수신)

AT<CR><LF> 확인<CR><LF>
AT+CIPMUX=1 확인<CR><LF>
AT+CIPSERVER=1,23<CR><LF> 확인<CR><LF>

아래 스크린샷은 ESP8266 모듈에서 제공한 응답을 보여줍니다.

ESP8266 명령 – 독라이트 프로그램

UART 대 USART

USART 는 UART의 기본 형태입니다. 기술적으로 그들은 동일하지 않습니다. 그러나 정의는 둘 다 동일합니다. 병렬 데이터를 직렬 비트로 또는 그 반대로 변환 하는 마이크로컨트롤러 주변 장치입니다.

UART와 USART의 주요 차이점은 UART는 비동기식 통신만 지원하는 반면 USART는 동기식 및 비동기식 통신을 지원한다는 것입니다. 이해를 돕기 위해 USART와 UART를 비교합니다.

UARTUSART

클럭은 마이크로컨트롤러에 의해 내부적으로 생성됩니다. 송신 장치는 시계를 생성합니다.
데이터 속도가 느립니다. 외부 클럭으로 인해 데이터 속도가 더 높습니다.
독립형 프로토콜 LIN, RS-485, IrDA, 스마트 카드 등과 같은 여러 프로토콜을 지원합니다.
전송 속도는 전송 전에 알아야 합니다. 전송 속도를 더 일찍 알 필요가 없습니다.
저속 통신에 적합 고속 통신에 적합합니다.
에너지 발자국 감소. 높은 에너지 소비 동안 직렬 통신 처리

RS232 및 UART

논리 레벨 은 장치가 안전 영역에서 작동하기 위해 견딜 수 있는 작동 전압 레벨을 나타냅니다. RS232 및 TTL 의 전압 레벨은 다음과 같습니다 .

RS232 논리:

RS232 전압 레벨

논리 수준전압 범위

로직 High 또는 OFF 출력 -5V ~ -15V
로직 로우 또는 ON 출력 +5V ~ +15V
로직 하이 또는 OFF 입력 -3V ~ -15V
로직 로우 또는 ON 입력 +3V ~ +15V

대부분의 경우 RS232 레벨 범위는 -12V ~ +12V입니다. 예를 들어, RS232에서 문자 ' A '에 대한 ASCII 값 은 65이고 16진법에서는 41입니다. 따라서 8비트 바이너리 형식에서는 0100 0001입니다. RS232 신호는 역논리로 표현됩니다. 논리 레벨 '0'은 '1'로 표시되고 논리 레벨 '1'은 '0'으로 표시됩니다. RS232의 데이터 전송은 시작 비트(0)로 시작하여 8개의 데이터 비트(LSB 우선)와 정지 비트가 뒤따릅니다.

다음은 ASCII ' A ' 에 대한 RS232 논리 레벨의 표현을 보여줍니다 .

ASCII 문자 A용 RS232 신호

TTL/CMOS 로직:

UART는 TTL 논리에서 작동합니다. TTL의 전압 레벨 범위는 0~5V이며 반전 없이 표시됩니다.

ASCI 문자 A에 대한 TTL CMOS 신호

  • 초기에 직렬 라인은 일반적으로 Mark stat e (Logic 1) 라고 하는 유휴 상태에 있습니다. 이제 데이터 전송은 시작 비트(논리 0)로 시작됩니다.
  • 또한 8개의 데이터 비트가 LSB(최하위 비트)를 먼저 사용하여 직렬 라인을 통해 차례로 전송됩니다.
  • 전체 전송이 끝난 후 정지 비트(논리 1)가 발생합니다.

장점

UART의 장점은 두 개의 와이어를 사용하여 전이중 통신을 지원한다는 것입니다. 또한 데이터 통신을 위한 외부 클럭이 필요하지 않습니다. 패리티 비트를 이용한 오류 검사를 지원하며 데이터의 길이를 쉽게 변경할 수 있습니다.

단점

UART의 주요 단점은 다중 슬레이브 또는 다중 마스터 구성을 지원하지 않는다는 것입니다. 그리고 데이터 패킷의 크기는 9비트로 제한된다. UART는 높은 에너지 소비 동안 무거운 리프팅 직렬 통신에 적합하지 않습니다.

애플리케이션

  1. 직렬 디버그 포트 는 UART 드라이버를 사용하여 외부 세계에서 오는 데이터를 인쇄합니다.
  2. 이를 사용하여 임베디드 장치와 명령을 주고받을 수 있습니다.
  3. GPS , GSM /GPRS 모뎀, Wi-Fi 칩 등의 통신은 UART로 작동합니다.
  4. 메인프레임 액세스에서 다른 컴퓨터를 연결하는 데 사용됩니다.