Скорость передачи данных через UART

UART — это приемопередатчик на котором базируется RS-232 и другие подобные интерфейсы.

Скорость работы UART не означает скорость передачи данных, так как вместе с полезными данными UART передает служебные:

  • стартовый бит,
  • стоповый бит,
  • бит четности.

Скорость работы UART измеряется в бодах, а скорость передачи полезных данных — в битах и байтах в секунду.

Скорость передачи данных в битах в секунду:

V_{bit} = \frac{d}{d+1+s+p}V_{UART}

где:

  • VUART — скорость UART (например: 9600, 115200), бод;
  • d — количество бит данных;
  • s — количество стоповых бит;
  • p — количество бит четности, p = 1 если бит четности присутствует, или p = 0 если бит четности отсутствует;
  • единица в знаменателе отражает наличие стартового бита.

Та же формула для расчетов:

V_bit = V_uart * d / (d + 1 + s + p)

С учетом, что один байт содержит 8 бит, из предыдущей формулы можно получить скорость передачи полезных данных в байтах в секунду:

V_{byte} = \frac{V_{bit}}{8} = \frac{d}{(d+1+s+p)8}V_{UART}

Для расчетов:

V_byte = V_uart * d / (d + 1 + s + p) / 8

Для работы UART чаще всего используется режим 8-N-1 при котором d = 8, p = 0, s = 1. Для этого режима скорость передачи полезных данных равна:

V_{bit}=\frac{8}{8+1+1+0}V_{UART}=\frac{4}{5}V_{UART}=0.8 V_{UART}

Отсюда следует, что КПД для такого режима составляет 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 бодам.

Между порциями полезных данных может быть ненулевая задержка, что уменьшает скорость передачи данных. Если не учитывать эту задержку, то количество секунд требуемых для передачи байт рассчитывается по следующей формуле:

t=\frac{D}{V_{byte}}=\frac{8\cdot D\cdot(d+1+s+p)}{d\cdot V_{UART}}

Для расчетов:

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 Мбод.

Автор

Дмитрий Бравиков

Инженер. Электронщик. Программист.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.