Какие существуют стандартные скорости UART?

Я знаю 9600, 19200, 38400, 57600, 115200 и 1,8432 Мбод, но других нет. Почему используются эти значения, и они просто удваиваются каждый раз или происходит что-то более сложное (например, 38400 в четыре раза — это не 115200 бод?)

Причина, по которой я задаю этот вопрос, заключается в том, что я разрабатываю что-то, что может взаимодействовать с различными скоростями передачи данных. Он будет инициализирован на 9600, а затем переключится на определенную скорость передачи данных. Но я не могу поддерживать произвольные скорости, потому что dsPIC33F, который я использую, не поддерживает произвольные скорости, поскольку он ограничен 16-битным счетчиком BRG. В этом отношении он похож на многие другие процессоры.

На практике 16-битного счетчика плюс пре-/пост-масштабаторы более чем достаточны, чтобы приблизиться к произвольным скоростям передачи. Последовательный порт UART может допускать небольшие несоответствия скорости передачи данных.
UART начинается в середине бита START и должен оставаться около середины бита STOP после сериализации 7-10 бит. Что делает минимальную точность часов около 2-3%, желательно лучше справляться с шумом, дрожанием, отклонениями в исходной частоте...

Ответы (7)

Это началось давным-давно с телетайпов — кажется, 75 бод. С тех пор он в основном удваивался, с несколькими дробными (x1,5) кратными, например 28 800, где были ограничения на технологию модема телефонной линии, которые не совсем позволяли ему удвоиться.

Стандартные значения кристалла пришли из этих ранних скоростей передачи данных, и их доступность диктует будущие скорости. Например,

7,3728 М ЧАС г 16 знак равно 460 , 800 бод 7,3728 М ЧАС г 64 знак равно 115 , 200 бод .

Большинство UARTS используют часы 2 н × 16 скорости передачи, более современные компоненты (например, NXP LPC) имеют дробные делители, чтобы получить более широкий диапазон за счет использования недвоичных множителей.

Другими распространенными стандартами являются 31 250 (MIDI) и 250K (DMX), оба, вероятно, выбраны как хорошие множители «круглых» часов, таких как 1 МГц и т. Д.

Я не думаю, что дробные делители предназначены для получения нестандартных битрейтов, а скорее для стандартных битрейтов от нестандартных тактовых частот MCU.
Я отремонтировал два телетайпа 1926 года, еще в колледже (1976), и да, они работали со скоростью около 75 бод. Они были названы телетайпами Бодо. Подключен к сети 110 В переменного тока, и двигатель обеспечивает синхронизацию с электрическим соединением между ними. Я окунул их в бензин, чтобы очистить. (Дай мне передохнуть — мне было 18. Но это сработало!) Ctrl-G звонил, честно говоря, в колокольчик на другом. Увы, я даже не помню, кому я их отдал. :-( Итак, да, вы будете печатать на механической клавиатуре, она будет механически сериализовать ваши нажатия клавиш и замыкать и разрывать контакт, который читает другая сторона.
Ура, бурные 20-е! Какая качественная технология прослужит 50 лет и окажется в сарае Джона Сильвы в Хейворде, Калифорния.
@DougNull Извините за неровность - вопрос для 115200 бит/с. Итак, вы взяли часы IC (7,3728 МГц) и на что разделили? Как ты получил 64?

RealTerm, бесплатная терминальная программа для Windows, перечисляет эти скорости UART в своем меню Baud:

110, 150, 300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600

Однако на самом деле это биты в секунду (бит/с), а не бод — см. ниже.

Скорость 110 бод использовалась 8-уровневыми телетайпами, такими как ASR-33. Я не знаю, где использовалась скорость 150 бод, но это удвоение 75 бод, обычно используемое (наряду с 60 бод) для 5-уровневых TTY.

Скорость 300 бит/с была стандартом для первых широко используемых телефонных модемов в 1960-х годах. Одновременно появилось несколько терминалов со скоростью 30 символов в секунду.

При скорости выше 300 бит/с/300 бод, при которой использовалась простая частотная манипуляция (FSK), значения бит/с и бод (символов или тонов в секунду) не совпадают. Например, модем на 1200 бит/с на самом деле работает на скорости 600 бод, а модем на 4800 бит/с работает на скорости 1600 бод. См. таблицу в разделе «Пропускная способность» в этой статье . Разница заключается в том, что в дополнение к использованию определенного количества тональных импульсов в секунду фазовая манипуляция и другие методы используются для извлечения дополнительной полосы пропускания из той же скорости передачи данных, чтобы получить все более и более высокие биты в секунду. (Таким образом, модем 56K на самом деле работает только на скорости 8000 бод.)

Как видите, список скоростей UART, по сути, начинался с 75 и постоянно удваивался (пропуская 600), пока не достиг 38400, где он был умножен на 1,5, чтобы получить 57600. 56 Кбит/с — это предел для аналоговой телефонной линии. Более высокие скорости от 115200 и выше (снова удвоение, начиная с 57600) используются для проводных соединений.

Как упомянул mikeselectricstuff, 14400 и 28800 бит/с были введены как 1,5 x 9600 и 1,5 x 19200, когда в то время скорость модема нельзя было удвоить, но сейчас они используются редко.

Не буду педантичным, но программа может поддерживать только те скорости, которые позволяет аппаратное обеспечение. Он может даже не спрашивать и просто перечислить стандартные скорости. Спрашивая мое оборудование zip(*serial.Serial('COM10').getSupportedBaudrates()), он отвечает:(50, 75, 110, 134, 150, 200, 300, 600, 1200, 1800, 2400, 4800, 9600, 19200, 38400, 57600, 115200)
В восьмидесятых я использовал полудуплексный акустический ответвитель со скоростью 600 бит/с. 75 бит/с использовалась в немецкой системе BTX в направлении загрузки в течение длительного времени, загрузка была на скорости 1200 бит/с.
Я также видел 62,5 кбод. На самом деле, это также зависит от ваших основных часов, вы можете рассчитать, какие скорости передачи данных приведут к достаточно низкой ошибке.

В течение долгого времени было принято использовать для связи числа, кратные 115 200 — либо кратные степени двойки числа 38 400, либо 57 600, либо 115 200. Большинство аппаратных средств ПК поддерживают эти скорости. Некоторое аппаратное обеспечение ПК может поддерживать 230 400 или 460 800. Обратите внимание, что многие встроенные контроллеры используют скорость передачи данных, кратную их собственной тактовой частоте, а некоторые микросхемы USB-to-serial могут поддерживать любое целое число, кратное 3 000 000 бит/с, поэтому скорости вроде 1 000 000 бит/с или 1 500 000 бит/с, вероятно, станут более распространенными для устройств для подключения к ПК через USB-чипы.

Кстати, стоит упомянуть еще одну скорость: 31 250 бит/с — это скорость, используемая для стандартного MIDI.

Оригинальный IBM PC имел 8250 UART. Это взяло часы с частотой 1,8432 МГц и разделило их на некоторое целое число, чтобы сгенерировать его внутренние часы, и эти часы работают с 16 циклами в бит.

Установка 1 в регистре делителя дает вам 115 200, 2 — 57 600, 3 — 38 400, 6 — 19 200 и т. д.

Лучше всего использовать часы, работающие на частоте, кратной 1,8432 МГц, с DSPIC.

Скорость передачи чипов FTDI основана на опорной частоте 3 МГц, которая затем делится :

рег делитель скорость передачи данных
10,27 10000 300
88,13 5000 600
С4,09 2500 1200
Е2,04 1250 2400
71,02 625 4800
38,41 312,5 9600
Д0,80 208,25 14 406
9С, 80 156,25 19 200
4Е, С0 78,125 38 400
34,00 52 57 692
1А,00 26 115 384
0D,00 13 230 769
06,40 6,5 461 538
03,80 3,25 923 076

В прошлом телеграф проверяли на точность ударов и точность. После долгих исследований и испытаний, еще до появления памяти, точность очень быстро падала и составляла более 6,6 символов в секунду. В коде Бодо стандартом связи был один стартовый бит, пять битов данных и полтора стоповых бита. Для 6,6 символов в секунду требуется 49,5 бит в секунду. Мировой стандарт для телеграфа и телекса составляет 50 бит в секунду. На этой линейной скорости механическое оборудование надежно работает на этой скорости. Отсюда идет 50 бод и стандартные скорости. 50, 130, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 76800, 153600 и т. д. Когда он был разработан, 5-битный код бодо был оставлен в покое и был разработан новый 8-битный код, вот где ASCII происходит от.

Интересное понимание того, что может быть причиной самой низкой скорости передачи данных. Для более высоких скоростей более логичным объяснением является связь с частотой кристалла контроллера.
А телетайп АСР-33? Это было 110 бод. Я не думаю, что ваш список является авторитетным, возможно, вы хотели бы привести цитату.

И просто сноска: DMX (для сценического и театрального освещения), обычно передаваемый по RS-485 с использованием микрофонных кабелей или витой пары, имеет скорость 250 000 бод. Это не «стандартная» скорость, и, насколько мне известно, единственными чипсетами, которые ее поддерживают, является FTDI, хотя DMX является распространенным и популярным протоколом.

Нетрадиционные скорости передачи данных достигаются процессорами, которые поддерживают настраиваемую скорость передачи данных (например, семейство TM4C от TI).