산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 임베디드

UART 이해

UART 또는 범용 비동기 수신기-송신기는 가장 많이 사용되는 장치 간 통신 프로토콜 중 하나입니다. 이 문서는 표준 절차에 따라 UART를 하드웨어 통신 프로토콜로 사용하는 방법을 보여줍니다.

올바르게 구성되면 UART는 직렬 데이터 전송 및 수신과 관련된 다양한 유형의 직렬 프로토콜과 함께 작동할 수 있습니다. 직렬 통신에서 데이터는 단일 라인 또는 와이어를 사용하여 비트 단위로 전송됩니다. 양방향 통신에서는 성공적인 직렬 데이터 전송을 위해 두 개의 와이어를 사용합니다. 애플리케이션 및 시스템 요구 사항에 따라 직렬 통신은 더 적은 회로와 전선을 필요로 하므로 구현 비용이 절감됩니다.

이 기사에서는 특히 코드 개발 중에 구현될 때 보안 준수를 위한 부가 가치 기능인 패킷 전송, 표준 프레임 프로토콜 및 맞춤형 프레임 프로토콜에 중점을 두고 UART를 사용할 때의 기본 원칙에 대해 논의합니다. 제품 개발 중에 이 문서는 실제 사용을 위해 데이터 시트에서 확인할 때 몇 가지 기본 단계를 공유하는 것을 목표로 합니다.

이 기사의 끝에서 목표는 특히 신제품을 개발할 때 UART 표준을 더 잘 이해하고 준수하여 기능과 응용 프로그램을 극대화하는 것입니다.

"커뮤니케이션의 가장 큰 문제는 그것이 일어났다는 착각입니다."

—조지 버나드 쇼

통신 프로토콜은 장치 간의 통신을 구성하는 데 큰 역할을 합니다. 시스템 요구 사항에 따라 다양한 방식으로 설계되었으며 이러한 프로토콜에는 성공적인 통신을 달성하기 위해 장치 간에 합의된 특정 규칙이 있습니다.

임베디드 시스템, 마이크로 컨트롤러 및 컴퓨터는 대부분 UART를 장치 대 장치 하드웨어 통신 프로토콜의 한 형태로 사용합니다. 사용 가능한 통신 프로토콜 중 UART는 송수신단에 두 개의 전선만 사용합니다.

하드웨어 통신 프로토콜의 널리 사용되는 방법임에도 불구하고 항상 완전히 최적화된 것은 아닙니다. 마이크로컨트롤러 내부에서 UART 모듈을 사용할 때 프레임 프로토콜의 적절한 구현은 일반적으로 무시됩니다.

정의에 따르면 UART는 구성 가능한 속도로 비동기 직렬 통신을 사용하는 하드웨어 통신 프로토콜입니다. 비동기식이란 송신 장치에서 수신 측으로 가는 출력 비트를 동기화하기 위한 클록 신호가 없음을 의미합니다.

인터페이스


그림 1. 두 UART가 서로 직접 통신합니다.

각 UART 장치의 두 신호 이름은 다음과 같습니다.

각 기기별 송수신 라인의 주요 목적은 시리얼 통신을 위한 시리얼 데이터를 송수신하는 것입니다.


그림 2. 데이터 버스가 있는 UART.

전송 UART는 병렬 형식으로 데이터를 보내는 제어 데이터 버스에 연결됩니다. 이로부터 데이터는 전송 라인(유선)을 통해 비트 단위로 수신 UART로 직렬로 전송됩니다. 이것은 차례로 수신 장치에 대해 직렬 데이터를 병렬로 변환합니다.

UART 라인은 하나의 데이터를 다른 데이터로 전송 및 수신하는 통신 매체 역할을 합니다. UART 장치에는 전송 또는 수신 전용 전송 및 수신 핀이 있습니다.

UART 및 대부분의 직렬 통신의 경우 전송 속도는 전송 장치와 수신 장치 모두에서 동일하게 설정되어야 합니다. 전송 속도는 정보가 통신 채널로 전송되는 속도입니다. 직렬 포트 컨텍스트에서 설정된 전송 속도는 전송될 초당 최대 비트 수로 사용됩니다.

표 1은 UART에 대해 알아야 할 사항을 요약한 것입니다.

표 1. UART 요약

Wires2Speed9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1500000전송 방식비동기식최대1 마스터 수1

UART 인터페이스는 클록 신호를 사용하여 송신기와 수신기 장치를 동기화하지 않습니다. 데이터를 비동기적으로 전송합니다. 클럭 신호 대신 송신기는 클럭 신호를 기반으로 비트스트림을 생성하고 수신기는 내부 클럭 신호를 사용하여 들어오는 데이터를 샘플링합니다. 동기화 지점은 두 장치에서 동일한 전송 속도를 사용하여 관리됩니다. 그렇게 하지 않으면 데이터를 보내고 받는 타이밍에 영향을 주어 데이터 처리 중에 불일치를 일으킬 수 있습니다. 전송 속도의 허용 차이는 비트 타이밍이 너무 멀어지기 전에 최대 10%입니다.

데이터 전송

UART에서 전송 모드는 패킷 형태입니다. 송신기와 수신기를 연결하는 부분에는 직렬 패킷 생성이 포함되며 물리적 하드웨어 라인을 제어합니다. 패킷은 시작 비트, 데이터 프레임, 패리티 비트 및 정지 비트로 구성됩니다.


그림 3. UART 패킷.

시작 비트

UART 데이터 전송 라인은 일반적으로 데이터를 전송하지 않을 때 고전압 레벨로 유지됩니다. 데이터 전송을 시작하기 위해 전송 UART는 한(1) 클럭 주기 동안 전송 라인을 하이에서 로우로 당깁니다. 수신 UART가 고전압에서 저전압으로의 전환을 감지하면 전송 속도의 주파수에서 데이터 프레임의 비트를 읽기 시작합니다.


그림 4. 시작 비트

데이터 프레임

데이터 프레임에는 전송 중인 실제 데이터가 포함됩니다. 패리티 비트가 사용되는 경우 길이는 5비트에서 최대 8비트일 수 있습니다. 패리티 비트가 사용되지 않는 경우 데이터 프레임은 9비트 길이가 될 수 있습니다. 대부분의 경우 데이터는 최하위 비트부터 먼저 전송됩니다.


그림 5. 데이터 프레임.

패리티

패리티는 숫자의 짝수 또는 홀수를 나타냅니다. 패리티 비트는 수신 UART가 전송 중에 변경된 데이터가 있는지 알려주는 방법입니다. 비트는 전자기 복사, 일치하지 않는 전송 속도 또는 장거리 데이터 전송으로 인해 변경될 수 있습니다.

수신 UART는 데이터 프레임을 읽은 후 값이 1인 비트 수를 계산하고 합계가 짝수인지 홀수인지 확인합니다. 패리티 비트가 0(짝수 패리티)이면 데이터 프레임의 1 또는 논리 상위 비트의 합계가 짝수가 되어야 합니다. 패리티 비트가 1(홀수 패리티)이면 데이터 프레임의 1비트 또는 논리 하이의 합계가 홀수여야 합니다.

패리티 비트가 데이터와 일치하면 UART는 전송에 오류가 없음을 알고 있습니다. 그러나 패리티 비트가 0이고 합계가 홀수이거나 패리티 비트가 1이고 합계가 짝수이면 UART는 데이터 프레임의 비트가 변경되었음을 압니다.


그림 6. 패리티 비트

정지 비트

데이터 패킷의 끝을 알리기 위해 송신 UART는 1~2비트 기간 동안 데이터 전송 라인을 저전압에서 고전압으로 구동합니다.


그림 7. 정지 비트

UART 전송 단계

첫째:송신 UART는 데이터 버스에서 병렬로 데이터를 수신합니다.


그림 8. UART를 전송하는 데이터 버스

두 번째:전송 UART는 데이터 프레임에 시작 비트, 패리티 비트 및 정지 비트를 추가합니다.


그림 9. Tx 측의 UART 데이터 프레임.

세 번째:전체 패킷은 시작 비트에서 시작하여 전송 UART에서 수신 UART로 연속적으로 전송됩니다. 수신 UART는 사전 구성된 전송 속도로 데이터 라인을 샘플링합니다.


그림 10. UART 전송.

넷째:수신 UART는 데이터 프레임에서 시작 비트, 패리티 비트 및 정지 비트를 버립니다.


그림 11. Rx 측의 UART 데이터 프레임.

다섯 번째:수신 UART는 직렬 데이터를 다시 병렬로 변환하여 수신 측의 데이터 버스로 전송합니다.


그림 12. UART를 데이터 버스로 수신

프레임 프로토콜

UART에서 사용할 수 있지만 아직 완전히 사용되지 않는 주요 기능 중 하나는 프레임 프로토콜의 구현입니다. 이것의 주요 용도와 중요성은 각 장치의 보안 및 보호에 대한 부가 가치입니다.

예를 들어 두 기기가 동일한 UART 프레임 프로토콜을 사용하는 경우 구성을 확인하지 않고 동일한 UART에 연결할 경우 기기가 서로 다른 핀에 연결되어 시스템 오작동을 일으킬 수 있는 경향이 있습니다.

반면에, 이것을 구현하면 디자인 프레임 프로토콜에 따라 수신된 정보를 구문 분석할 필요가 있기 때문에 보안이 보장됩니다. 각 프레임 프로토콜은 고유하고 안전하도록 특별히 설계되었습니다.

프레임 프로토콜을 설계할 때 설계자는 CRC를 비롯한 원하는 헤더와 트레일러를 다른 장치로 설정할 수 있습니다. 그림 13에서는 헤더의 일부로 2바이트가 설정되어 있습니다.

두 번째:메모리 맵에서 UART 주소를 확인합니다.


그림 13. 샘플 UART 프레임 프로토콜.

샘플을 기반으로 장치에 고유한 헤더, 트레일러 및 CRC를 설정할 수 있습니다.

헤더 1(H1은 0xAB) 및 헤더 2(H2는 0xCD)

헤더는 통신 중인지 여부를 결정하는 고유 식별자입니다.

올바른 장치입니다.

명령(CMD) 선택

명령은 두 장치 간의 통신을 생성하도록 설계된 명령 목록에 따라 다릅니다.

명령당 데이터 길이(DL)

데이터 길이는 선택한 명령을 기반으로 합니다. 선택한 명령에 따라 데이터의 길이를 최대화할 수 있으므로 선택에 따라 달라질 수 있습니다. 이 경우 데이터 길이를 조정할 수 있습니다.

데이터 n(가변 데이터)

데이터는 기기에서 전송되는 페이로드입니다.

예고편 1(T1은 0xE1) 및 예고편 2(T2는 0xE2)

예고편은 전송이 종료된 후 추가되는 데이터입니다. 헤더와 마찬가지로 고유하게 식별할 수 있습니다.

순환 중복 검사(CRC 공식)

순환 중복 검사 공식은 원시 데이터에 대한 우발적인 변경을 감지하기 위해 추가된 오류 감지 모드입니다. 송신 장치의 CRC 값은 항상 수신기 측의 CRC 계산과 동일해야 합니다.

각 UART 장치에 대해 프레임 프로토콜을 구현하여 보안을 추가하는 것이 좋습니다. 프레임 프로토콜은 송신 장치와 수신 장치 모두에서 동일한 구성이 필요합니다.

UART 작업

하드웨어 통신 프로토콜을 사용할 때는 데이터 시트와 하드웨어 참조 매뉴얼을 확인하는 것이 전제 조건입니다.

따라야 할 단계는 다음과 같습니다.

첫째:장치의 데이터 시트 인터페이스를 확인하십시오.


그림 14. 마이크로컨트롤러 데이터 시트.


그림 15. 마이크로컨트롤러 메모리 맵.

셋째:작동 모드, 데이터 비트 길이, 패리티 비트 및 정지 비트와 같은 UART PORT에 대한 특정 세부 정보를 확인합니다. 데이터 시트의 샘플 UART 포트 세부정보:

UART 포트
샘플 MCU는 PC 표준 UART와 완전히 호환되는 전이중 UART 포트를 제공합니다. UART 포트는 전이중, DMA 및 직렬 데이터의 비동기 전송을 지원하는 다른 주변 장치 또는 호스트에 대한 단순화된 UART 인터페이스를 제공합니다. UART 포트는 5~8개의 데이터 비트와 없음, 짝수 또는 홀수 패리티에 대한 지원을 포함합니다. 프레임은 1.5비트 또는 2개의 정지 비트로 종료됩니다.

넷째:전송 속도 계산을 포함하여 UART 작업 세부 정보를 확인합니다. 전송 속도는 다음 샘플 공식을 사용하여 구성됩니다. 이 공식은 마이크로컨트롤러에 따라 다릅니다.

UART 작업의 샘플 세부정보:

어디,

OSR(오버샘플링 속도)
UART_LCR2.OSR =0 ~ 3
DIV(전송 속도 분배기)
UART_DIV =1 ~ 65535
M(DIVM fractional baud rate M)
UART_FBR.DIVM =1 ~ 3
N(DIVM fractional baud rate M)
UART_FBR.DIVN =0 ~ 2047

다섯째, Baud rate는 어떤 Peripheral clock(PCLK)을 사용할 것인지 확인한다. 이 예에서는 26MHz PCLK와 16MHz PCLK를 사용할 수 있습니다. OSR, DIV, DIVM 및 DIVN은 기기마다 다릅니다.

표 2. 26MHz PCLK를 기반으로 한 전송 속도 예

전송 속도 OSR DIV DIVM DIVN 9600324310781152003411563

표 3. 16MHz PCLK를 기반으로 한 전송 속도 예

전송 속도 OSR DIV DIVM DIVN 960031731078115200322348

여섯 번째:다음 부분은 UART 구성에 대한 세부 레지스터를 확인하는 것입니다. UART_LCR2, UART_DIV 및 UART_FBR과 같은 전송 속도를 계산하는 매개변수를 살펴보십시오. 표 4는 다룰 특정 레지스터로 이어집니다.

표 4. UART 레지스터 설명

이름 설명 UART_DIV보드율 분배기UART_FIBRF분할 보드율UART_LCR2Second 라인 제어

일곱 번째:각 레지스터 아래에서 세부 정보를 확인하고 값을 대체하여 전송 속도를 계산한 다음 UART 구현을 시작합니다.

중요한 이유는 무엇입니까?

UART 통신 프로토콜에 대한 지식은 견고하고 품질 중심적인 제품을 개발할 때 유리합니다. 두 개의 전선만 사용하여 데이터를 보내는 방법과 전체 데이터 팩 또는 페이로드를 전송하는 방법을 알면 데이터가 오류 없이 전송 및 수신되도록 하는 데 도움이 됩니다. UART는 가장 일반적으로 사용되는 하드웨어 통신 프로토콜이기 때문에 이 지식은 향후 설계에서 설계 유연성을 가능하게 할 수 있습니다.

사용 사례

다음과 같은 많은 애플리케이션에 UART를 사용할 수 있습니다.

참조

“UART 통신의 기초.” 전자 허브, 2017년 7월.

캠벨, 스콧. “UART 통신의 기초.” 회로 기본 사항 . 킴, 로버트.

"기본으로 돌아가기:범용 비동기식 수신기/송신기." 회로에 관한 모든 것 , 2016년 12월.

“UART 프로토콜이란? UART 통신에 대해 설명했습니다.” 화살표.


임베디드

  1. 샤프트 제조 공정 이해
  2. 클라우드 문화의 중요성 이해
  3. 예측 유지보수의 이점 이해
  4. 밀링 머신의 기본 이해
  5. 절단선을 길이로 자르기 이해하기
  6. 다양한 유형의 잔류 응력 이해
  7. 쇼크 업소버의 작동 이해
  8. 다양한 유형의 유체 흐름 이해
  9. 커플링 용어 이해
  10. 재료의 유연성 이해