Универсальный асинхронный приемник-передатчик
Универсальный асинхронный приёмопередатчик ( UART / ˈjuː ɑːr t асинхронной / ) — периферийное устройство для последовательной связи , в котором настраиваются формат данных и скорость передачи. Он отправляет биты данных один за другим, от наименее значимого к наиболее значимому, в рамках стартовых и стоповых битов, так что точная синхронизация обрабатывается каналом связи. Уровни электрической сигнализации обрабатываются схемой драйвера, внешней по отношению к UART. Общие уровни сигнала: RS-232 , RS-485 и необработанный TTL. [1] для коротких ссылок отладки. Ранние телетайпы использовали токовые петли .
Это было одно из первых устройств компьютерной связи, использовавшееся для прикрепления телетайпов к консоли оператора . Это была также ранняя аппаратная система для Интернета .
UART обычно представляет собой отдельную (или часть) интегральную схему (ИС), используемую для последовательной связи компьютера или периферийного устройства через последовательный порт . Одно или несколько периферийных устройств UART обычно интегрируются в микросхемы микроконтроллеров . Специализированные UART используются в автомобилях , смарт-картах и SIM-картах .
Родственное устройство — универсальный синхронный и асинхронный приёмопередатчик (USART) — также поддерживает синхронную работу.
С точки зрения уровня OSI , UART находится на уровне 2, уровне канала передачи данных .
Передача и получение последовательных данных
[ редактировать ]UART содержит следующие компоненты:
- тактовый генератор, обычно кратный скорости передачи битов, чтобы обеспечить выборку в середине битового периода
- регистры сдвига ввода и вывода, а также буферы передачи/приема или буферы FIFO.
- управление передачей/приемом
- логика управления чтением/записью
Универсальный асинхронный приемник-передатчик (UART) принимает байты данных и последовательно передает отдельные биты. [2] В пункте назначения второй UART повторно собирает биты в полные байты. Каждый UART содержит сдвиговый регистр , который является основным методом преобразования последовательной и параллельной форм. Последовательная передача цифровой информации (битов) по одному проводу или другой среде обходится дешевле, чем параллельная передача по нескольким проводам.
UART обычно не генерирует и не принимает внешние сигналы, используемые между различными элементами оборудования. Отдельные интерфейсные устройства используются для преобразования сигналов логического уровня UART во внешние уровни сигнализации и обратно, которые могут быть стандартизованными уровнями напряжения, уровнями тока или другими сигналами.
Связь может быть в 3 режимах:
- симплекс (только в одном направлении, без возможности отправки принимающим устройством информации обратно на передающее устройство)
- полный дуплекс (оба устройства отправляют и получают одновременно)
- полудуплекс (устройства по очереди передают и принимают)
Для работы UART следующие настройки должны быть одинаковыми как на передающей, так и на принимающей стороне:
- Уровень напряжения
- Скорость передачи данных
- Бит четности
- Размер битов данных
- Размер стоп-битов
- Управление потоком
Что касается уровня напряжения, два модуля UART работают хорошо, если они оба имеют одинаковый уровень напряжения, например 3–3 В между двумя модулями UART. Чтобы использовать 2 модуля UART с разными уровнями напряжения, необходимо добавить внешнюю схему переключателя уровня. [3]
Обрамление данных
[ редактировать ]1 | 5-9 | 0-1 | 1-2 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Стартовый бит | Кадр данных | Биты четности | Стоп-биты |
Кадр UART состоит из 5 элементов:
- Режим ожидания (высокий логический уровень (1))
- Стартовый бит (логический низкий уровень (0))
- Биты данных
- Бит четности
- Стоп (высокий логический уровень (1))
В наиболее распространенных настройках: 8 бит данных, без контроля четности и 1 стоповый бит (он же 8N1 ), эффективность протокола составляет 80%. Для сравнения, Ethernet эффективность протокола при использовании кадров максимальной пропускной способности с полезной нагрузкой 1500 байт составляет до 95% и до 99% при использовании больших кадров размером 9000 байт . Однако из-за накладных расходов протокола Ethernet и минимального размера полезной нагрузки в 42 байта при отправке небольших сообщений размером в один или несколько байт эффективность протокола Ethernet падает намного ниже, чем постоянная эффективность UART 8N1, равная 80%.
Состояние простоя, отсутствие данных — это высокое напряжение или питание. Это историческое наследие телеграфии, когда линию поддерживают высоко, чтобы показать, что линия и передатчик не повреждены.
Каждый символ оформляется как нижний логический стартовый бит, биты данных, возможно, бит четности и один или несколько стоповых битов. В большинстве приложений первым передается младший бит данных (слева на этой диаграмме), но есть исключения (например, печатающий терминал IBM 2741 ).
Стартовый бит
[ редактировать ]Стартовый бит сигнализирует получателю о поступлении нового символа.
Бит данных
[ редактировать ]Следующие пять-девять битов, в зависимости от используемого кодового набора, представляют символ.
Бит четности
[ редактировать ]Если используется бит четности, он будет помещен после всех битов данных.
Бит четности позволяет принимающему UART определить, изменились ли какие-либо данные во время передачи.
Стоп-бит
[ редактировать ]Следующие один или два бита всегда находятся в состоянии метки (логический высокий уровень, т. е. «1») и называются стоповыми битами. Они сигнализируют получателю, что персонаж завершен. Поскольку стартовый бит имеет низкий логический уровень (0), а стоповый бит имеет высокий логический уровень (1), между символами всегда происходит как минимум два гарантированных изменения сигнала.
Если линия удерживается в состоянии низкого логического уровня дольше времени символа, это состояние разрыва , которое может быть обнаружено UART.
Получатель
[ редактировать ]Все операции оборудования UART контролируются внутренним тактовым сигналом, который работает со скоростью, кратной скорости передачи данных, обычно в 8 или 16 раз превышающей скорость передачи данных. Приемник проверяет состояние входящего сигнала на каждом тактовом импульсе, определяя начало стартового бита. Если видимый стартовый бит длится не менее половины времени бита, он действителен и сигнализирует о начале нового символа. В противном случае он считается ложным импульсом и игнорируется. После ожидания еще одного бита состояние линии снова считывается, и полученный уровень синхронизируется в сдвиговый регистр. По истечении необходимого количества битовых периодов для длины символа (обычно от 5 до 8 бит) содержимое сдвигового регистра становится доступным (параллельно) принимающей системе. UART установит флаг, указывающий на доступность новых данных, а также может сгенерировать прерывание процессора , чтобы запросить передачу хост-процессором полученных данных.
Коммуникационные UART не имеют общей системы синхронизации, кроме сигнала связи. Обычно UART повторно синхронизируют свои внутренние часы при каждом изменении линии данных, которое не считается паразитным импульсом. Получая таким образом информацию о времени, они надежно получают информацию, когда передатчик передает данные с несколько иной скоростью, чем следовало бы. Упрощенные UART этого не делают; вместо этого они повторно синхронизируются только по заднему фронту стартового бита, а затем считывают центр каждого ожидаемого бита данных, и эта система работает, если скорость широковещательных данных достаточно точна, чтобы обеспечить надежную выборку стоповых битов. [4] [5]
Стандартной функцией UART является сохранение самого последнего символа при получении следующего. Эта «двойная буферизация» дает принимающему компьютеру все время передачи символа для извлечения полученного символа. Многие UART имеют небольшую буферную память FIFO между сдвиговым регистром приемника и интерфейсом хост-системы. Это дает хост-процессору еще больше времени для обработки прерывания от UART и предотвращает потерю полученных данных с высокой скоростью.
Передатчик
[ редактировать ]Операция передачи проще, поскольку время не нужно определять по состоянию линии и не привязывать его к каким-либо фиксированным временным интервалам. Как только отправляющая система помещает символ в сдвиговый регистр (после завершения предыдущего символа), UART генерирует стартовый бит, сдвигает необходимое количество бит данных в строку, генерирует и отправляет бит четности (если он используется). ) и отправляет стоповые биты. Поскольку в полнодуплексном режиме требуется, чтобы символы отправлялись и принимались одновременно, UART используют два разных сдвиговых регистра для передаваемых и принимаемых символов. Высокопроизводительные UART могут содержать буфер передачи FIFO (первым пришел — первым вышел), чтобы позволить процессору или контроллеру DMA вносить несколько символов в пакетном режиме в FIFO, а не вносить по одному символу за раз в сдвиговый регистр. Поскольку передача одного или нескольких символов может занять много времени относительно скорости ЦП, UART поддерживает флаг, показывающий состояние занятости, чтобы хост-система знала, есть ли хотя бы один символ в буфере передачи или сдвиговом регистре; «Готовность к следующему символу(ам)» также может быть сигнализирована прерыванием.
Приложение
[ редактировать ]Для правильной работы передающие и принимающие UART должны быть настроены на одинаковую скорость передачи данных, длину символов, четность и стоповые биты. Принимающий UART может обнаружить некоторые несовпадающие настройки и установить бит флага «ошибки кадрирования» для хост-системы; в исключительных случаях принимающий UART будет генерировать беспорядочный поток искаженных символов и передавать их в хост-систему.
Типичные последовательные порты, используемые с персональными компьютерами, подключенными к модемам, используют восемь битов данных, без контроля четности и один стоповый бит; для этой конфигурации количество символов ASCII в секунду равно скорости передачи данных, разделенной на 10.
Некоторые очень недорогие домашние компьютеры или встроенные системы , в которых отсутствует физический UART, вместо этого могут эмулировать протокол с помощью программного обеспечения, проверяя состояние входного порта или напрямую манипулируя выходным портом для передачи данных. Несмотря на то, что микросхема UART очень требовательна к процессору (поскольку время процессора имеет решающее значение), микросхему UART можно не использовать, что позволяет сэкономить деньги и пространство. Этот метод известен как бит-бэнгинг .
История
[ редактировать ]В некоторых ранних схемах телеграфа использовались импульсы переменной длины (как в коде Морзе ) и вращающиеся часовые механизмы для передачи буквенных символов. Первые устройства последовательной связи (с импульсами фиксированной длины) представляли собой вращающиеся механические переключатели ( коммутаторы ). Различные коды символов, использующие 5, 6, 7 или 8 бит данных, стали обычным явлением в телетайпах, а затем и в компьютерной периферии. Телетайп стал отличным универсальным устройством ввода-вывода для небольшого компьютера.
Гордон Белл из DEC разработал первый UART, занимающий всю печатную плату, называемую линейным блоком , для компьютеров серии PDP , начиная с PDP-1 . [6] [7] По словам Белла, главным нововведением UART было использование дискретизации для преобразования сигнала в цифровую форму, что обеспечивало более надежную синхронизацию, чем предыдущие схемы, в которых использовались аналоговые устройства синхронизации с потенциометрами, настраиваемыми вручную . [8] Чтобы снизить стоимость проводки, объединительной платы и других компонентов, в этих компьютерах также впервые реализовано управление потоком данных с использованием символов XON и XOFF, а не аппаратных проводов.
Компания DEC объединила конструкцию линейного блока в ранний однокристальный UART для собственного использования. [6] Компания Western Digital разработала это в первый широко доступный однокристальный UART, WD1402A, примерно в 1971 году. Это был ранний пример интегральной схемы среднего размера . Еще одним популярным чипом стал SCN2651 из семейства Signetics 2650 .
Примером UART начала 1980-х годов был National Semiconductor 8250, который использовался в оригинальной карте адаптера асинхронной связи IBM PC . [9] В 1990-х годах были разработаны новые UART со встроенными буферами. Это позволило повысить скорость передачи данных без потери данных и без необходимости частого внимания со стороны компьютера. Например, популярный процессор National Semiconductor 16550 имеет 16-байтовый FIFO и породил множество вариантов, включая 16C550, 16C650, 16C750 и 16C850 .
В зависимости от производителя для обозначения устройств, выполняющих функции UART, используются разные термины. Intel назвала свое устройство 8251 «Программируемым коммуникационным интерфейсом». Технология MOS 6551 была известна под названием «Адаптер интерфейса асинхронной связи» (ACIA). Термин «интерфейс последовательной связи» (SCI) впервые был использован в компании Motorola примерно в 1975 году для обозначения устройства асинхронного последовательного интерфейса «старт-стоп», которое другие называли UART. Компания Zilog произвела ряд контроллеров последовательной связи или SCC.
Начиная с 2000-х годов, большинство компьютеров , совместимых с IBM PC, удалили внешние RS-232 COM-порты и использовали порты USB , которые могут отправлять данные быстрее. Для пользователей, которым все еще нужны последовательные порты RS-232, внешние мосты USB-UART теперь обычно используются . Они объединяют аппаратные кабели и чип для преобразования USB и UART. Cypress Semiconductor и FTDI являются двумя крупными коммерческими поставщиками этих чипов. [10] Хотя порты RS-232 больше не доступны пользователям за пределами большинства компьютеров, многие внутренние процессоры имеют встроенные в микросхемы UART, что дает разработчикам оборудования возможность взаимодействовать с другими микросхемами или устройствами, использующими RS-232 или RS-485 для передачи данных. коммуникация.
Особые условия трансивера
[ редактировать ]Ошибка переполнения
[ редактировать ]Ошибка переполнения возникает, когда получатель не может обработать только что поступивший символ до прибытия следующего. Различные устройства имеют разный объем буферного пространства для хранения полученных символов. Контроллер ЦП или DMA должен обслуживать UART, чтобы удалить символы из входного буфера. Если контроллер ЦП или DMA недостаточно быстро обслуживает UART и буфер заполняется, возникает ошибка переполнения, и входящие символы будут потеряны.
Ошибка недозапуска
[ редактировать ]Ошибка недогрузки возникает, когда передатчик UART завершил отправку символа и буфер передачи пуст. В асинхронных режимах это рассматривается как указание на отсутствие данных для передачи, а не как ошибка, поскольку могут быть добавлены дополнительные стоповые биты. Эта индикация ошибки обычно встречается в USART, поскольку в синхронных системах недогрузка является более серьезной.
Ошибка кадрирования
[ редактировать ]UART обнаружит ошибку кадрирования , если он не увидит «стоповый» бит в ожидаемое время «стопового» бита. Поскольку «стартовый» бит используется для идентификации начала входящего символа, его время является ориентиром для остальных битов. Если линия данных не находится в ожидаемом состоянии (высоком уровне), когда ожидается «стоповый» бит (в соответствии с количеством битов данных и четности, для которых установлен UART), UART будет сигнализировать об ошибке кадрирования. Состояние «обрыва» на линии также сигнализируется как ошибка кадрирования.
Ошибка четности
[ редактировать ]Ошибка четности возникает, когда четность количества однобитов не соответствует значению, указанному в бите четности. Проверка четности часто используется для обнаружения ошибок передачи. Использование бита четности не является обязательным, поэтому эта ошибка возникнет только в том случае, если включена проверка четности.
Состояние разрыва
[ редактировать ]Состояние разрыва возникает, когда вход приемника находится на уровне «пробела» (низкий логический уровень, т. е. «0») в течение более длительного времени, чем некоторый период времени, обычно более, чем время символа. Это не обязательно ошибка, но воспринимается получателем как символ всех нулевых битов с ошибкой кадрирования.
Термин «обрыв» происходит от сигнализации токовой петли , которая была традиционной сигнализацией, используемой для телетайпов . На состояние «пространства» линии токовой петли указывает отсутствие тока, а очень длительный период отсутствия тока часто вызван обрывом или другой неисправностью в линии. Некоторое оборудование намеренно передает уровень «пробел» дольше, чем символ, в качестве сигнала внимания. Когда скорости передачи сигналов не совпадают, никакие значимые символы не могут быть отправлены, но длинный сигнал «перерыва» может быть полезным способом привлечь внимание несогласованного получателя к выполнению каких-либо действий (например, к перезагрузке). Компьютерные системы могут использовать длинный уровень «перерыва» в качестве запроса на изменение скорости передачи сигналов для поддержки коммутируемого доступа на нескольких скоростях передачи сигналов. Протокол DMX512 . использует условие разрыва для сигнала о начале нового пакета
Модели UART
[ редактировать ]Двойной UART, или DUART , объединяет два UART в один чип. Аналогичным образом, четверной UART или QUART объединяет четыре UART в один корпус, например NXP 28L194. Восьмеричный UART или OCART объединяет восемь UART в один корпус, например Exar XR16L788 или NXP SCC2698.
Модель | Описание |
---|---|
WD1402A | Первый однокристальный UART в широкой продаже. Представлен примерно в 1971 году. Среди совместимых микросхем были Fairchild TR1402A и General Instruments AY-5-1013. [11] |
Экзар XR21V1410 | |
Интерсил 6402 | |
CDP 1854 (RCA, ныне Intersil) | |
Зилог Z8440 | Универсальный синхронный и асинхронный приёмопередатчик (УСАРТ). 2000 кбит/с. Асинхронный, бисинхронный , SDLC , HDLC , X.25 . КПР . 4-байтовый буфер RX. 2-байтовый буфер передачи. Предоставляет сигналы, необходимые стороннему контроллеру DMA для выполнения передачи DMA. [12] |
Z8530/Z85C30 | Этот USART имеет 3-байтовый буфер приема и 1-байтовый буфер передачи. Имеет аппаратное обеспечение для ускорения обработки HDLC и SDLC. Версия CMOS (Z85C30) предоставляет сигналы, позволяющие контроллеру DMA стороннего производителя выполнять передачу DMA. Он может осуществлять асинхронную, синхронную связь на уровне байтов и синхронную связь на уровне битов. [13] |
8250 | Устарело с 1-байтовыми буферами. Максимальная стандартная скорость последовательного порта этих UART составляет 9600 бит в секунду, если операционная система имеет задержку прерывания 1 миллисекунду . UART 8250 использовались в IBM PC 5150 и IBM PC/XT, а UART 16450 использовались в компьютерах серии IBM PC/AT . Модель 8251 имеет возможности USART. |
8251 | |
Моторола 6850 | |
6551 | |
Роквелл 65C52 | |
16450 | |
82510 | Этот UART обеспечивает асинхронную работу со скоростью до 288 кбит/с с двумя независимыми четырехбайтовыми FIFO. Он производился Intel как минимум с 1993 по 1996 год, и у Innovastic Semiconductor есть паспорт IA82510 за 2011 год. |
16550 | Этот UART был представлен компанией Startech Semiconductor, которая сейчас принадлежит корпорации Exar и не имеет отношения к Startech.com. Ранние версии имеют сломанный буфер FIFO и поэтому не могут безопасно работать быстрее, чем UART 16450. [14] Версии этого UART, которые не были сломаны, имеют 32-символьные буферы FIFO и могут работать на стандартных скоростях последовательного порта до 230,4 кбит/с, если операционная система имеет задержку прерывания 1 миллисекунду. Текущие версии этого UART от Exar утверждают, что способны обрабатывать скорость до 1,5 Мбит/с. Этот UART представляет функции Auto-RTS и Auto-CTS, в которых сигнал RTS# контролируется UART, чтобы подать сигнал внешнему устройству прекратить передачу, когда буфер UART заполнен до или за пределами установленной пользователем точки запуска, и прекратить передачу. к устройству, когда устройство подает сигнал CTS# на высокий уровень (логический 0). |
16550А | Этот UART имеет 16-байтовые буферы FIFO. Уровни запуска прерывания приема могут быть установлены на 1, 4, 8 или 14 символов. Максимальная стандартная скорость последовательного порта, если операционная система имеет задержку прерывания в 1 миллисекунду, составляет 128 кбит/с. Системы с меньшими задержками прерываний или с контроллерами DMA могут поддерживать более высокие скорости передачи данных. Этот чип может предоставлять сигналы, необходимые для того, чтобы контроллер DMA мог выполнять передачу данных DMA в UART и обратно, если режим DMA, который вводит этот UART, включен. [15] Его представила компания National Semiconductor, которая была продана компании Texas Instruments. Компания National Semiconductor заявила, что этот UART может работать со скоростью до 1,5 Мбит/с. |
16С552 | |
16750 | 64-байтовые буферы. Этот UART может поддерживать максимальную стандартную скорость последовательного порта 460,8 кбит/с, если максимальная задержка прерывания составляет 1 миллисекунду. Этот UART был представлен компанией Texas Instruments. TI утверждает, что ранние модели могут работать со скоростью до 1 Мбит/с, а более поздние модели этой серии — до 3 Мбит/с. |
16850 | 128-байтовые буферы. Этот UART может поддерживать максимальную стандартную скорость последовательного порта 921,6 кбит/с, если максимальная задержка прерывания составляет 1 миллисекунду. Этот UART был представлен корпорацией Exar. Exar утверждает, что ранние версии могут работать со скоростью до 2 Мбит/с, а более поздние версии — до 2,25 Мбит/с в зависимости от даты производства. |
16С850 | |
16950 | 128-байтовые буферы. Этот UART может поддерживать максимальную стандартную скорость последовательного порта 921,6 кбит/с, если максимальная задержка прерывания составляет 1 миллисекунду. Этот UART поддерживает 9-битные символы в дополнение к 5-8-битным символам, которые поддерживают другие UART. Его представила компания Oxford Semiconductor, которая сейчас принадлежит PLX Technology. Oxford/PLX утверждает, что этот UART может работать со скоростью до 15 Мбит/с. Варианты PCI Express от Oxford/PLX интегрированы с контроллером PCIe DMA основного производителя, управляющим шиной. Этот контроллер DMA использует сигналы режима DMA UART, которые были определены для 16550. Контроллер DMA требует, чтобы ЦП настраивал каждую транзакцию и опрашивал регистр состояния после начала транзакции, чтобы определить, завершена ли транзакция. Каждая транзакция DMA может передавать от 1 до 128 байт между буфером памяти и UART. Варианты PCI Express также могут позволить ЦП передавать данные между собой и UART с помощью 8-, 16- или 32-битной передачи при использовании программируемого ввода-вывода. |
16С950 | |
16954 | Четырехпортовая версия 16950/16C950. 128-байтовые буферы. Этот UART может поддерживать максимальную стандартную скорость последовательного порта 921,6 кбит/с, если максимальная задержка прерывания составляет 1 миллисекунду. Этот UART поддерживает 9-битные символы в дополнение к 5–8-битным символам, которые поддерживают другие UART. Его представила компания Oxford Semiconductor, которая сейчас принадлежит PLX Technology. Oxford/PLX утверждает, что этот UART может работать со скоростью до 15 Мбит/с. Варианты PCI Express от Oxford/PLX интегрированы с контроллером PCIe DMA основного производителя, управляющим шиной. Этот контроллер DMA управляется сигналами режима DMA UART, которые были определены для 16550. Контроллер DMA требует, чтобы ЦП настраивал каждую транзакцию и опрашивал регистр состояния после начала транзакции, чтобы определить, завершена ли транзакция. Каждая транзакция DMA может передавать от 1 до 128 байт между буфером памяти и UART. Варианты PCI Express также могут позволить ЦП передавать данные между собой и UART с помощью 8-, 16- или 32-битной передачи при использовании программируемого ввода-вывода. |
16C954 | |
16C1550/16C1551 | UART с 16-байтовыми буферами FIFO. До 1,5 Мбит/с. ST16C155X несовместим с отраслевым стандартом 16550 и не будет работать со стандартным драйвером последовательного порта в Microsoft Windows. |
16C2450 | Двойной UART с 1-байтовыми буферами FIFO. |
16C2550 | Двойной UART с 16-байтовыми буферами FIFO. Контакт-к-контакту и функциональная совместимость с 16C2450. Программное обеспечение совместимо с INS8250 и NS16C550. |
SCC2691 | В настоящее время производится NXP , 2691. [5] представляет собой одноканальный UART, который также включает в себя программируемый счетчик/таймер. 2691 имеет однобайтовый регистр хранения передатчика и 4-байтовый приемный FIFO . Максимальная стандартная скорость 2692 составляет 115,2 кбит/с. 28L91 представляет собой версию 2691, совместимую с предыдущими версиями, с возможностью выбора 8- или 16-байтовых FIFO передатчика и приемника, улучшенной поддержкой расширенных скоростей передачи данных и более быстрыми характеристиками синхронизации шины, что делает устройство более подходящим для использования с высокопроизводительными микропроцессорами. И 2691, и 28L91 также могут работать в режимах TIA-422 и TIA-485 , а также могут быть запрограммированы на поддержку нестандартных скоростей передачи данных. Устройства выпускаются в корпусах PDIP-40, PLCC-44 и 44-контактных QFP и легко адаптируются к шинам Motorola и Intel . Они также успешно адаптированы к автобусам 65С02 и 65С816 . 28L91 будет работать от напряжения 3,3 или 5 вольт. |
SCC28L91 | |
SCC2692 | Эти устройства, производимые в настоящее время компанией NXP, представляют собой двойные UART (DUART), состоящие из двух каналов связи, связанных с ними регистров управления и одного счетчика/таймера. Каждый канал связи программируется независимо и поддерживает независимые скорости передачи и приема данных. 2692 имеет однобайтовый регистр хранения передатчика и 4-байтовый FIFO приемника для каждого канала. Максимальная стандартная скорость обоих каналов 2692 составляет 115,2 кбит/с. 26C92 представляет собой версию 2692, совместимую снизу вверх, с 8-байтовыми FIFO передатчика и приемника для повышения производительности во время непрерывной двунаправленной асинхронной передачи (CBAT) по обоим каналам при максимальной стандартной скорости 230,4 кбит/с. Буква C в номере детали 26C92 не имеет никакого отношения к процессу изготовления; все UART NXP являются устройствами CMOS . 28L92 — это совместимая с более высокой версией версия 26C92, имеющая выбираемые 8- или 16-байтовые FIFO передатчика и приемника, улучшенная поддержка расширенных скоростей передачи данных и более быстрые характеристики синхронизации шины, что делает устройство более подходящим для использования с высокопроизводительными микропроцессорами. 2692, 26C92 и 28L92 могут работать в режимах TIA-422 и TIA-485, а также могут быть запрограммированы на поддержку нестандартных скоростей передачи данных. Устройства выпускаются в корпусах PDIP-40, PLCC-44 и 44-контактных QFP и легко адаптируются к шинам Motorola и Intel. Они также успешно адаптированы к автобусам 65С02 и 65С816. 28L92 будет работать от напряжения 3,3 или 5 вольт. |
SC26C92 | |
СК28Л92 | |
SCC28C94 | Четверной UART 28C94 (QUART), производимый в настоящее время компанией NXP, функционально аналогичен паре DUART SCC26C92, смонтированных в общем корпусе, с добавлением системы арбитражных прерываний для эффективной обработки в периоды интенсивной активности канала. Присутствуют некоторые дополнительные сигналы для поддержки функций управления прерываниями, а вспомогательные контакты ввода/вывода расположены иначе, чем у 26C92. В остальном модель программирования 28C94 аналогична модели 26C92: для полного использования всех функций требуются лишь незначительные изменения кода. 28C94 поддерживает максимальную стандартную скорость 230,4 кбит/с, доступен в корпусе PLCC-52 и легко адаптируется к шинам Motorola и Intel. Он также успешно адаптирован к шине 65С816. |
SCC2698B | Восьмеричный UART 2698 (OCTART), производимый в настоящее время компанией NXP, по существу представляет собой четыре DUART SCC2692 в одном корпусе. Технические характеристики такие же, как у SCC2692 (а не у SCC26C92). Из-за отсутствия FIFO передатчика и небольшого размера FIFO приемника 2698 может вызвать «шторм» прерываний, если все каналы одновременно участвуют в непрерывной двунаправленной связи. Устройство выпускается в корпусах PDIP-64 и PLCC-84 и легко адаптируется к шинам Motorola и Intel. Модель 2698 также была успешно адаптирована к автобусам 65C02 и 65C816. |
SCC28L198 | Выпускаемый в настоящее время NXP, 28L198 OctART, по сути, представляет собой усовершенствованную версию SCC28C94 QUART, описанную выше, с восемью независимыми каналами связи, а также системой арбитражных прерываний для эффективной обработки в периоды интенсивной активности канала. 28L198 поддерживает максимальную стандартную скорость 460,8 кбит/с, доступен в корпусах PLCC-84 и LQFP-100 и легко адаптируется к шинам Motorola и Intel. 28L198 будет работать от напряжения 3,3 или 5 вольт. |
Z85230 | Синхронный/Асинхронный режимы (USART), [16] 2 порта. Предоставляет сигналы, необходимые стороннему контроллеру DMA, необходимому для выполнения передачи DMA. 4-байтовый буфер для отправки и 8-байтовый буфер для приема на канал. Режимы SDLC/HDLC. 5 Мбит/с в синхронном режиме. |
Хейс ESP | 1 КБ Буферы , 921,6 Кбит/с , 8 портов. [17] |
Экзар XR17V352, XR17V354 и XR17V358 | Двойные, четырехъядерные и восьмеричные UART PCI Express с набором регистров, совместимым с 16550, 256-байтовые TX и RX FIFO, программируемые уровни запуска TX и RX, счетчики уровней TX/RX FIFO, генератор дробной скорости передачи данных, автоматическое оборудование RTS/CTS или DTR/DSR управление потоком с программируемым гистерезисом, автоматическое программное управление потоком Xon/Xoff, полудуплексный выход управления направлением RS-485 с программируемой задержкой переключения, многоточечный режим с автоматическим определением адреса, инфракрасный (IrDA 1.1) кодер/декодер данных. Для них указана скорость до 25 Мбит/с. Даташиты датированы 2012 годом. |
Экзар XR17D152, XR17D154 и XR17D158 | Двойные, четырехъядерные и восьмеричные UART шины PCI с набором регистров 5G, совместимым с 16C550, 64-байтовые FIFO передачи и приема, счетчики уровней FIFO передачи и приема, программируемый уровень триггера TX и RX FIFO, автоматическое управление потоком RTS/CTS или DTR/DSR, автоматическое Программное управление потоком данных Xon/Xoff, управляющий выход RS485 HDX с выбираемой задержкой переключения, инфракрасный (IrDA 1.0) кодер/декодер данных, программируемая скорость передачи данных с прескалером, скорость последовательной передачи данных до 6,25 Мбит/с. Таблицы данных датированы 2004 и 2005 годами. |
Экзар XR17C152, XR17C154 и XR17C158 | Двойные, четырех- и восьмеричные UART шины PCI 5 В с совместимыми регистрами 16C550, 64-байтовые FIFO передачи и приема, счетчики уровня FIFO передачи и приема, автоматическое управление потоком RTS/CTS или DTR/DSR, автоматическое программное управление потоком Xon/Xoff, RS485 Полудуплексное управление с выбираемой задержкой, инфракрасный (IrDA 1.0) кодер/декодер данных, программируемая скорость передачи данных с прескалером, скорость последовательной передачи данных до 6,25 Мбит/с. Таблицы данных датированы 2004 и 2005 годами. |
Экзар XR17V252, XR17V254 и XR17V258 | Двойные, четырехъядерные и восьмеричные UART шины PCI 66 МГц с поддержкой управления питанием, набор регистров, совместимый с 16C550, 64-байтовые TX и RX FIFO со счетчиками уровней и программируемыми уровнями запуска, дробный генератор скорости передачи данных, автоматический аппаратный поток RTS/CTS или DTR/DSR управление с программируемым гистерезисом, автоматическое программное управление потоком Xon/Xoff, полудуплексный выход управления направлением RS-485 с выбираемой задержкой переключения, инфракрасный кодер/декодер данных (IrDA 1.0), программируемая скорость передачи данных с предварительным делителем. Таблицы данных датированы 2008 и 2010 годами. |
UART в модемах
[ редактировать ]Модемы для персональных компьютеров, подключаемые к разъему материнской платы, также должны иметь на карте функцию UART. Оригинальный чип 8250 UART, поставляемый с персональным компьютером IBM, имел по одному символу буфера для приемника и передатчика, а это означало, что коммуникационное программное обеспечение работало плохо на скоростях выше 9600 бит/с, особенно при работе в многозадачной системе или при обработке прерываний. от дисковых контроллеров. Высокоскоростные модемы использовали UART, которые были совместимы с исходным чипом, но включали дополнительные буферы FIFO, что давало программному обеспечению дополнительное время для ответа на входящие данные.
Взгляд на требования к производительности при высоких скоростях передачи данных показывает, почему 16-, 32-, 64- или 128-байтовый FIFO является необходимостью. Спецификация Microsoft для системы DOS требует, чтобы прерывания не отключались более чем на 1 миллисекунду за раз. [ нужна ссылка ] [ сомнительно – обсудить ] Некоторые жесткие диски и видеоконтроллеры нарушают эту спецификацию. Скорость 9600 бит/с будет доставлять символ примерно каждую миллисекунду, поэтому 1-байтового FIFO должно быть достаточно на этой скорости в системе DOS, которая соответствует максимальному времени отключения прерываний. Ставки выше этого могут получить новый символ до того, как будет получен старый, и, таким образом, старый символ будет потерян. Это называется ошибкой переполнения и приводит к потере одного или нескольких символов.
16-байтовый FIFO позволяет получить до 16 символов, прежде чем компьютеру придется обработать прерывание. Это увеличивает максимальную скорость передачи данных, которую компьютер может надежно обрабатывать, с 9600 до 153 000 бит/с, если у него есть мертвое время прерывания в 1 миллисекунду. 32-байтовый FIFO увеличивает максимальную скорость до более чем 300 000 бит/с. Второе преимущество наличия FIFO заключается в том, что компьютеру приходится обслуживать только 8–12% большего количества прерываний, что дает больше времени процессору для обновления экрана или выполнения других задач. Таким образом, реакция компьютера также улучшится.
Эмуляция
[ редактировать ]UART Поскольку протокол связи прост, его можно эмулировать путем побитового изменения GPIO контактов в программном обеспечении современных микроконтроллеров (например, Arduino) . [18] или Крошка [19] ) или на программируемых конечных машинах ввода-вывода (например, Raspberry Pi Pico ). PIO [20] [21] или NXP FlexIO от [22] ).
См. также
[ редактировать ]- Автоматическое определение скорости передачи данных
- Бод
- Битрейт
- Сравнение синхронной и асинхронной сигнализации
- Частоты кварцевого генератора
- МИДИ
- Синхронная последовательная связь
Ссылки
[ редактировать ]- ^ «RS-232 против последовательной связи TTL — SparkFun Electronics» . www.sparkfun.com .
- ^ Адам Осборн, Введение в микрокомпьютеры, том 1: Основные понятия , Osborne-McGraw Hill, Беркли, Калифорния, США, 1980. ISBN 0-931988-34-9 стр. 116–126
- ^ Техасский инструмент (01 марта 2021 г.). «Универсальный асинхронный приемник/передатчик (UART)» (PDF) . ti.com . п. 6, «2.3.1 Преобразование напряжения с помощью UART» . Проверено 25 августа 2023 г.
- ^ «Определение требований к точности часов для связи UART» (PDF) . ан2141 . Максим Интегрированный . 7 августа 2003 г. Проверено 1 ноября 2021 г.
- ^ Jump up to: а б «Универсальный асинхронный приемник/передатчик (UART)» (PDF) . SCC2691 . Филипс НХП . 04 августа 2006 г. п. 14 . Проверено 1 ноября 2021 г.
- ^ Jump up to: а б К. Гордон Белл, Дж. Крейг Мадж, Джон Э. Макнамара, Компьютерная инженерия: взгляд DEC на проектирование аппаратных систем , Digital Press, 12 мая 2014 г., ISBN 1483221105 , с. 73
- ^ Эллисон, Дэвид. «Куратор отдела информационных технологий и общества Национального музея американской истории Смитсоновского института» . Устные и видеоистории Смитсоновского института . Проверено 14 июня 2015 г.
- ^ Устная история Гордона Белла , 2005 г., по состоянию на 19 августа 2015 г.
- ^ Технический справочник 6025008 (PDF) . Справочная библиотека по аппаратному обеспечению персонального компьютера. ИБМ. Август 1981. стр. 2–123.
- ^ «Продукты ФТДИ» . www.ftdichip.com . Проверено 22 марта 2018 г.
- ^ Взаимодействие с PDP-11/05: UART , Blinkenbone.com, по состоянию на 19 августа 2015 г.
- ^ «Спецификация продукта Zilog Z8440/1/2/4, Z84C40/1/2/3/4. Контроллер последовательного ввода-вывода» (PDF) . 090529 zilog.com
- ^ «Загрузка документов Zilog» (PDF) . www.zilog.com . Проверено 22 марта 2018 г.
- ^ Тсо, Теодор Ю. (23 января 1999 г.). "Re: Последовательная связь с 16650" . Почтовый архив . Проверено 2 июня 2013 г.
- ^ «Часто задаваемые вопросы: драйверы UART и TurboCom 16550A, 1994 г.» . Проверено 16 января 2016 г.
- ^ Зилог. «Руководство пользователя SCC/ESCC UM010901-0601» (PDF) . leocom.kr . Проверено 13 мая 2023 г.
- ^ bill.herrin.us - Руководство по расширенному последовательному порту Hayes ESP с 8 портами , 2 марта 2004 г.
- ^ «Библиотека SoftwareSerial | Документация Arduino» . Ардуино . 05.10.2022. Архивировано из оригинала 01 июня 2023 г. Проверено 10 июня 2023 г.
- ^ Стоффреген, Пол. «Библиотека AltSoftSerial для дополнительного последовательного порта» . www.pjrc.com . Архивировано из оригинала 22 марта 2023 г. Проверено 10 июня 2023 г.
- ^ «Пример последовательной связи Raspberry Pi Pico (MicroPython)» . Электродостоверный . 24 января 2023 г. Архивировано из оригинала 3 июня 2023 г. Проверено 10 июня 2023 г.
- ^ МакКинни, Джош (5 ноября 2022 г.). «Программируемый ввод-вывод (PIO) для MIDI с помощью Rasberry Pi Pico» . Джошка.нет . Архивировано из оригинала 4 апреля 2023 г. Проверено 10 июня 2023 г.
- ^ Кренек, Павел (2015). «Эмулирование UART с помощью FlexIO» (PDF) . НХП . Архивировано (PDF) из оригинала 5 октября 2022 г. Проверено 10 июня 2023 г.
Дальнейшее чтение
[ редактировать ]- Последовательный порт в комплекте: COM-порты, виртуальные COM-порты USB и порты для встраиваемых систем ; 2-е издание; Ян Аксельсон; Лейквью Исследования; 380 страниц; 2007 г.; ISBN 978-1-931-44806-2 .
- Последовательный порт завершен: программирование и схемы для каналов и сетей RS-232 и RS-485 ; 1-е издание; Ян Аксельсон; Лейквью Исследования; 306 страниц; 1998 год; ISBN 978-0-965-08192-4 .
- Последовательный порт и микроконтроллеры: принципы, схемы и исходные коды ; 1-е издание; Гжегож Немировский; Создать пространство; 414 страниц; 2013 г.; ISBN 978-1-481-90897-9 .
- Последовательное программирование (Викибук) .
Внешние ссылки
[ редактировать ]- Учебное пособие по последовательным портам и UART FreeBSD включает стандартные определения сигналов, историю микросхем UART и распиновку наиболее часто используемого разъема DB25.
- UART Tutorial for Robotics , содержит множество практических примеров.