18 июля 2015 г.

Как работать с UART - Теория

UART - Universal Asynchronous Receiver-Transmitter,
УАПП - Универсальный асинхронный приёмопередатчик.

Что такое UART?

Здесь стречается несколько обозначений, это интерфейс/микросхема/протокол, но в любом случае его основная задача - связать между собой 2 или более устройства, он может быть представлен в виде отдельной микросхемы, быть частью более сложного цифрового устройства (микроконтроллер), либо реализован программно.


Подавать данные в UART можно в различном виде (параллельно, последовательно, различной разрядности), но выдаёт он их в виде в котором их поймёт UART приёмопередатчик на другом конце.

UART передаёт данные последовательно бит за битом, которые посылаются через равные промежутки времени.

Есть сихронный вариант : USART, в нём скорость передачи зависит от синхроимпульсов.

Скорость передачи данных по UART измеряется в бодах  (в данном случае биты в секунду) другое название битрейт. Есть общепринятый стандарт скоростей, чаще всего используют 9600 бод. Длительность 1 бита : 1/9600 = 104 мкс.

При отсутствии передачи данных, линия передачи выставляется в лог.1, это пассивное состояние (IDLE). Если начинается передача данных сперва поссылается СТАРТ бит (St), на котором лог.0. После него следует от 5 до 9 битов данных.

При желании можно добавить бит паритета (контроля чётности) [P], он может проверять на чётное или не чётное количество единичек в послании (в зависимости от реализации). К примеру если мы проверяем на НЕ чётное число единиц, то в [P] будет передана лог.1 если в нашем сообщении есть 1, 3, 5, 7 или 9 единиц.

В конце идут 1 или 2 СТОП бита (Sp1) [Sp2], (в зависимости от реализации) которые выдают на выход высокий уровень.

После них можно сразу начать передачу другого сообщения.
Рис.1 Передача данных UART

Передача данных может быть только в 1 сторону, это обозначается сленговым словом симплекс (simplex), в 2 стороны поочерёдно - полудуплекс (half duplex) и в обе стороны одновременно - дуплекс (full duplex).

Сам UART обычно не передаёт и не принимает внешние сигналы на линии передачи, для этого используются промежуточные интерфейсы реализующие физический уровень передачи соответствующий различным стандартам, иногда их могут называть  последовательные линии связи.

На физическом уровне определяется диапазон напряжений логических уровней для передачи, передающая частота, максимальная длина кабеля, тип используемого провода и т.д.

RS-232

Самый популярный стандарт это RS-232  (Recommended Standard 232).
Логический 0 от +3 В до +15 В.
Логическая 1 от -3 В до -15 В.
К сожалению нет точной характеристики на определение расстояния на который можно передавать данные по данному типу кабеля при заданной скорости.

На "средних скоростях" и с "обычным куском проводов" данные можно передать на ≈ 15 м.
При скорости 115200 бод на 1,5 м.

Изначально для этого стандарта использовались коннекторы с 25 выводами типа D-sub, половину контактов не использовали и перешли на 9 выводов, которые использовали на персональных компьютерах в вместе с интерфейсом под названием COM-порт или Последовательный порт.

Затем опустились до 5 и наконец 3 выводов:
приём (RxD - Received Data),
передача (TxD - Transmitted Data),
земля.

Довольно популярны микросхемы преобразователи USB - RS232, к примеру FT232R.
Они превращают USB порт в "виртуальный" COM-порт. с COM портом проще работать чем с USB, для него легче написать программу и на большинстве цифровых устройств на борту есть UART интерфейс работающий по RS-232 стандарту.

Подробная таблица характеристик нескольких стандартов

RS-485


Есть несколько других стандартов, но на втором месте по популярности стоит RS-485, который используется в промышленности.
Здесь возможна передача данных на 1 км с хорошей помехозащищённостью. В качестве провода применяется витая пара, кабель для интернета распространённый представитель витой пары.

Рис.2 Витая пара
Напряжения передающиеся по проводам от -7 до +12 В. Передача осуществляется по 2 проводам, логический уровень определяется разницей напряжений на этих проводах.
Есть 2 провода A и Б.
Логический 0 - отрицательное напряжение (А-Б < −200 мВ)
Логическая 1 - Положительное напряжение (А-Б > +200 мВ)

На этом всё, следует добавить что в микроконтроллере используются стандартные уровни напряжений для лог.0 и лог.1.


Источники:

Комментариев нет :

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