Для чего нужен usb rs232

Обновлено: 03.07.2024

Может кто-нибудь сказать мне, почему люди используют USB или RS232. Они оба являются последовательными портами, верно? И я понимаю, что USB намного быстрее (особенно USB3.0), но если люди тоже захотят, я уверен, что они могут сделать преемника RS232, который так же быстро.

Итак, каковы преимущества и недостатки обоих?

2 ответа

Каковы различия между USB и RS232?

Вы найдете гораздо больше, чем я могу рассказать вам о возможностях и недостатках RS232, начиная с поиска RS232, а затем «блуждающего по сети» и следуя за нитью, куда он ведет. Ни одна страница не расскажет вам все, кроме 10 или 20 быстрых снимков, которые покажут вам, насколько это было полезно и насколько ужасно все в одно и то же время.

USB предназначен как высокоскоростной расширяемый полностью стандартизированный интерфейс между 1 вычислительным устройством с использованием одного порта и периферийных устройств N, использующих один порт, каждый из которых управляется всеми сигналами в потоке данных. USB чрезвычайно сложно обеспечить интерфейсы низкого уровня. «Простые» интерфейсы являются общими, но они обеспечивают и скрывают очень большую степень сложности.

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

RS232

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

Однако [tm] [. ] RS232 был рассчитан на малую скорость (макс.) На несколько метров (обычно 9600 бит /с, до примерно 100 кбит /с, быстрее в особых ситуациях), по одному устройству на порт (исключения, подтверждающие правило).

Сигнализация была несбалансированной относительно земли с использованием около +/- 12V с логической на dfata = -V и логической на управление = + V. На исходном 25-контактном разъеме было много много сигналов управления, что привело к чрезвычайно широкому спектру нестандартных применений и несовместимости. Более поздняя версия уменьшила разъем до 9 контактов с еще достаточными управляющими сигналами, чтобы позволить людям совершенно разобраться в конфигурациях.

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

RS232 НЕ обеспечивает питание как таковое, хотя многие люди использовали его для питания оборудования по-разному, ни один из них не является стандартным. Наблюдение за линиями данных позволит идентифицировать сигналы данных. (Быстрые глаза и мозг, которые работают с подходящим количеством kbps, помогут).

Передача данных является однонаправленной по линии передачи и приема и использует асинхронное кадрирование.

Конструкция предназначена для соединения 1: 1 без возможности многократного перемещения при организации 1: N без нестандартных устройств.

USB

до USB2 - 4-х физическая проводная система с двумя линиями питания и двумя линиями данных. Нет физических линий управления. USB3 использует больше строк и деталей, которые лучше всего оставить для другого вопроса и ответа.

Начальная скорость была 12 Мбит /с, увеличена до 480 Мбит /с с USB2 и до 5 Гбит /с «Сверхскоростная» с USB3.

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

Передача данных использует сигнализацию дифференциального напряжения 0 /+ 5.

Передача данных имеет двунаправленную связь с правом собственности на «шину», являющуюся неотъемлемой частью протокола.

Соединение почти всегда на 1: 1 физически, но на одном порту может быть размещено несколько логических устройств. Соединение N физических устройств с одним восходящим портом обычно осуществляется с помощью «концентратора», но это, по существу, видимое проявление внутренней компоновки 1: N, которая является неотъемлемой частью конструкции.

Будут интересные проблемы с коннектором: -):

введите описание изображения здесь>> </p> <p> USB3.COM - USB3 сверхскоростные кабельные разъемы <a href=

отсюда

введите описание изображения здесь>> </p> <hr> <p> <a href=

Wikipedia RS232

Употребляя в своих статьях названия и определения: последовательный порт, serial port, communications port, COM-порт, интерфейс стандарта RS-232 я не был до конца уверен, что употребляю их в правильном контексте. Давайте разберёмся что, зачем, как и почему.

Прежде чем перейти к последовательному порту, чуть-чуть общей теории.

Классификация протоколов

А какие протоколы бывают?

По порядку передачи данных протоколы (шины данных) делятся на:

О последовательных шинах речь пойдет ниже, но пару слов нужно сказать о параллельном соединении

Параллельный протокол передачи данных (параллельная шина данных)

Передача нескольких сигналов с данными одновременно по нескольким параллельным каналам.

В последнее время предпочтение отдается последовательному соединению вместо параллельного, так как экономически более выгодно организовать передачу данных по одному (двум) проводам чем по нескольким параллельным, это касается и электрической разводки платы и внутренней разводки чипа, и соединение периферийных устройств. Но параллельное соединение из физического мира ушло в "мир эфира" в радиосвязь, вот там очень выгодно устанавливать и осуществлять параллельную передачу данных.

Примеры чаще всего это устаревшие шины такие как: принтерный порт (IEEE 1284/Centronics), ISA, ATA (IDE), SCSI , PCI, FSB (Front Side Bus)

По времени передачи и приему информации связь делится:

  • Симплексная связь - только передача или прием данных.
  • Полудуплексная связь прием и передача разнесены во времени. Сначала прием, а затем передача или наоборот.
  • Дуплекс - одновременно прием и передача.

Перейдем сразу к последовательному протоколу, он делится на:

Асинхронный протокол - данные передаются без внешнего тактирующего устройства. Данные можно передавать по двум проводам прием/передача. Но нужны дополнительные усилия для синхронизации (пример UART, RS-232, 1-Wire)

Синхронный протокол - данные синхронизированы с тактирующим устройством (примеры SPI и I2C)

И у меня вопрос к читателям, а протокол USB какой синхронный или асинхронный?

UART

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

В 60-70годах в нашей стране не принято пользоваться англоязычными терминами поэтому UART получает свое, русское название - УАПП (Универсальный асинхронный приёмопередатчик) как и все остальные названия, например НГМД и так далее. Хорошее время было, все кратко и понятно, например скажешь УВК-1 и сразу всем все понятно, разговор идет о устройстве ввода координатном или о мышке.

Что такое UART

UART это физическая реализация интерфейса в виде логической схемы (микросхемы) которая обеспечивает прием и передачу информация в последовательном виде, в пределах одного чипа или одного устройства, на короткие дистанции. Он непригоден для приема, передачи данных на "длинные дистанции". Причем понятие длинные и короткие взяты в кавычки и это не зря. Так как все в мире относительно и в данном случае то же, но попробуем разобраться, что за такие "длинные и короткие дистанции". Когда микроконтроллеры и другие низкоуровневые ИС взаимодействуют между собой по последовательному протоколу, они делают это на уровне TTL (транзисторно-транзисторная логика). Последовательные сигналы TTL живут между диапазоном напряжения питания микроконтроллера - обычно от 0 до 5.0 вольт (так было раньше, это уже классика) ну или до 3,3 вольт (так сейчас или еще меньше до 1,8 и 1,6 вольт КМОП) Сигнал такого диапазона да еще и не защищенный передать далеко не получится иногда проблемы возникают тут сразу же, при передачи от одной микросхемы до другой, вспомним микросхемы серии К(К155, К1533, К153) из недостатков которых: высокие требования к напряжению питания, отклонение не более 0,5 В, низкая помехоустойчивость, высокие требование в правильной разводки шины земли. Так вот передать далеко эти сигналы не получится, а что делать? Самое простое тупо усилить - поднять напряжение питания так родился интерфейс RS-232

Интерфейс RS-232

(Recommended Standard 232, рекомендованный стандарт RS-232, EIA232)

Это стандарт физического уровня, надстройка над UART для приема передачи данных другим устройствам, т. е. на "длинные дистанции

В далекие годы 60 годы прошлого века (1962 год) особо не стали заворачивается с обработками сигнала, да и мощностей подходящих не было, а потом, видимо, вспомнили телеграф.

Первый трансатлантический кабель обладал очень низкой скоростью передачи 103 слова за 16 часов, а все из за того, что на огромной дистанции (чудовищная ёмкость и сопротивление длиннющего кабеля) сигналы просто "размазывало" по длинному кабелю. Для повышения скорости увеличивали напряжение и в конце концов дошли до 2000 вольт после чего кабель благополучно сгорел.

Вот и тут просто взяли да повысили напряжение логического сигнала, но на самом деле не совсем просто, а вот так, см. инже

Электрический принцип работы RS-232

Логический нуль RS-232 лежит в пределе от +3 до +12 вольт, а единица от -3 до -12, соответственно. Между -3 и +3 вольт зона ничего, не нуля и не единицы, зона неопределённости. Т. е. разработчики стандарта инвертировали сигнал, сделали отрицательное напряжение для единицы и повысили и понизили напряжение до -12, +12вольт (на самом деле до -15, +15 вольт, а иногда и до 25 вольт) Пишут даже, что в блоке питания компьютера именно поэтому и появилась -12 вольт. Хорошо же они поработали над стандартом для которого пришлось модифицировать и блок питания, сейчас бы такая фишка не прошла, хотя.

Максимальная длинна кабеля по стандарту 20 метров, но нормально прием идет до 15 метров на скорости 19200 бод, но можно передать и на 900 метров снижая скорость (помните трансатлантический кабель) до 2400бод. А вообще максимальная скорость передачи составляет 115 200 бод

Это единица измерения скорости передачи символов (символьной скорости) или скорости модуляции в символах в секунду или импульсах в секунду.

С этими БОДами сплошная путаница, обратите внимание на определение, сколько ИЛИ, давайте разбираться.

Символьная скорость

Сначала БОД придумали для того чтобы определить сколько символов, букв можно передать за секунду по телетайпу, а кодировка тогда была 5 битная. Кодировка двоичная, импульс - единица, нет импульса - нолик. Все логично и понятно.

Импульсах в секунду

Потом по линиям связи стали общаться не только люди, но и машины и передавать не только символы - буквы, но и служебные биты например синхронизации, к чему их отнести к какой букве? А канал то они то же занимают. И вот тут и началась путаница, передавался не только символ, но и служебная информация. Как считать?

Квадратурная амплитудная модуляция (КАМд)

Но потом все еще больше запуталось, потому как в одном импульсе с помощью, например квадратурной амплитудной модуляции (КАМд), можно зашифровать не один бит, а например до 16 бит.

В общем все в конце концов вообще перепуталось!

Иногда в бодах выражают полную ёмкость канала.

Полная ёмкость канала = служебная информация в бит/c + эффективная информация в бит/c.

Преобразование UART в RS-232

Самый известный преобразователь интерфейса – это микросхема, разработанная фирмой MAXIM, которая и получила от нее часть своего названия (MAX 232). Эта микросхема из 5 вольт генерирует отрицательное напряжение, чтобы сопрягать 5-вольтовый UART с RS-232.


1.JPG" />

Добрый день\вечер.
Бывает нужно подключиться куда нибудь где есть rs232, а железного(встроенного) com порта нету. Тут к нам на помощь приходит виртуальный com порт. Итого имеем преобразователь usb<->rs232.
Сам шнурок вроде как делает японская фирма
Что продают на али и ебэя не берусь с уверенностью сказать, но думаю подделка. Всё же решил купить на ебэе и посмотреть на шнурок.

Рассматривал к покупке такой и обозреваемый, решил купить обозреваемый.

Шнурок длинной пол метра по кабелю, с разъёмами длиннее. Корпус не разборный, похож на жёсткую резину.
Имеет три светодиода, power, rx и tx, все красные и довольно яркие. По правде говоря не совсем удобно смотреть на них, они утоплены, расположены близко, все одного цвета, и яркие. Поэтому что бы увидеть передачу\приём, надо взять шнурок и внимательно наблюдать…

Так как корпус не разборный, то посмотреть на начинку не удастся, но думаю можно поверить фоткам с али 1 и 2.
Судя фотографиям с али начинка шнурка состоит из:
-микросхемы виртуального комп порта FT232BL
-преобразователя уровней ttl<->rs232 ADM213
-EEPROM памяти AT93C46
-рассыпухи.
Соответственно никакой гальванической развязки нету.







скорость 9600 бод

скорость 256000 бод


Все ножки на разъёме DB-9 распаяны и функциональны(полностью работают).
Просто так воткнуть преобразователь в другой разъём DB-9 не получиться по причине «гаек» на двух разъёмах которые не дадут всунуть разъём в разъём, ну и ведь надо ещё «перекрестить» tx и rx, поэтому надо использовать ещё один «шнурок-переходник».






на скрине видно ЭХО


Попробовал получить ЭХО текстового файла через Terminal.

сам текстовый файл

принятый в виде ЭХО текстовый файл


Если попробовать передать символы всякие(кракозябры которые) и получить ЭХО, то почему то некоторые байты пропадают, некоторые не верно принимаются(нижнее окно-посланное, верхнее-принятое ЭХО)


А вот если при передаче текстового файла поставить задержку например 20мс после каждого посланного байта, то ЭХО уже нормальное получается(нижнее окно-посланное, верхнее-принятое ЭХО). Почему так происходит я не знаю.


Если попробовать передать всякие символы и текст без задержки после каждого переданного байта, то почему то символы(кракозябры) плохо передаются, а вот текст нормально. Опять же почему не понятно.

ADD: всё таки похоже что глючит программа terminal v1.9b

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

если попробовать получить эхо в realterm, то все без проблем, передал картинку, всё как надо.

Как обычно я предлагаю заняться странным — попробовать подключить несколько старых RS232 устройств, через один USB порт с помощью синей изоленты и смекалки. Статья не будет большой, скорее это описание что где взять и зачем вообще все это делать.




Зачем?

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

Как правило «мозгами» такого комплекса является компьютер у которого 100500 выходов RS232. Из примеров могу привести место кассира в супермаркете, банкоматы и тому подобное. С первым случаем столкнулся я.


Эти компьютеры не блещут мощностью, но отличаются космической стоимостью. Естественно он перестает отвечать требованиям современных технологий и многим приходит в голову идея заменить их на обычный ПК и получить приличную мощность по адекватной цене, однако быстро выясняется что RS232 на новых ПК вымер как класс. Теперь этот интерфейс стал сугубо специализированным. Соответственно надо или самостоятельно прикручивать кучу RS232 или искать уже готовое спец решение.

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

Люди не посвященный в тему сразу радостно покупают пучок китайских USBtoRS232 переходников, а дальше все идет очень печально. Лучше этого не делать. Вторым вариантом является покупка специализированной платы расширения с кучей RS232. Этот вариант уже лучше и имеет право на жизнь, но тоже имеет свои недостатки. Например стоимость и проблемы с дровами если используется не Windows или не та версия. Так же не маловажным фактором является доступность в будущем, так как что-то выходит из строя и парк может расширятся в будущем. Потом оказывается что конкретная модель уже не выпускается или не постановляется в конкретную местность и т.д. В общем привязывать себя к конкретному устройству это всегда опасно, особенно если можно этого не делать.


Пробуем что-то сделать

Может показаться странным что примитивные RS232 устройства так сложно и дорого подключить по нормальному если по сути там обычно простые протоколы и примитивный физический уровень. А все потому что обычно подобные аппаратные комплексы используются в коммерческих доходных сферах и покупка оборудования по таким ценам оправдана, а само оборудование уже перешло в разряд специального. Спец оборудование = спец цена вопроса.

Однако все это не мешает попробовать собрать свой бюджетный велосипед. Бонусом получим возможность менять поведение такого своеобразного RS232 мультиплексора и полностью обойдем проблему написания USB драйверов. HID профиль поддерживается почти везде.

Однажды я прочел отличную статью автора RaJa До этого я интересовался USB, но до практики не доходило. В наличии у меня было несколько дешевых отладочных плат, китайских клонов Blue Pill на микроконтроллере Stm32f103c8t6. Сама история и идея создания этой платы очень интересная, стоит поинтересоваться.


Этот микроконтроллер отличается тем что имеет три UART и аппаратную поддержку USB. Это то что может быть нам интересно в разрезе нашей задумки, а вообще микроконтроллер на этой плате, работает на частоте 72Mhz и по характеристикам порвет любое Arduino схожего формфактора. Но самое главное преимущество это повсеместная распространенность этой платы. Я не знаю более простых и дешевых способов пощупать «железный» USB.


Добавив три дешевых преобразователя RS232toUART MAX2323 и немного «рассыпухи» можно собрать своеобразный конвертер интерфейса 3хRS232 <=> USB.

В моем случае нужно было подключить три RS232 устройства к Raspberry Pi 3. Если использовать обычные RS232 <=> USB переходники то в итоге сталкиваешься с тем что в системе куча одинаковых устройств к которым не понятно что подключено и все это дико глючит, а выглядит еще более печально.

Если вы немного капнете в сторону какие микросхемы USB to UART доступны повсеместно, то обнаружите что там полно подделок. Думаю не стоит объяснять как это все потом себя ведет с оригинальными драйверами. И никто не сможет гарантировать вам что даже брендовые переходники вдруг не закупят левую партию микросхем. Удешевление производства оно происходит повсеместно.

В итоге придумалась примерно такая простая схема коммутации ее даже можно изобразить в стиле Arduino:


Я отломал резистор который подтягивает D+ к питанию и сделал эту подтяжку управляемой с помощью транзистора. Она отвечает за опознание устройства на USB шине.

Распиновка разъемов RS232 в программе (Fritzing) где я набрасывал схему странноватая, но думаю никому не составит труда найти ее в интернете, контакты задействованы как обычно 2,3 и 5. А еще удобнее будет использовать платы конвертера UART to RS232 котором уже присутствует разъем RS232.


Low Level

Код для микроконтроллера я писал и отлаживал с помощью IDE EmBitz (если честно то я был удивлен как легко завелась эта IDE, особенно после танцев с бубном вокруг CooCox. ). За основу взял проект из статьи выше. Это первый пример который у меня заработал сразу после заливки.

Я добавил работу с тремя UART и изменил структуру HID репортов так чтобы обмен с ПК шел всегда по 64 байта с контрольной суммой (crc8).

Попытался организовать автопереподключение устройства если соединение по USB не прошло корректно. Не претендую на супер алгоритм, должен признать что не являюсь специалистом по USB. Отдельный транзистор, отображенный на схеме, управляемый отдельным пином B5 подтягивает одну из сигнальных линий USB к питанию что имитирует включение устройства и хост проводит инициализацию устройства. Если попытка не удачная то происходит переподключение.

Было замечено что в Linux (Raspbian) процент не успешных подключений значительно меньше чем в Win 10, возможно этот результат получился из-за моих локальных технических условий.

Общий алгоритм похож на примитивный маршрутизатор, принимая пакет по USB мы смотрим какому UART оно предназначено и пересылаем туда, в обратную сторону аналогично. Есть немного обработки самих пакетов но это относится к конкретному RS232 оборудованию которое я подключал. Это были: экран покупателя Datecs dpd-201, стационарный лазерный сканер штрихкодов Datalogic Magellan 8300 и весы Digi DS890.


На фото выше тестовый образец устройства содержит еще DC-DC шим преобразователь питания на микросхеме MP2307.

Это нужно для того чтобы питать устройство от напряжения 10-24В (входное) и иметь возможность подключить дисплей покупателя который питается от такого же напряжения. После DC-DC шим преобразователя поулчаем 3.3В для всех остальных модулей. Для этого дисплея так же установлен «телефонный» разъем вместо RS232, не хотелось перепаивать стоковый штекер.

High level

Вторая часть софта это примеры и тесты собранные в сумбурный проект на Java написанный IDE IDEA. Предполагается что работа с устройством интегрируется в софт высокого уровня используя различные обертки по работе с USB стеком в зависимости от языка на кортом этот софт пишется. Сейчас сложно найти такой ЯП чтобы под него не существовало таких оберток. Отдельно для староверов отмечу что java и usb совместимы если готовить правельно, это доказано практикой и используется в коммерческом проекте.

В процессе тестирования выяснилось что работа в Linux и Windows с USB HID несколько отличается, работа отлаживалась через две библиотеки usb4java и hid4java. Работа через последнюю используется в Linux (Raspberry Pi 3).

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

Заключение

Представленное устройство это лишь одни из примеров как довольно легко можно приобщится к процессу создания нативных USB устройств и перестать наконец использовать переходники.

Не забываем плюсовать RaJa автора статью в которых на пальцах объясняется как пощупать железный USB и сохранить желание разбираться дальше.

Читайте также: