임베디드 시스템과 펌웨어
UART의 송신 측과 수신 측의 보 레이트가 조금 어긋나면 문자가 깨지는 경우가 있습니다. 어긋남의 허용 범위가 대략 몇 % 정도로 제한되는 이유로 올바른 것은 무엇입니까?
- A수신 측은 스타트 비트로 타이밍을 맞춘 뒤 자신의 클럭으로 각 비트의 가운데를 읽으므로, 어긋남이 한 문자 동안 누적되어 마지막 비트에서 반 비트를 넘으면 오류가 나기 때문에
- B보 레이트가 어긋나면 송신 측의 전압이 떨어지기 때문에
- CUART는 어긋남을 자동으로 고치므로 실제로는 허용 범위가 없기 때문에
정답과 해설 보기
정답: A. 수신 측은 스타트 비트로 타이밍을 맞춘 뒤 자신의 클럭으로 각 비트의 가운데를 읽으므로, 어긋남이 한 문자 동안 누적되어 마지막 비트에서 반 비트를 넘으면 오류가 나기 때문에
수신 측은 스타트 비트의 시작에서 타이밍을 맞추고, 그 후에는 자신의 보 레이트로 세어 각 비트의 가운데에서 값을 읽습니다. 속도에 어긋남이 있으면 읽는 타이밍의 어긋남이 비트마다 누적되어, 약 10비트 뒤의 스톱 비트에서 반 비트 이상 어긋나면 이웃한 비트를 읽게 됩니다. 그래서 양쪽을 합친 오차는 몇 % 이내로 억제해야 하며, 클럭 정밀도가 낮은 내장 발진기에서는 주의가 필요합니다.