Я знаю 9600, 19200, 38400, 57600, 115200 и 1,8432 Мбод, но других нет. Почему используются эти значения, и они просто удваиваются каждый раз или происходит что-то более сложное (например, 38400 в четыре раза — это не 115200 бод?)
Причина, по которой я задаю этот вопрос, заключается в том, что я разрабатываю что-то, что может взаимодействовать с различными скоростями передачи данных. Он будет инициализирован на 9600, а затем переключится на определенную скорость передачи данных. Но я не могу поддерживать произвольные скорости, потому что dsPIC33F, который я использую, не поддерживает произвольные скорости, поскольку он ограничен 16-битным счетчиком BRG. В этом отношении он похож на многие другие процессоры.
Это началось давным-давно с телетайпов — кажется, 75 бод. С тех пор он в основном удваивался, с несколькими дробными (x1,5) кратными, например 28 800, где были ограничения на технологию модема телефонной линии, которые не совсем позволяли ему удвоиться.
Стандартные значения кристалла пришли из этих ранних скоростей передачи данных, и их доступность диктует будущие скорости. Например,
Большинство UARTS используют часы скорости передачи, более современные компоненты (например, NXP LPC) имеют дробные делители, чтобы получить более широкий диапазон за счет использования недвоичных множителей.
Другими распространенными стандартами являются 31 250 (MIDI) и 250K (DMX), оба, вероятно, выбраны как хорошие множители «круглых» часов, таких как 1 МГц и т. Д.
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)
В течение долгого времени было принято использовать для связи числа, кратные 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 происходит от.
И просто сноска: DMX (для сценического и театрального освещения), обычно передаваемый по RS-485 с использованием микрофонных кабелей или витой пары, имеет скорость 250 000 бод. Это не «стандартная» скорость, и, насколько мне известно, единственными чипсетами, которые ее поддерживают, является FTDI, хотя DMX является распространенным и популярным протоколом.
Питер Грин
ТЕМЛИБ