두 UART는 어떤 전송 속도를 사용해야하는지 어떻게 알 수 있습니까?


14

UART의 표준 프로토콜에 대해 읽고 있는데 수신 UART가 데이터 전송 속도에 대해 전혀 모른다면 많은 문제가있을 것이라고 생각합니다. 추정 보오율이 데이터가 전송되는 보오율보다 낮 으면, 수신 UART에 의해 '보이지 않는'비트가있을 것이다. 반면에 수신기가 사용하는 전송 속도가 데이터가 전송되는 전송 속도보다 높으면 비트가 두 번 계산되어 데이터가 잘못 읽혀질 수 있습니다.

UART에 대한 나의 지식은 라인이 유휴 상태 일 때 '1'로 유지되고 시작 비트는 '0'이고 정지 비트는 '1'이라는 것입니다. 또한 정지 비트가 '1'인 경우 회선이 유휴 상태이거나 차별화하는 방법이있을 때 '1'과 차이가 없습니까?

두 통신 UART가 처음 사용할 전송 속도에 동의합니까? 그렇다면 어떻게합니까?


"정지 비트"는 "유휴 상태로 복귀"라고 칭할 수도 있지만, 비트를 조금만 설정하면 정의 된 최소 길이를 갖지만 보장 된 최소 시간이 지나면 라인은 "1"상태로 유지됩니다. 다음 캐릭터가 등장합니다.
피터 베넷

XD가 작동 할 때까지 공통 보오율을 임의로 변경할 수 있습니다.
Bradman175

3
Hayes는 모뎀의 UART가 명령 시작시 문자 시퀀스 'AT'를 사용하여 터미널과 통신하는 것과 동일한 전송 속도를 설정하는 방법을 시작했습니다. 이것은 일반적으로 UART에 의해 디코딩되지 않았지만 실시간 펌웨어에 의해 나머지 명령 행을 수신하도록 UART를 구성합니다. 기본적으로 시작 비트의 너비와 패리티 설정 방법을 감지했습니다.
16:28에

@infix UART 용 Verilog 코드를 수정하거나 만들 계획이라면이 'AT'시퀀스를 감지하여 전송 속도를 조정하도록 만들 수 있습니까? 가장 높은 전송 속도로 초기화하여 모든 것을 캡처하고 거기에서 'AT'시퀀스를 찾을 생각이었습니다.
Batibot323

자동차 산업에서 많이 볼 수있는 UART 기반 통신 프로토콜 (LIN이라고 함)에는 자동 전송 감지 메커니즘이 있지만 마스터 및 슬레이브 노드는 여전히 데이터 길이와 정지 비트 길이와 일치해야합니다. 즉, 전송 속도 만 감지하는 것만으로는 충분하지 않습니다.
Rohat Kılıç

답변:


26

일반적인 UART는 전통적으로 사람이 원하는 전송 속도 (워드 길이, 정지 비트, 패리티 등)로 사전 구성해야합니다.

수십 년 동안 현재 일부 설정에서 "자동 보오"검출이 구현되어 왔는데, 이는 일반적으로 보오율을 추론하기 위해 파형의 주요 기능을 타이밍하여 작동합니다. 초기 버전은 알려진 문자를 전송해야했지만보다 복잡한 버전은 더 임의의 데이터에서 속도를 찾을 수 있습니다.

수신 UART에는 일반적으로 전송 속도가 8 ~ 16 배 빠른 속도로 실행되는 로컬 클럭이 있습니다. 이것은 들어오는 신호를 샘플링하고 몇 퍼센트의 오차를 견딜 수있는 방식으로 워드 내의 비트를 감지하는 데 사용됩니다. 두 개의 수정 발진기조차도 속도와 완벽하게 일치하지는 않지만 오류 허용 오차로 인해 트림 된 온칩 발진기 등을 포함하여 덜 정확한 소스를 사용할 수 있습니다. 또한 일반적인 오실레이터 주파수를 나누면 특정 보오율에 대한 부정확 한 근사-예전에는 UART 마스터 클럭이 인기 보오율에 액세스하기 위해 특정 주파수가 필요했습니다 (예 : 8051 제품군의 11.0592 MHz).


2
자동 보오 감지에 대한 나의 가설은 에지와 에지 사이의 시간을 찾기 위해 타이머와 카운터가 동시에 작동 할 수 있습니까?
ammar.cma

1
문제는 임의의 "uart serial"파형을 가져와 보드 율을 안정적으로 결정할 수있는 알고리즘이 없다는 것입니다. 전환 사이의 최소 시간을 쉽게 찾을 수 있지만 단일 비트 기간을 의미하지는 않습니다.
Peter Green

알고리즘이 존재합니다 (다양한 장소에서 "자동 보딩"이라고 들었습니다). UART 칩의 리소스 제한 범위에서 구현 될 때 전송되는 데이터 중 일부를 소비하여 나머지 세션 동안 지속될 교정에 사용합니다. 이것은 종종 바람직하지 않습니다. 소프트웨어에서 수행하고 약간의 대기 시간을 허용한다면 최소한 저속 통신 (200KB / s 미만)에 대해 데이터를 소비하지 않고 (분석을 위해 임시 저장)이 작업을 수행하는 것이 쉽지 않습니다. 속도가 빠를수록 더 어려움이 따릅니다.
Wossname

8

핸드 셰이크 프로토콜, 정지 비트 크기 등을 포함하여 손으로 보드 속도를 설정하는 운영자 및 사용자에 의한 보드 속도에 대한 두 개의 UARTS "동의"


1
..... 인터페이스의 양쪽 끝.
Michael Karas

2

그러나 모든 것이 수동으로 설정되는데, 특히 시스템이 제대로 문서화되지 않은 경우 (내가 모든 임베디드 시스템을보고 있음) 종종 약간의 고통이됩니다.

USB, SATA 및 대부분의 다른 최신 데이터 프로토콜은 표준화 된 기본 구성으로 최저 속도로 재설정 또는 초기화 이벤트 후에 시작하고 다른 모든 사람 (또는 프로토콜에 따라 마스터)과 더 높은 속도로 협상합니다. . 일부는 데이터 / 전원 라인에서 풀업 또는 풀다운 저항을 사용하여 지원되는 속도를 나타냅니다.

다른 프로토콜에 대해 좀 더 자세히 살펴 보려면 USB 협상에 대한 웹 사이트를 참조하십시오 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.