답변:
1 % 이내이면 괜찮을 것입니다.
UART가 16x 오버 샘플링 클록을 사용한다고 가정합니다. 예를 들어, 1,843,200Hz ~ 16x 오버 샘플 115,200bps로 설정할 수 있습니다. UART는 시작 비트의 하강 에지에서 8 개의 오버 클럭을 카운트 오프 할 수 있으므로 비트 셀의 중심을 오버 클록의 +/- 1주기 내에서 찾을 수 있습니다. 데이터를 샘플링 할시기를 결정하기 위해 오버 클럭의 16주기를 카운트 오프합니다.
시작 비트의 중심에 도달 할 수 있다고 가정하면 8 데이터 비트에 걸쳐 올바른 비트 셀에서 직렬 데이터 샘플링을 유지하려면 클럭 주파수가 (8-0.5) / 8에서 (8 + 0.5) 사이에 있어야합니다 ) / 8 또는 의도 된 비트 전송률의 +/- 6.25 % 오버 클럭킹이 높을수록 시작 비트의 중심을 타격하는 이상적인 조건에 더 가까워 지지만 일반적으로 8x 또는 16x는 5 %의 불일치가 작동한다고 가정 할 수있을 정도로 가깝습니다.
그러나 다른 쪽에서는 주파수를 완벽하게 계산할 수 없습니다. 4 % 빠른 장치를 4 % 느린 장치에 연결하면 문제가 발생합니다. 적어도 한 가지 경우는 PC가 조금 느리게 실행되고 장치가 약간 빠르며 같은 장치는 다른 PC와는 괜찮지 만 PC는 다른 PC와는 괜찮지 만 조금씩 통신 할 수있었습니다. 장치. (약 112kbps와 119kbps에서 O- 스코프) 공칭 주파수를 최대한 가깝게 치는 것이 좋습니다. 공칭 값의 2 % 내에서 문제가있는 것을 본 적이 없습니다.
일반적으로해야 할 일은 의도 된 UART 오버 샘플링 속도와 전송 속도의 정수배를 제공하는 마스터 클럭 속도를 사용하는 것입니다. 예를 들어, 약 8MHz에서 실행되는 CPU를 원한다면 7.3728MHz 발진기를 4로 나눠 1.8432MHz를 얻을 수 있으며 이는 정확히 115 배의 16 배입니다.
@JustJeff가 언급 한 1 %는 필요하지 않습니다. 대부분의 UART는 마지막 비트에서 반 비트 오류를 허용합니다. 프레임은 대부분 1 개의 시작 비트, 8 개의 데이터 비트 및 1 개의 정지 비트로 구성되며 총 10 비트입니다. 10 비트의 반 비트는 5 %입니다 (JustJeff의 6.25 %는 시작 및 정지 비트를 고려하지 않습니다).
JustJeff는 시작 비트를 잊어 버렸지 만 Stevenh는 정지 비트를 추가했습니다. 8 개의 데이터 비트, 1 개의 시작 비트 및 패리티 비트가없는 (정지 비트 수는 중요하지 않음) 공통 프로토콜을 가정하면 시작 비트의 선행 에지부터 마지막 데이터 비트. 일반적으로 수신기는 1/4 비트 시간 내에이 마지막 비트를 샘플링하기를 원합니다. 1/2 비트는 실패 임계 값을 보장합니다. 전기 노이즈와 지터가 항상 있기 때문에 근처에있는 것은 신뢰할 수 없습니다.
1/4을 8 1/2 = 2.94 %로 나눈 값입니다.
JustJeff가 언급했듯이 대부분의 UART 구현은 실제로 비동기 16x 클록으로 수신 데이터를 샘플링합니다. 시작 비트의 리딩 엣지를 측정 할 수있는 오차이기 때문에 1/16 비트 시간 불확실성이 추가됩니다. 8 1/2 비트 중 1/16 비트 시간이 또 다른 .74 %입니다. 그것은 앞서 계산 된 오류 예산에서 나온 것입니다. 수신기가 중앙의 1/4 비트 시간 내에 마지막 비트를 샘플링 할 수 있도록 2.2 % 허용 클록 불일치가 발생합니다.
다른 사람들이 말했듯이 정확한 전송 속도가 필요한 경우 7.3728MHz 크리스털을 사용하는 것이 일반적입니다. 일반적으로 수정 오류 내에서 UART 전송 속도에 도달하는 동안 최대 속도 근처에서 CPU를 실행하도록 조정할 수 있습니다.
아직 언급되지 않은 한 가지 점은 일부 장치는 수신하는 모든 데이터 바이트마다 데이터 바이트를 전송해야한다는 것입니다. 이러한 장치에 데이터가 지속적으로 공급되는 경우 전송 속도보다 전송 속도가 0.1 % 느리고 약간 줄어든 정지 비트를 보낼 수있는 기능이 없으면 연속 1000 회마다 출력이 1 바이트 줄어 듭니다. 디바이스가 16 바이트의 버퍼링으로 제한되는 경우, 대략 16,000 개를 전달한 후 1 바이트의 데이터를 삭제하고 그 후 1,000 개당 약 1 바이트를 삭제합니다. 소위 "1200 baud"모뎀은 실제로 이러한 이유로 정확하게 1200 비트 / 초보다 약간 높은 속도 (약 1202라고 생각합니다)로 작동한다는 점에 주목할 가치가 있습니다. 있다,