UART — это приемопередатчик на котором базируется RS-232 и другие подобные интерфейсы.
Скорость работы UART не означает скорость передачи данных, так как вместе с полезными данными UART передает служебные:
- стартовый бит,
- стоповый бит,
- бит четности.
Скорость работы UART измеряется в бодах, а скорость передачи полезных данных — в битах и байтах в секунду.
Скорость передачи данных в битах в секунду:
где:
- VUART — скорость UART (например: 9600, 115200), бод;
- d — количество бит данных;
- s — количество стоповых бит;
- p — количество бит четности, p = 1 если бит четности присутствует, или p = 0 если бит четности отсутствует;
- единица в знаменателе отражает наличие стартового бита.
Та же формула для расчетов:
V_bit = V_uart * d / (d + 1 + s + p)
С учетом, что один байт содержит 8 бит, из предыдущей формулы можно получить скорость передачи полезных данных в байтах в секунду:
Для расчетов:
V_byte = V_uart * d / (d + 1 + s + p) / 8
Для работы UART чаще всего используется режим 8-N-1 при котором d = 8, p = 0, s = 1. Для этого режима скорость передачи полезных данных равна:
Отсюда следует, что КПД для такого режима составляет 80 %.
В таблице ниже приводится КПД для разных режимов работы UART:
d, бит | p, бит | s, бит | КПД, % |
5 | 0 | 1 | 71 |
5 | 0 | 1,5 | 67 |
5 | 0 | 2 | 62 |
5 | 1 | 1 | 62 |
5 | 1 | 1,5 | 59 |
5 | 1 | 2 | 56 |
6 | 0 | 1 | 75 |
6 | 0 | 1,5 | 71 |
6 | 0 | 2 | 67 |
6 | 1 | 1 | 67 |
6 | 1 | 1,5 | 63 |
6 | 1 | 2 | 60 |
7 | 0 | 1 | 78 |
7 | 0 | 1,5 | 74 |
7 | 0 | 2 | 70 |
7 | 1 | 1 | 70 |
7 | 1 | 1,5 | 67 |
7 | 1 | 2 | 64 |
8 | 0 | 1 | 80 |
8 | 0 | 1,5 | 76 |
8 | 0 | 2 | 73 |
8 | 1 | 1 | 73 |
8 | 1 | 1,5 | 70 |
8 | 1 | 2 | 67 |
9 | 0 | 1 | 82 |
9 | 0 | 1,5 | 78 |
9 | 0 | 2 | 75 |
9 | 1 | 1 | 75 |
9 | 1 | 1,5 | 72 |
9 | 1 | 2 | 69 |
Не часто поддерживаемый режим 9-N-1 дает наилучший результат (82 %), но отличающийся от 8-N-1 лишь на 2 %.
Существует ряд стандартных скоростей: 300, 600, 1 200, 2 400, 4 800, 9 600, 19 200, 38 400, 57 600, 115 200, 230 400, 460 800 и 921 600 бод.
Максимальная скорость классического последовательного порта (COM-порта) компьютера равна 115 200 бодам.
Между порциями полезных данных может быть ненулевая задержка, что уменьшает скорость передачи данных. Если не учитывать эту задержку, то количество секунд требуемых для передачи D байт рассчитывается по следующей формуле:
Для расчетов:
t = 8 * D * (d + 1 + s + p) / (d * V_uart)
Например, время передачи 1 МБ (1 048 576 байт) со скоростью 9 600 бод в режиме 8-N-1 составляет 18 минут и 12 секунд, а при скорости 115 200 бод — 1 минуту 31 секунду.
Сравнительная таблица скоростей передачи данных для стандартных скоростей UART:
Скорость UART, бод | Скорость передачи данных, байт/с | Время передачи 1 МБ, час:мин:сек | ||
Данные: 8 бит Стоп: 1 бит Четность: нет |
Данные: 8 бит Стоп: 1 бит Четность: да |
Данные: 8 бит Стоп: 1 бит Четность: нет |
Данные: 8 бит Стоп: 1 бит Четность: да |
|
300 | 30 | 27,3 | 09:42:33 | 10:40:48 |
600 | 60 | 54,5 | 04:51:16 | 05:20:24 |
1 200 | 120 | 109,1 | 02:25:38 | 02:40:12 |
2 400 | 240 | 218,2 | 01:12:49 | 01:20:06 |
4 800 | 480 | 436,4 | 00:36:25 | 00:40:03 |
9 600 | 960 | 872,7 | 00:18:12 | 00:20:01 |
19 200 | 1 920 | 1 745,5 | 00:09:06 | 00:10:01 |
38 400 | 3 840 | 3 490,9 | 00:04:33 | 00:05:00 |
57 600 | 5 760 | 5 236,4 | 00:03:02 | 00:03:20 |
115 200 | 11 520 | 10 472,7 | 00:01:31 | 00:01:40 |
В настоящий момент COM-порт компьютера вытеснен USB. Тем не менее UART широко используется в различных приборах. Для связи их с компьютером существуют преобразователи USB-UART. И любой микроконтроллер имеет один или более UARTов. В таблице ниже приводится информация о максимальных скоростях работы различных микросхем.
Микросхема | Назначение микросхемы | Максимальная скорость UART, Мбод | Максимальная скорость передачи данных в режиме 8-N-1, Байт/с |
CP2101 | Преобразователь USB-UART | 0,9216 | 92 160 |
CP2102/3/9/10 | Преобразователь USB-UART | 1 | 100 000 |
CP2104/5/8 | Преобразователь USB-UART | 2 | 200 000 |
FT232R | Преобразователь USB-UART | 3 | 300 000 |
FT232H | Преобразователь USB-UART | 12 | 1 200 000 |
STM32F7 | Микроконтроллер | 27 | 2 700 000 |
STM32F4 | Микроконтроллер | 11,25 | 1 250 000 |
Небольшие скорости обусловлены тем, что UART тактируется с частотой во много раз превышающей скорость его работы. Чем больше тактов на один бит данных, тем надежнее связь. Чаще всего на 1 бит приходится 16 тактов. Кроме этого встречаются микросхемы поддерживающие 4, 8 и 10 тактов на бит.
Автором был разработан переходник USB — UART с 16 портами UART, которые могут работать на скорости 12 Мбод.