직렬 통신 프로토콜 - 파트 투: UART

Mark Harris
|  작성 날짜: 사월 14, 2021
직렬 통신 프로토콜 - UART

이 기사에서는 인기 있는 UART 장치를 살펴볼 것입니다. 이것은 통신 프로토콜이 아니라 마이크로컨트롤러나 독립형 IC에서 직렬 데이터를 송수신하는 데 사용되는 물리적 회로입니다. 우리가 제공한 다양한 종류의 직렬 통신 프로토콜을 살펴보는 일련의 기사를 지원합니다.

직렬 통신은 마이크로컨트롤러, 데이터를 생성하는 주변 장치, 그리고 다른 스마트 장치 간에 정보를 전송하는 데 완벽한 메커니즘입니다. 다음에 직렬 통신 버스를 통합해야 할 때 이 자료가 귀중한 자원이 되기를 바랍니다. UART는 흔히 장치의 직렬 포트로도 불립니다. 그러나, 이는 DB9 스타일 커넥터를 사용하고 하드웨어 프로토콜로 RS-232를 사용하는 또 다른 종류의 직렬 포트와 혼동될 수 있습니다. 마이크로컨트롤러의 UART 주변 장치와 RS-232 기반 장치가 서로 통신하기 위해 UART가 RS-232 트랜시버에 연결되는 것은 드문 일이 아닙니다.

UART는 Universal Asynchronous Receiver Transmitter를 의미합니다. 이 통신 시스템은 접지를 제외하고 두 개의 핀이 필요합니다. 하나는 TX, 즉 송신기로 표시되고 다른 하나는 RX, 즉 수신기로 표시됩니다. 이름에 비동기라는 단어가 나타나는 것은 클록 신호가 필요하지 않다는 것을 의미합니다. 클록이 없기 때문에 송신 및 수신 장치는 동일한 보드레이트를 사용해야 합니다.

보드레이트(Bd)는 전송률의 측정 단위입니다. 이 매개변수는 송신기와 수신기의 데이터 채널에서의 통신 속도를 결정합니다. 보드레이트는 초당 비트 수로 표현될 수 있어 더 단순해집니다. 따라서 1000 Bd의 속도는 통신 속도가 초당 1000비트, 또는 한 비트의 지속 시간이 1/1000초 또는 1밀리초임을 의미합니다. 보드레이트는 kBd(킬로보드), MBd(메가보드), GBd(기가보드)와 같은 표준 메트릭 접두사를 가지고 있습니다. 보드레이트는 시작 및 정지 비트와 같은 메시지의 비데이터 부분을 포함하므로 송신기에서 수신기로 전송된 유용한 정보의 전송률은 약간 더 적을 것입니다.

더 인기 있는 사전 정의된 UART 보드레이트에는 다음이 포함됩니다:

  • 110 보드
  • 300 보드
  • 1200 보드
  • 4800 보드
  • 9600 보드
  • 19200 보드
  • 38400 보드
  • 115200 보드

때로는 통신하는 두 장치의 보드레이트를 조정할 수 있지만, 때로는 한 장치의 보드레이트가 고정되어 있어 다른 장치가 이에 맞춰 변경해야 할 수도 있습니다.

따라서 UART를 사용하여 두 장치를 연결하려면 송신기 TX 핀을 수신기 RX 핀에 연결해야 합니다:

UART

기본 UART 배선에는 TX, RX, 그라운드가 포함됩니다

일부 구성에서는 두 장치 모두에 RX 및 TX 핀이 있어 마이크로컨트롤러에서 전용 IC로 명령을 보내고 다른 방향으로 명령이나 정보를 받을 수 있습니다. 이를 듀플렉스 연결이라고 합니다. 또한 두 번째 장치로부터의 피드백이 필요하지 않은 응용 프로그램도 있습니다. 따라서 통신은 한 방향으로만 필요하므로 TX에서 RX로의 단일 전송 라인만 필요합니다. 이를 심플렉스 연결이라고 합니다.

UART

전송 장치는 수신 장치로 통신을 시작하기 위해 시작 비트를 보내야 합니다. 이 비트는 수신 장치에 통신이 시작되었음을 알립니다.

UART

UART 장치가 시작 비트를 보냅니다(통신 시작)

그런 다음 데이터 비트는 실제 데이터를 나타내는 8비트 스트림으로 전송되며, 가장 중요한 비트(MSB)는 D7로 표시되고, 가장 중요하지 않은 비트(LSB)는 D0으로 표시됩니다.

UART

UART 통신에서 첫 번째 장치는 첫 번째 시작 비트 이후에 데이터 비트를 전송합니다.

그리고 이 데이터 비트의 끝에서, 송신기는 이것이 메시지의 끝임을 나타내는 정지 비트를 전송하고 UART 버스를 유휴 모드로 전환합니다.

UART

UART

UART 통신에서 첫 번째 장치는 데이터 비트 후에 정지 비트를 전송합니다.

이 경우에 볼 수 있듯이, 완전한 UART 메시지는 10비트로 구성됩니다. 유휴 모드에서 UART 버스는 높게 당겨지며, 낮은 시작 비트를 전송하고 그 후에 8개의 데이터 비트가 오며, 그 다음에 정지 비트가 옵니다. 정지 비트는 단지 하나의 비트로 제한되지 않으며, 통신 속도에 따라 다양한 구성으로 올 수 있습니다. 이 구성은 전체 메시지 비트 세트가 버스 신호 전압 수준을 적어도 한 번은 낮게에서 높게 변화시킨다는 것을 의미합니다:

Sampling Points

UART 직렬 통신 패키지의 예

가장 중요한 비트 D7은 패리티 비트로도 사용될 수 있습니다. 이 비트는 통신의 가장 작은 블록에서 나타나는 기본적인 오류 검사 메커니즘을 제공합니다. 패리티 비트는 코딩에 따라 전체 높은 비트 수 또는 1의 수가 홀수이거나 짝수인지를 확인하는 데 사용될 수 있습니다. 짝수 패리티 검사의 경우, 데이터 비트 D0부터 D6까지 설정되어 있고, 짝수 개의 높은 비트를 포함하고 있다면, 패리티 비트는 0(낮음)으로 설정됩니다. 반대로, 이 비트 세트가 홀수 개의 높은 비트를 가지고 있다면, 패리티 비트는 1(높음)로 설정됩니다. 이는 메시지의 전체 높은 비트 수가 짝수가 될 것임을 보장합니다. 홀수 패리티 검사의 경우, 데이터 비트 D0부터 D6까지 짝수 개의 높은 비트를 포함하도록 설정되어 있다면, 패리티 비트는 1(높음)로 설정됩니다. 반대로, 이 비트 세트가 홀수 개의 높은 비트를 가지고 있다면, 패리티 비트는 0(낮음)으로 설정됩니다. 이는 메시지의 전체 높은 비트 수가 홀수가 될 것임을 보장합니다.

따라서 패리티 비트를 사용함으로써, 설정된 비트를 확인함으로써 오류를 감지할 수 있습니다. 패리티 비트를 포함한 전체 비트 수가 올바르지 않게 설정되어 있다면, 수신자는 전송 중 오류를 감지할 수 있게 됩니다. 그러나 이러한 유형의 오류 보호는 오류를 수정할 수는 없고, 오류가 발생했다는 것만을 감지할 수 있습니다. 전체 비트 세트 중 어느 비트가 잘못되었는지를 결정할 방법이 없기 때문입니다. 잘못된 상태인 비트가 하나만 있을 경우에만 감지할 수 있으며, 전체 패리티가 올바르게 끝나면 여러 비트에 영향을 미치는 오류는 감지되지 않을 수 있습니다.

패리티 오류가 감지되면, 전체 메시지를 폐기하고 처음부터 다시 전송해야 합니다. 높은 간섭이나 노이즈 수준의 경우, 성공적인 전송을 달성하는 데 상당한 시간이 걸릴 수 있지만, 메시지 오류를 방지하는 데 도움이 됩니다.

또한, UART 통신의 수신 및 송신 측은 성공적인 통신을 위해 정확히 동일한 보드율과 문자 길이, 패리티 메커니즘, 그리고 스톱 비트 구성을 사용해야 합니다.

UART의 변형 중 하나로 USART라고 불리는 것이 있습니다. 이것은 범용 동기 비동기 수신기 전송기입니다. 데이터가 클록에 의해 동기화될 때는 동기 채널로, 그렇지 않을 때는 비동기 채널로 (UART와 마찬가지로) 작동할 수 있습니다. 클록은 데이터 자체에서 회수되거나 별도의 외부 신호로 전송될 수 있습니다.

USART를 동기 모드로 사용할 때는 시작 및 정지 비트가 필요 없습니다. 이는 비트 타이밍이 클록 참조를 가지고 있기 때문에 동기적으로 작동할 때 더 높은 데이터 속도를 사용할 수 있게 해줍니다. 따라서 시작/정지 비트에 사용되는 대신 더 많은 비트를 데이터에 사용할 수 있습니다.

 

UART

USART 통신 예

UART

USART

UART는 데이터 신호만 필요합니다

USART 동기 모드는 데이터와 클록 모두를 필요로 합니다.

UART에서는 데이터를 고정된 속도로 전송할 필요가 없습니다.

USART 동기 모드에서는 데이터가 고정된 속도로 전송됩니다.

UART에서는 데이터가 일반적으로 한 번에 1바이트씩 전송됩니다.

USART에서는 동기 데이터가 일반적으로 데이터 블록 형태로 전송됩니다.

UART에서 데이터 전송 속도는 4800, 9600, 38400bps 등과 같은 특정 값 주변으로 설정됩니다.

USART에서 동기 모드는 모든 다른 요소가 일정하게 유지되는 경우 비동기 모드보다 더 높은 DTR(데이터 전송 속도)을 허용합니다.

UART 속도는 대략 115200bps로 제한됩니다.

USART는 115kbps보다 빠른 속도를 달성할 수 있습니다.

전이중 통신: 데이터를 동시에 양방향으로 전송할 수 있습니다.

반이중 통신: 데이터를 한 번에 한 방향으로만 전송할 수 있습니다.

UART와 USART의 주요 목적은 PC 버스 라인의 병렬 데이터를 RS-232나 RS-485와 같은 직렬 통신 프로토콜 표준을 준수하는 버스를 사용하여 라인 드라이버를 통해 전송할 수 있는 직렬 데이터로 변환하는 것입니다. UART/USART와 외부 버스 사이의 인터페이스를 위해서는 변환기가 필요합니다. 이를 통해 데이터를 유사한 장치에서 읽을 수 있게 되며, 두 장치가 정확히 동일한 직렬 데이터 형식을 사용할 필요는 없습니다. 두 장치 간의 전송이 공통으로 지원되는 표준 프로토콜에 맞는다면, 각 장치 내의 직렬 통신 구현은 해당 장치에 특화될 수 있습니다.

UART는 컴퓨터 시장에서 USB에 의해 대체되었지만, 저비용 장치에서 직렬 통신을 위해 여전히 널리 사용되고 있습니다.

요약

이 기사에서는 인기 있는 UART 장치 기능 중 일부를 살펴보고 그 장점과 구현 세부 사항에 대해 논의했습니다. 다음 기사에서, 직렬 통신 프로토콜 - 파트 쓰리: RS-232, 우리는 사용 가능한 몇 가지 직렬 통신 프로토콜을 살펴볼 것입니다. 무언가를 놓쳤나요? 직렬 통신 프로토콜

소개를 확인해 보세요. Altium Designer®의 설계 도구에는 새로운 기술을 따라잡기 위해 필요한 모든 것이 포함되어 있습니다. 오늘 저희에게 연락하여 다음 PCB 설계를 향상시킬 수 있는 방법을 알아보세요.

작성자 정보

작성자 정보

Mark Harris is an engineer's engineer, with over 16 years of diverse experience within the electronics industry, varying from aerospace and defense contracts to small product startups, hobbies and everything in between. Before moving to the United Kingdom, Mark was employed by one of the largest research organizations in Canada; every day brought a different project or challenge involving electronics, mechanics, and software. He also publishes the most extensive open source database library of components for Altium Designer called the Celestial Database Library. Mark has an affinity for open-source hardware and software and the innovative problem-solving required for the day-to-day challenges such projects offer. Electronics are passion; watching a product go from an idea to reality and start interacting with the world is a never-ending source of enjoyment. 

You can contact Mark directly at: mark@originalcircuit.com

관련 자료

홈으로 돌아가기
Thank you, you are now subscribed to updates.