Неточность скорости передачи RS-232

Я пишу простую программную реализацию UART для своего ATtiny. Мой процессор не быстрый, поэтому я должен выбрать низкую скорость передачи данных. Тем не менее, я хочу использовать как можно более высокую скорость передачи данных. И я могу оценить неточность скорости передачи в моей реализации.

Какова максимально возможная относительная погрешность скорости передачи данных RS-232 для правильной связи с другими устройствами? Определяет ли это стандарт RS-232?

грубая догадка - с 10 битами (старт, стоп, 8 данных), если время на полбита к концу будет ошибкой, поэтому 0,5 / 10 = 5%. PS, если вы откалибруете часы RC, вы можете получить более точное время. Я где-то читал, что из коробки это может быть недостаточно хорошо.
Вопреки тому, что все думают, формат асинхронных последовательных данных НЕ определен в стандарте RS-232. Хуже того, я нигде не нашел официального определения этого термина.
Хитрость заключается в извлечении и синхронизации с часами путем синхронизации с наклонами в сигнале данных. Усредните время по нескольким битам, и все будет хорошо.

Ответы (1)

Я не знаю, есть ли формальное определение. Но учтите это:

Символ RS232 имеет длину около 10 символов (старт, 8 бит, стоп).

Если вы начнете декодировать на полпути через символ, а ваши часы отстают на 5%, после 10 символов вы отклонитесь от цели на 50% ширины символа; т.е. 5% - это максимально возможная допустимая ошибка. И это предполагает, что другой конец синхронизирован правильно; если бы у него была ошибка в другом направлении, вы бы неправильно расшифровали его.

Таким образом, ошибка в 2,5% в противоположных направлениях на каждом конце также будет на грани отказа.

Проблемы с целостностью сигнала, вызванные длиной кабеля, только усугубят ситуацию.

Так что практически ошибка ниже 5% будет работать с «хорошими» часами на другом конце и очень коротким кабелем; для надежной связи вам нужна ошибка часов ниже 2%, а еще лучше для поддержки длинных кабелей.

Теперь узнайте, на что способен ваш ATTiny при разных скоростях передачи данных и тактовых частотах процессора...

UART может синхронизироваться с использованием часов x 16X по переднему фронту начального бита, а затем центрировать выборку по оставшимся битам данных. Это также вносит ошибку часов в 1/16 бита макс. в 10 бит или 0,67%, поэтому считайте 4% максимум в теории и лучше выберите 2$ на практике, как сказал Брайан.