Com port uart: UART и с чем его едят / Хабр

UART и с чем его едят / Хабр

После Vogue истерии появилось множество вопросов, как подключить плату к компьютеру. И многие люди даже не понимают, что же такое UART. И я решил рассказать здесь какой это мощный инструмент.

Роутер превращается в компьютер, если к нему по UART подключить клавиатуру и дисплей

От телеграфа к COM-порту

Протокол UART (Universal asynchronous receiver/transmitter) или, по-русски, УАПП (универсальный асинхронный приемопередатчик) — старейший и самый распространенный на сегодняшний день физический протокол передачи данных. Наиболее известен из семейства UART протокол RS-232 (в народе – COM-порт, тот самый который стоит у тебя в компе). Это, наверное, самый древний компьютерный интерфейс. Он дожил до наших дней и не потерял своей актуальности.

Надо сказать, что изначально интерфейс УАПП появился в США как средство для передачи телеграфных сообщений, и рабочих бит там было пять (как в азбуке Морзе). Для передачи использовались механические устройства. Потом появились компьютеры, и коды ASCII, которые потребовали семь бит. В начале 60-х на смену пришла всем известная 8-битная таблица ASCII, и тогда формат передачи стал занимать полноценный байт, плюс управляющие три бита.

В 1971 году, когда уже начался бум микросхем, Гордон Белл для компьютеров PDP фирмы Western Digital сделал микросхему UART WD1402A. Примерно в начале 80-х фирмой National Semiconductor был создан чип 8520. В 90-е был придуман буфер к интерфейсу, что позволило передавать данные на более высоких скоростях. Этот интерфейс, не претерпев практически никаких изменений, дошел и до наших дней

Физика интерфейса

Чтобы понять, что роднит и отличает разные UART-интерфейсы, разберем принцип работы самого популярного и любимого нами протокола RS-232. Дотошно расписывать все тонкости его работы я не буду. Об этом написан ни один десяток мегабайт статей, и если ты умеешь пользоваться Гуглом, то без проблем найдешь всю необходимую информацию.Com port uart: UART и с чем его едят / Хабр Но основы я расскажу, благо с ними можно уже круто всем рулить, а всякие фишки используются очень редко.

Основные рабочие линии у нас – RXD и TXD, или просто RX и TX. Передающая линия – TXD (Transmitted Data), а порт RXD (Received Data) – принимающая.

Эти линии СОМ-порта задействованы при передаче без аппаратного управления потоком данных. При аппаратном потоке задействованы еще дополнительные интерфейсные линии (DTS, RTS и пр.). Выход передатчика TX соединен с входом приемника RX и наоборот. Электрический принцип работы RS-232 отличается от стандартной 5-вольтовой TTL логики. В этом протоколе логический нуль лежит от +3 до +12 вольт, а единица от -3 до -12, соответственно. Промежуток от -3 до +3 вольт считается зоной неопределенности. Учти, что все напряжения указаны относительно корпуса компьютера, или земли. Теперь, я думаю, ты понимаешь, зачем в компьютерном блоке питания существует сразу два напряжения: -12 и +12 вольт. Они были введены специально для работы СОМ-порта.

Приём сигнала по RS-232 (взято из книги М.Гук «Аппаратные интерфейсы ПК»)

Такая большая амплитуда рабочих напряжений, целых 24 вольта, нужна в первую очередь для помехоустойчивости линий связи. По стандарту, длина кабеля, по которому у нас бегают данные, может быть 15 м. Хотя на практике люди умудрялись заставлять его работать даже на 25 м. Электрические параметры RS-232 – это главная характеристика, которая отличает его от других протоколов семейства UART.

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

Стандартная посылка занимает 10 бит. Но правило это распространяется только на стандартные настройки СОМ-порта. В принципе, его можно перенастроить так, чтобы он даже интерфейс One-Wire понимал. В режиме простоя, когда по линии ничего не передается, она находится в состоянии логической единицы, или -12 вольт. Начало передачи обозначают передачей стартового бита, который всегда равен нулю.Com port uart: UART и с чем его едят / Хабр Затем идет передача восьми бит данных. Завершает посылку бит четности и стоповый бит. Бит четности осуществляет проверку переданных данных. Стоповый бит говорит нам, что пересылка данных завершена. Надо отметить, что STOP-бит может занимать 1, 1.5, и 2 бита. Не стоит думать, что это дробные биты, это число говорит только о его длительности. Стоповый бит, как и стартовый, равен нулю.


Сигнал UART на экране осциллографа. Виден старт бит, данные и стоповый бит. Спасибо DIHALTза картинку

Скорость работы

Даже если тебе раньше никогда не приходилось работать с СОМ-портом, по крайней мере, в модеме ты должен знать номинальные скорости работы: 9600, 28800, 33600, 56000 и т.п. Сколько бит в секунду убегает из нашего порта? Вот смотри, допустим, скорость у нас 9600 бит в секунду. Это означает, что передача одного бита будет занимать 1/9600 секунды, а пересылка байта – 11/9600. И такая скорость для байта верна только в случае, если стоп-бит будет занимать один бит. В случае, если он занимает два стоп-бита, то передача будет 12/9600. Это связано с тем, что вместе с битами данных передаются еще специальные биты: старт, стоп и бит четности. Линейка скоростей СОМ-порта стандартизирована. Как правило, все устройства работают на трех стандартных скоростях: 9600, 19200, 115200. Но возможны другие варианты, даже использование нестандартных скоростей или скорости, меняющейся во времени, – с этим я сталкивался при разборе полетов очередного устройства.

Такой разный протокол

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

Второй по распространению интерфейс после RS-232 – это RS-485. Он является промышленным стандартом, и передача в нем осуществляется по витой паре, что дает ему неплохую помехоустойчивость и повышенную скорость передачи до 4 мегабит в секунду.Com port uart: UART и с чем его едят / Хабр Длина провода тут может достигать 1 км. Как правило, он используется на заводах для управления разными станками.

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

В SMART-картах (SIM, спутниковое телевиденье, банковские карты) – тех самых устройствах, которые мечтает похачить каждый уважающий себя фрикер – тоже используется наш любимый UART. Правда, там полудуплексная передача данных, и логика работы может быть 1,8/3,3 и 5 вольт. Выглядит так, будто RX запаян с TX на одном конце и на другом – в результате, один передает, другой в этот момент слушает, и наоборот. Это регламентировано стандартом смарт-карт. Так мы точно знаем, сколько байт пошлем, и сколько нам ответит карточка. Тема достойна отдельной статьи. В общем, запомни, что UART есть практически везде.

Устройства, которые имеют на своём борту UART, по часовой стрелке: мышка, ридер-эмулятор SMART-карт, КПК Palm m105, отладочная плата для микроконтроллера ATtiny2313 (или AT89C2051), модем.

Сопряжение интерфейсов

Я уже глаза намозолил разными интерфейсами, но как с ними работать-то? Ну, с обычным RS-232 понятно, а, допустим, с 5-вольтовым юартом как быть? Все просто: существуют различные готовые микросхемы-преобразователи. Как правило, в маркировке они содержат цифры «232». Увидел в схеме микруху с этими цифирями – будь уверен: скорее всего, это преобразователь. Через такие микросхемы с небольшим обвязом и сопрягаются все интерфейсы UART. Я не буду рассказывать о промышленных интерфейсах, а скажу о тех преобразователях, которые интересуют нас в первую очередь.

Самый известный преобразователь интерфейса – это микросхема, разработанная фирмой MAXIM, которая и получила от нее часть своего названия (max232). Для ее работы требуется четыре конденсатора от 0,1 микрофарады до 4 микрофарад и питание 5 вольт. Удивительно, что эта микросхема из 5 вольт генерирует отрицательное напряжение, чтобы сопрягать 5-вольтовый UART с RS-232.Com port uart: UART и с чем его едят / Хабр

Существуют микросхемы сопряжения USB с UART, например, микросхема ft232rl. В Ubuntu для этой микросхемы уже встроены драйвера. Для Windows их придется качать с официального сайта. После установки драйверов в системе появится виртуальный СОМ-порт, и с ним уже можно рулить различными устройствами. Советую не принимать эти микросхемы, как единственно возможные. Найдется громадное количество более дешевых и интересных аналогов, посему наседай на Гугл и поймешь, что мир UARTа – это круто.

В целом, микросхемы стоят достаточно дорого и порой можно обойтись более сложными, но зато более дешевыми схемами на паре транзисторов.

Что нам это дает?

Как ты понял, интерфейс UART присутствует во многих устройствах, в которых стоит какой-либо процессор или контроллер. Я даже больше скажу: если там стоит контроллер, то юарт есть стопудово (только он не всегда может использоваться). Как правило, по этому интерфейсу идет наладка и проверка работоспособности девайса. Зачастую производитель умалчивает о наличии этого интерфейса в изделии, но найти его несложно: достаточно скачать мануал на процессор и, где находится юарт, ты будешь знать. После того, как ты получишь физический доступ к железяке по нашему интерфейсу, можно его настроить на свое усмотрение или даже заставить работать, так как надо тебе, а не как задумал производитель. В общем, – выжать максимум возможностей из скромного девайса. Знание этого протокола дает также возможность подслушать, что же творится в линиях обмена между различными процессорами, так как часто производители организуют целые юарт-сети в своем устройстве. В общем, применений много, главное – интуитивно понимать, как это делать.

Апдейтим роутер

Намедни я намутил себе WiFi-роутер WL-520GU и, прочитав статью Step’a «Level-up для точки доступа» (][ #106), успешно установил туда Linux. Но у меня возникли проблемы с монтированием swap-раздела жесткого диска. Так появилась необходимость посмотреть лог загрузки точки доступа – подмонтировался раздел или нет – причем, как говорится, на лету, чтобы сразу вносить необходимые изменения.Com port uart: UART и с чем его едят / Хабр Шестым чувством я подозревал, что в моем роутере просто обязан быть UART. Я взял в руки крестовую отвертку и начал его разбирать. Дело тривиальное, но с заковыркой – потайные винтики находятся под резиновыми ножками (если решишь повторить, помни, что при разборе ты лишаешься гарантии). Моему взору предстала достаточно скучная плата, где все «chip-in-one»: один центральный процессор, в который включено все, внешняя оператива, флеша, преобразователь питания и рядок разъемов с кнопками. Но на плате была не распаянная контактная площадка, точнее сказать, отверстия под иголки. Их было четыре штуки. Вот он UART, это очевидно! По плате даже без мультиметра видно, что крайние иголки – это +3,3 вольта и второй – земля. Средние контакты, соответственно, RX и TX. Какой из них что, легко устанавливается методом научного тыка (спалить интерфейс очень проблематично).

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

Собираем преобразователь

Чтобы подключить роутер к компу, необходимо сопрячь интерфейсы RS-232 с UARTом роутера. В принципе, можно подключить к USB, используя указанную выше микросхему FT232RL, – что я и сделал при первой проверке роутера. Но эта микросхема – в достаточно сложном для пайки корпусе, посему мы поговорим о более простых решениях. А именно – микросхеме MAX232. Если ты собираешься питаться от роутера, то там, скорее всего, будет 3,3 вольта, поэтому лучше использовать MAX3232, которая обычно стоит в КПК (схему распайки нетрудно найти в инете). Но в моем роутере присутствовало питание +5 вольт на входе, а указанных микросхем у меня великое множество, и я не стал заморачиваться. Для сборки нам потребуются конденсаторы 0,1 мкФ (4 штуки) и сама микросхема. Запаиваем все по традиционной схеме, и начинаем эксперименты.

Исходники для сборки

На выход я сразу повесил 9-пиновый разъем типа «папа», чтобы можно было легко подключить нуль-модемный кабель.Com port uart: UART и с чем его едят / Хабр Если ты помнишь, во времена DOSа такими кабелями делали сетку из двух компов и резались в «Дюкнюкем». Провод для наших целей собрать несложно. Правда, получится не полный нуль-модем и через него особо не поиграешь, но рулить точкой доступа будет самое то! Тебе понадобятся два 9-пиновых разъема типа «мама», корпуса к ним и провод, например, от старой мышки или клавы (главное, чтобы в нем было три провода). Сначала соединяем земли ¬- это пятый контакт разъемов; просто берем любой провод и с обоих сторон припаиваем к 5-му контакту. А вот с RX и TX надо поступить хитрее. С одного конца провода запаиваем на 3-й контакт, а с другого – на 2-й. Аналогично с третьим проводом, только с одного конца запаиваем на 2-й контакт, с другого – на 3-й. Суть в том, что TX должен передавать в RX. Прячем запаянные разъемы в корпус — и готов нуль-модемный кабель!

Распаянные иголки на плате роутера.

Для удобства монтажа в материнку роутера я впаял штырьковый разъем, а в монтажку с MAX232 – обратный разъем и вставил платку, как в слот. RX и TX роутера подбираются экспериментально.

Собраная плата

Теперь надо запитать микросхему преобразователя. Общий провод у нас присутствует уже прямо в разъеме на мамке роутера. А вот + 5 вольт находится прямо у входа питания роутера, в месте, где подключается адаптер. Точку нахождения 5 вольт определяем вольтметром, измеряя разные узлы относительно земли роутера.

Подключаем питание. Включаем и начинаем наши злостные эксперименты.

Прожигаем отверстие для вывода проводов

Распаянный СОМ-порт

Всё в сборе. Обратите внимание, что красный провод питания идёт к разъёму адаптера роутера. Узелок внутри сделан, для того чтобы рывком на оторвать припаянные провода.

Настройка терминала

Нам нужно настроить терминальную программу. В Винде все достаточно просто: запускаем Hyper Terminal, отключаем программную и аппаратную проверку данных, выставляем скорость 115200 и один стоповый бит.Com port uart: UART и с чем его едят / Хабр А вот в Линухе дело обстоит чуть хитрее. У меня Ubuntu, и рассказывать буду про нее. Для начала разберись, как в твоей сборке именуется СОМ-порт. В моем случае СОМ1 был ttyS0 (если использовать к примеру микросхему FT232, то он будет именоваться ttyUSB0). Для работы с ним я использовал софтинку minicom.

Запускай ее с параметрами: minicom -l -8 -c on -s. Далее выбирай «Настройки последовательного порта»:

Последовательный порт /dev/ttyS0

* Скорость/четность/биты 115200 8N1

* Аппаратное управление потоком — нет

* Программное управление потоком — нет

Сохраняем настройки. Софтина попробует проинициализировать модем — не обращай внимания. Чтобы вызвать меню, нажми <ctrl-a z>. Там можно менять настройки, например: включить/выключить эхо — Е.

Настройка

Я не рекомендую подключать микросхему преобразователя к роутеру, дабы проверить ее функционал. Допускается только брать с него питание. Проверка проходит очень просто — необходимо перемкнуть RX с TX. Сначала перемыкаешь в СОМ-порте 2-й и 3-й контакт — проверяешь настройки терминалки. Пишешь что-то на клаве: если символы возвращаются, значит, все ОК. Также проверяешь кабель, те же контакты. Потом подключаешь микросхему, и уже у нее на выходе ставишь перемычку. Я заостряю на этом внимание, потому что, например, у меня возникли проблемы, и ничего не работало, пока я все не проверил и не нашел ошибку.

После всех настроек можешь смело цеплять к роутеру и искать RX-TX на роутере, периодически выдергивая из него питание. Если все сделано правильно, то при подаче питания ты увидишь лог загрузки роутера. Принимай поздравления, теперь у тебя полный аппаратный рут, так, будто ты сидишь за монитором с клавой роутера.

Лог загрузки роутера в программе minicom

Автономное плаванье

Согласись, делать через терминальную программу то же самое, что удобнее сделать через SSH – не айс. Мне хотелось превратить роутер в автономный Linux-компьютер, со своей хитрой архитектурой.Com port uart: UART и с чем его едят / Хабр Для этого нужно, чтобы данные с клавиатуры передавались по UART, и по нему же выводились на монитор. Паять и разрабатывать устройство было лениво. Тогда-то и пришла идея заюзать для этих целей пылящийся без дела КПК. По сути, наладонник будет исполнять роль контроллера клавиатуры и дисплея, ну и служить сопряжением интерфейсов.

Сначала я попробовал древнейший Palm m100. Но, видимо, у него очень маленькая буферная память, и от количества данных, которые идут с роутера, ему становилось плохо. Я взял другой — промышленный КПК, с нормальным СОМ-портом и терминалкой. Подключил, вставил в док и, в результате, получил небольшой линукс-компьютер. В принципе, вместо дорогущего промышленного КПК подойдет большинство наладонников, работающих под операционкой WinCE, главное – найти подходящий терминальный софт.

Линукс компьютер 🙂

Итоги

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

Этот пост является отредактированной для хабра версией моей статьи в Хакере № 05/09 «Главный инструмент фрикера».

Литература:

1. Михаил Гук «Аппаратные интерфейсы ПК» — просто студенческая библия по персоналке.

2. en.wikipedia.org/wiki/RS-232

3. easyelectronics.ru/tag/rs232

Программы для работы с COM PORT и протокол uart

Бесплатная программа com0com позволяет в пару кликов создать в системе пары виртуальных COM портов. Это позволяет, например, отлаживать ваши программы, использующие последовательные порты, не подключая никаких кабелей, или на компьютере, у которого вообще нет ни одного COM порта. Вы можете легко связать две программы , работающие с такими портами через этот драйвер, просто выбрав в одной программе первый виртуальный порт из пары, а во второй программе — второй порт.Com port uart: UART и с чем его едят / Хабр После этого программы смогут обмениваться данными, как если бы они были запущены на разных машинах, соединенных кабелем через их COM порты. К примеру вы пишете программу, которая посылает текстовые сообщения через последовательный порт. Вы можете отлаживать такую программу, назначив ей один из пары виртуальных портов, а на второй виртуальный порт из пары «повесить» программу — терминал. Тогда вы сможете в терминале наблюдать данные, которые посылает в порт ваша программа.

Другое применение — отладка проектов на микроконтроллерах в симуляторе Proteus. разработчики очень часто используют COM PORT (UART интерфейс) в микроконтроллерных приложениях, так как аппаратный UART модуль имеется практически в любом современном микроконтроллере, и использовать его легко и просто. В программе Proteus есть специальный компонент для связи с COM портом компьютера (не важно, реальный это порт или виртуальный). Компонент называется COMPIM и выглядит вот так:

    
Этот компонент — практически «мостик», связывающий симуляцию Proteus c внешним по отношению к симулятору  миром.

Предположим мы разрабатываем устройство на микроконтроллере, которое связывается с компьютером и, возможно, управляется от него, через COM порт.  Одновременно мы разрабатываем программу для компьютера, которая будет взаимодействовать с этим микроконтроллерным устройством. Используя драйвер виртуальных портов мы можем отлаживать такой комплекс внутри виртуального пространства компьютера без подключения каких-либо проводов и без сборки реального устройства на микроконтроллере. Просто «собираем» схему в Proteus, загружаем в модель контроллера прошивку, добавляем в проект компонент COMPIM, соединяем линии TXD и RXD контроллера с соответствующими линиями COMPIM. В компоненте COMPIM нужно выбрать один из пары наших виртуальных портов и задать правильную скорость обмена. С другой стороны, в компьютерной программе выбираем второй из пары COM портов. Запускаем проект Proteus на выполнение и любуемся результатом.Com port uart: UART и с чем его едят / Хабр

Более простой вариант — в качестве компьютерной программы можно использовать любой COM — терминал, например вот этот. Тогда в программе — терминале мы сможем видеть данные, поступающие с нашего микроконтроллера (из Proteus) и посылать ему команды, как если бы это было реальное «железное» устройство.

    
Для установки драйвера на windows 7..10 нужно временно перевести винду в режим разработчика. Для этого в меню пуск выберите «выполнить» и запустите команду: bcdedit.exe -set TESTSIGNING ON
после этого перезагрузите компьютер. Скачать программу — Virtual Serial Port Driver Com0Com

   
   
Программа — терминал V9b
Очень удобная терминалка для работы с COM портами.

Бесплатная и компактная программа — терминал. Очень полезна для отладки софта и устройств, использующих COM PORT. Может использоваться с драйвером Virtual Serial Port Driver Com0Com, описанным выше.

    
BComPort — Удобный в работе Delphi компонент для работы с COM- портом

Компонент для обмена данными с внешними устройствами через интерфейс RS-232 в асинхронном или синхронном режиме. Автор: Брусникин Игорь Викторович. Компонент довольно старый, но устанавливается без проблем в любой Delphi вплоть до 10.2 Tokio.

Внимание! В новых  UNICODE- версиями Delphi компонент хоть и устанавливается без проблем, но работает некорректно, так как все новые версии Delphi используют тип String в Unicode. Я адаптировал компонент для использования в новых Delphi . Подправленная версия в том же архиве в папке BComPortUnicode. Оригинальная версия — в папке BComPort. Для установки в не-юникод версии Delphi (До 8-й включительно) нужно использовать оригинальную версию. Устанавливается просто. Например в Delphi 10.2 Tokio нужно выбрать Component — Install Component и потом выбрать файл BCPort.pas. В архиве есть инструкция на русском языке и примеры. Скачать архив с компонентом…

UART | Электроника для всех

Почти все микроконтроллеры имеют на борту последовательный порт — UART.Com port uart: UART и с чем его едят / Хабр Работает он по стандартному последовательному протоколу, а значит его можно без проблем подключить к компу на COM порт. Но есть тут одна проблема — дело в том, что комповый RS232 он за логические уровни принимает +/- 12 вольт, а UART работает на пятивольтовых уровнях. Как их совместить? Для этого существует несоколько вариантов схем преобразователей уровня, но самая популярная это все же на специальном преобразователе RS232-TTL. Это микросхема MAX232 и ее аналоги.
Практически каждая фирма делает свой преобразователь, так что тут сгодится и ST232, и ADM232, и HIN232. Схемка простая как три копейки — вход, выход, питание и обвязка из пяти конденсаторов. Конденсаторы обычно ставятся 1uF электролиты, но в некоторых модификациях ставится 0.1uF керамика. Я везде впаивал 0.1uF керамику и обычно этого хватало. 🙂 Работает как часы. Если же на высоких скоростях будет глючить, то надо будет повышать емкость.

Кстати, существует еще и MAX3232 это то же самое, но на выходе у него не 5вольт TTL, а 3.3 вольта TTL. Её используют для низковольтных контроллеров.

Я себе сделал один такой универсальный шнурочек, чтобы к контроллерам цепляться было удобно по UART. Для общей компактности всю схему запихал прям в разъем, благо у меня были ST232 в soic корпусе. Получилась платка не больше рублевой монеты. Так как под рукой не было мелких SMD конденсаторов, то пришлось напаять кондеры сверху, кто во что горазд. Главное работает, хоть и не очень красиво вышло.

Если сомневаешься, что у тебя получится столь мелкий монтаж, то я тебе развел плату на стандартный PDIP корпус. Размером она будет со спичечный коробок, зато мельчить не надо.

После сборки проверяется просто:
Втыкается в разъем COM порта.Com port uart: UART и с чем его едят / Хабр Подается 5 вольт питания на схему, а затем замыкаешь Rx на Tx (у меня это зеленый и желтый провода).
 
Дальше открваешь любую терминалку, хоть Hyper Terminal, цепляешься к порту и начинаешь посылать байты, они должны тотчас возвращаться обратно. Если этого не произошло — проверяй схему, где то косяк.

Если работает, то дальше все просто. Тот провод который идет от ножки 9 микросхемы MAX232 это передающий вывод, его заводи на ногу RxD контроллера. А тот который с ножки 10 — принимающий, его смело сажай на вывод TxD контроллера.

Плата сделана была методом ЛУТ, в одном месте по моему недосмотру толщина просвета оказалась 0.05мм, протравилась, но со спайками, пришлось процарапывать. А в целом с первого раза ать и никаких проблем. Аж сразу захотелось сделать что нибудь маленькое маленькое, нафаршированное нафаршированное 🙂

Все, аппаратная часть для связи микроконтроллера с компом готова. Ждите следующего поста в котором я расскажу как конфигурировать и использовать UART в микроконтроллерах AVR. В будущем я буду через UART осуществлять отладочную связь с компом. Может быть даже ради этого соберу отдельный модуль с LCD экранчиком. Для отладки в железе. Посмотрим как попрет.

Печатная плата в формате Sprint Layout. Два варианта маленький и большой

Та же бодяга, но для работы через USB

Read More »

Ардуино и микросхемы | Что такое UART. Коротко о методе приема-передачи.


Универсальный асинхронный приёмопередатчик  —

UART



Universal Asynchronous Receiver-Transmitter, UART — узел вычислительных устройств, предназначенный для организации связи с другими цифровыми устройствами.Com port uart: UART и с чем его едят / Хабр Преобразует передаваемые данные в последовательный вид так, чтобы было возможно передать их по цифровой линии другому аналогичному устройству. Метод преобразования хорошо стандартизован и широко применялся в компьютерной технике.


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


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



               Последовательный порт


serial port, COM-портcommunications port) — сленговое название интерфейса стандарта RS-232, которым массово оснащались персональные компьютеры. Порт называется «последовательным», так как информация через него передаётся по одному биту, последовательно бит за битом (в отличие от параллельного порта). Несмотря на то, что некоторые интерфейсы компьютера (например, Ethernet, FireWire и USB) тоже используют последовательный способ обмена информацией, название «последовательный порт» закрепилось за портом стандарта RS-232.


В настоящее время в IBM PC-совместимых компьютерах практически вытеснен интерфейсом USB.


Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).


Существуют стандарты на эмуляцию последовательного порта над USB и над Bluetooth (эта технология в значительной степени и проектировалась как «беспроводной последовательный порт»).


                    Метод передачи и приёма


Передача данных в UART осуществляется по одному биту в равные промежутки времени.Com port uart: UART и с чем его едят / Хабр Этот временной промежуток определяется заданной скоростью UART и для конкретного соединения указывается в бодах (что в данном случае соответствует битам в секунду).


Существует общепринятый ряд стандартных скоростей: 300; 600; 1200; 2400; 4800; 9600; 19200; 38400; 57600; 115200; 230400; 460800; 921600 бод.


Скорость (, бод) и длительность бита (, секунд) связаны соотношением


Скорость в бодах иногда называют сленговым словом битрейт.


   Помимо собственно информационного потока, UART автоматически вставляет в поток синхронизирующие метки, так называемые стартовый и стоповый биты. При приёме эти лишние биты удаляются из потока. Обычно стартовый и стоповый биты обрамляют один байт информации (8 бит), однако встречаются реализации UART, которые позволяют передавать по 5, 6, 7, 8 или 9 бит.


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


Принято соглашение, что пассивным (в отсутствие потока данных) состоянием входа и выхода UART является логическая 1.


Стартовый бит всегда логический 0, поэтому приёмник UART ждёт перепада из 1 в 0 и отсчитывает от него временной промежуток в половину длительности бита (середина передачи стартового бита). Если в этот момент на входе всё ещё 0, то запускается процесс приёма минимальной посылки. Для этого приёмник отсчитывает 9 битовых длительностей подряд (для 8-битных данных) и в каждый момент фиксирует состояние входа. Первые 8 значений являются принятыми данными, последнее значение проверочное (стоп-бит).Com port uart: UART и с чем его едят / Хабр


Значение стоп-бита всегда 1, если реально принятое значение иное, UART фиксирует ошибку.


Для формирования временных интервалов передающий и приёмный UART имеют источник точного времени (тактирования). Точность этого источника должна быть такой, чтобы сумма погрешностей (приёмника и передатчика) установки временного интервала от начала стартового импульса до середины стопового импульса не превышала половины (а лучше хотя бы четверти) битового интервала. Для 8-битной посылки 0,5/9,5 = 5 % (в реальности не более 3 %). Поскольку эта сумма ошибок приёмника и передатчика плюс возможные искажения сигнала в линии, то рекомендуемый допуск на точность тактирования UART — не более 1,5 %.


Поскольку синхронизирующие биты занимают часть битового потока, то результирующая пропускная способность UART не равна скорости соединения. Например, для 8-битных посылок формата 8-N-1 синхронизирующие биты занимают 20 % потока, что для физической скорости 115 200 бод даёт битовую скорость данных 92 160 бит/с или 11 520 байт/с.


               Контроль чётности



Основная статья: Бит чётности


Многие реализации UART имеют возможность автоматически контролировать целостность данных методом контроля битовой чётности. Когда эта функция включена, последний бит данных в минимальной посылке («бит чётности») контролируется логикой UART и содержит информацию о чётности количества единичных бит в этой минимальной посылке. Различают контроль на четность (англ. Even parity), когда сумма количества единичных бит в посылке является четным числом, и контроль на нечетность (англ. Odd parity), когда эта сумма нечетна. При приеме такой посылки UART может автоматически контролировать бит четности и выставлять соответствующие признаки правильного или ошибочного приема.Com port uart: UART и с чем его едят / Хабр


                      Короткая запись параметров


Был выработан и прижился короткий способ записи параметров UART, таких, как


количество бит данных — наличие и тип бита четности —  количество стоп-бит.


Выглядит как запись вида цифра-буква-цифра, где:


  • Первая цифра обозначает количество бит данных, например, 8.

  • Буква обозначает наличие и тип бита четности.


            N (No parity) — без бита четности;


E (Even parity) — с битом проверки на четность,


O (Odd parity) — с битом проверки на нечетность;


  • Последняя цифра обозначает длительность стоп-бита.


Встречаются значения 1, 1.5 и 2 для длительности стоп-бита в 1, 1.5 и 2 битовых интервала соответственно.


Например, запись 8-N-1 обозначает, что UART настроен на 8 бит данных без бита четности и один стоповый бит. Для полноты параметров эту запись снабжают указанием.


                          Break


Специальная посылка — состоит из


непрерывного нулевого состояния линии длительностью заведомо больше минимальной посылки, обычно 1,5 минимальных посылки (для 8N1 это 15 битовых интервалов). Некоторые коммуникационные протоколы используют это свойство, например, протокол LIN использует Break для обозначения нового кадра.


                Управление потоком


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


Для решения этой проблемы модули UART иногда снабжались отдельными выходами и входами управления потоком.Com port uart: UART и с чем его едят / Хабр При заполнении входного буфера логика принимающего UART выставляла на соответствующем выходе запрещающий уровень, и передающий UART приостанавливал передачу.


Позже управление потоком возложили на коммуникационные протоколы (например, методом XOn/XOff), и надобность в отдельных линиях управления потоком постепенно исчезла.


               Физический уровень


Логическая схема UART имеет входы-выходы с логическими уровнями, соответствующими полупроводниковой технологии схемы: КМОП, ТТЛ и т. д. Такой физический уровень может быть использован в пределах одного устройства, однако непригоден для коммутируемых длинных соединений по причине низкой защищённости от электрического разрушения и помехоустойчивости.


Для таких случаев были разработаны специальные физические уровни, такие, как токовая петля, RS-232, RS-485, LIN и тому подобные.


Специфической разновидностью физического уровня асинхронного интерфейса является физический уровень IrDA.


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

В чем разница между «COM», «USB», «Serial Port»?

Я запутался в этих 3-х концепциях.

Насколько я понимаю, Serial Port обычно означает RS-232 совместимый порт (RS = рекомендуемый стандарт). USB означает Universal Serial Bus . Итак, его имя содержит serial port, поддерживает ли оно RS-232? Что означает Universal ?

А что означает порт COM?

ADD 1

Некоторое понимание из ответа Ганса:

Чтобы уменьшить усилия, производители устройств обычно делают так, чтобы их устройство также могло вести себя как устройство serial port.Com port uart: UART и с чем его едят / Хабр Это зависит от того факта, что многие OS и языковые библиотеки уже включили поддержку связи serial port. Хотя такая поддержка не сравнима с реальным драйвером соответствующего устройства.

ADD 2

Хороший справочный документ о Serial Port HOW-TO .

И кстати, проект документа Linux действительно полезен.

windows

serial-port

usb

hardware

Поделиться

Источник


smwikipedia

14 января 2015 в 07:38

2 ответа


  • Serial Port: невозможно отправить/получить данные

    Я работал над программой в Visual C#, которая в конечном итоге будет подавать поток данных для заполнения базы данных через serial port. У меня были проблемы с отправкой и получением данных через serial port. Чтобы устранить мое возможное ошибочное кодирование, я использую HyperTerminal от…

  • легче ли программировать с serial port, чем с usb? vb.net

    Я собираюсь купить дисплей VFD для использования с моим pos-приложением. Но я застрял на одном вопросе. Легче ли программировать с serial port, чем с usb? это wd2030a от digipos . У меня нет большого опыта программирования, и я хотел бы знать, могу ли я легко запрограммировать этот элемент с…



39

Serial port — это тип устройства, использующего микросхему UART, универсальный асинхронный приемник-передатчик. Один из двух основных способов взаимодействия с компьютером в старые времена, параллельные порты были другим способом. Серийный номер прост в подключении, ему не нужно много проводов. Параллель была полезна, если вы хотели идти быстро, тип в 8 раз быстрее, чем последовательный, но кабели и разъемы были дорогими. Параллельный ввод-вывод полностью исчез из компьютерных конструкций, захваченный огромными достижениями в области шинных приемопередатчиков, таких чипов, которые могут передавать электрический сигнал по проводу.Com port uart: UART и с чем его едят / Хабр

COM происходит от MS-Dos, это имя устройства . Сокращенно от «COMmunication port». Компьютеры 1980-х годов обычно имели два последовательных порта, обозначенных COM1 и COM2 на задней панели машины. Это имя было перенесено в Windows, и почти любой драйвер, имитирующий serial port, создаст устройство с «COM» в своем имени. LPT -это название устройства для параллельных портов, сокращенное от «Line PrinTer».

RS-232 был стандартом электрической сигнализации для последовательных портов. Это самый простой вариант с очень низкими требованиями к устройству, поддерживающий только соединение point-to-point. RS-422 и RS-485 не были редкостью, используя витую пару для каждого сигнала, обеспечивая гораздо более высокую помехоустойчивость и позволяя нескольким устройствам подключаться друг к другу.

USB означает универсальную последовательную шину. Благодаря возможности интегрировать микропроцессор в устройства размером в несколько миллиметров и стоимостью в несколько десятицентовиков. Он заменил устаревшие устройства в конце 1990-х годов. Он универсален, потому что может поддерживать множество различных типов устройств, от подогревателей кофейников до дисководов, адаптеров wifi и воспроизведения звука. Он последовательный, для него требуется всего 4 провода. И это шина, вы можете подключить устройство USB к произвольному порту. Он конкурировал с FireWire, очень похожим подходом и отстаиваемым Apple, но победил с помощью оползня.

Единственная причина, по которой последовательные порты все еще актуальны в on Windows в наши дни, заключается в том, что устройство USB требует пользовательского драйвера устройства. Производители устройств не любят писать и поддерживать драйверы, они часто используют ярлык в своем драйвере, который заставляет его эмулировать устаревшее устройство serial port. Таким образом, программисты могут использовать устаревшую поддержку последовательных портов, встроенных в операционную систему, и почти любую библиотеку времени выполнения языка.Com port uart: UART и с чем его едят / Хабр Довольно несовершенная поддержка кстати, эти эмуляторы никогда не поддерживают plug-and-play хорошо. Обнаружить конкретный serial port для открытия очень трудно. И эти драйверы часто плохо себя ведут невозможными для диагностики способами, когда вы дергаете устройство USB, пока ваша программа его использует.

Поделиться


Hans Passant

14 января 2015 в 12:05



10

USB стенд для универсальной последовательной шины не Порт . Термин «serial port» просто означает, что данные передаются по одному биту за раз по одному сигнальному тракту — в этом смысле даже Ethernet является последовательным по своей природе. Слово последовательный в обоих терминах не подразумевает никакого отношения к ширине пути передачи данных.

Вы правы в том, что термин последовательный порт в контексте PC обычно означает порт RS-232, но есть и другие стандарты serial port, такие как RS-422 и RS-485, часто используемые в промышленных приложениях. Что их объединяет, так это то, что они реализуются с использованием UART ( универсальный асинхронный приемник/передатчик ).

Термин универсальный в USB просто отражает тот факт, что это не конкретный интерфейс устройства, такой как выделенные порты мыши или клавиатуры, найденные на более старом оборудовании. Точно так же UART на основе serial port не является специфичным устройством, отраженным U в UART.

USB существенно отличается от RS-232 в ряде способов; это ведущий/ведомый (или хост/устройство в терминологии USB), а не peer-to-peer, устройство USB не может инициировать связь, оно должно быть опрошено хостом. USB включает в себя низковольтный источник питания, позволяющий питать устройства с умеренными требованиями к питанию от шины — именно поэтому порты USB можно использовать для зарядки устройств с батарейным питанием. USB значительно сложнее, чем RS-232, который определяет только физический (аппаратный) уровень, тогда как USB требует полного стека программных протоколов.Com port uart: UART и с чем его едят / Хабр

Термин COM-это просто префикс имени устройства, используемый в Windows (и ранее MS-DOS) для последовательного порта (UART). Сокращенно от «communications», вы можете, например, открыть порт COM в качестве устройства потокового ввода-вывода с помощью say FILE* port = fopen( "COM1", "wr" ) ; .

Поделиться


Clifford

14 января 2015 в 19:24


Похожие вопросы:

Serial Port Программирование?

Я думаю, что этот вопрос может быть очень general…I я новичок в Serial port программировании на windows (XP). Я был бы признателен за ценные предложения по следующим вопросам: — с чего начать ? (…

Serial Port перенаправление или разделение

Я ищу книгу и / или пример кода о том, как сделать перенаправление serial port или разделение портов. Я пишу много приложений с портом com и хочу написать приложение монитора, которое позволит мне…

Разница между serial port и terminal портами?

Я подключил кабель RS-232 к своему PC, чтобы сделать программу C# для чтения из порта. Если я открою HHD Free Serial Port Monitor и попытаюсь отслеживать последовательные порты, он не покажет…

Serial Port: невозможно отправить/получить данные

Я работал над программой в Visual C#, которая в конечном итоге будет подавать поток данных для заполнения базы данных через serial port. У меня были проблемы с отправкой и получением данных через…

легче ли программировать с serial port, чем с usb? vb.net

Я собираюсь купить дисплей VFD для использования с моим pos-приложением. Но я застрял на одном вопросе. Легче ли программировать с serial port, чем с usb? это wd2030a от digipos . У меня нет…

Определите, является ли serial port нормальным COM или SPP

Я ищу способ определить, является ли COM стандартным COM или это SPP COM, также известный как адаптер замены кабеля bluetooth для устройства COM.Com port uart: UART и с чем его едят / Хабр У меня есть устройство, которое работает как в USB…

Serial port рукопожатие. В чем разница между аппаратным обеспечением и отсутствием рукопожатия?

Я пытаюсь определить разницу, когда открываю serial port с аппаратным рукопожатием и без рукопожатия . Похоже, что в обоих случаях мне приходится управлять сигналами RTS/CTS (только что…

настройка USB serial port число

Один из сценариев, с которыми мне дали работать, использует номера портов для связи с serial port, как 4001 4002 Используя последовательный концентратор USB, который подключен к одной машине и…

SerialPort.DataReceived с USB по COM кабель действует иначе, чем физический com

Моя библиотека настольных классов C# взаимодействует с COM serial port. com не является реальным com, это кабель USB — COM, подключенный к USB-COM на другом компьютере, другой компьютер использует…

Данные от USB ~ Serial Port

Я хотел бы передать данные с хоста USB (моего ноутбука или устройства Android) на последовательный порт COM (настольного компьютера PC) через адаптер USB — Serial port(DB-9). Существует ли…

Работа из под линукса с UART-портом

Настройка окружения

Выясняем какие USB-to-COM преобразователи доступны в системе:

Настройка прав доступа из под обычного пользователя:

sudo chmod a+rwx /dev/ttyUSBx

либо пользуемся механизмом udev, для чего нам понадобится положить по пути /etc/udev/rules.d файл такого содержания (с расширением *.rules):

SUBSYSTEMS==»usb», ATTRS{idProduct}==»ea60″, ATTRS{idVendor}==»10c4″, SYMLINK+=»cp2102_%n», MODE=»0666″, GROUP=»plugdev»

SUBSYSTEMS==»usb», ATTRS{idProduct}==»6001″, ATTRS{idVendor}==»0403″, SYMLINK+=»ft232r_$attr{serial}», MODE=»0666″

— в примере прописаны  VID&PID микросхем-преобразователей FT232R и СР2102.Com port uart: UART и с чем его едят / Хабр После сохранения файла необходимо добавить пользователя в группу plugdev (если он еще не добавлен):

sudo usermod -a -G plugdev [username]

И перезачитать содержимое правил в директории /etc/udev/rules.d:

sudo udevadm control —reload-rules

Узнать VID:PID произвольного донгла USB-to-UART можно, используя команду lsusb:

— первые два значения  VID и PID в формате vvvv:pppp.

Настройка TTY-порта

Надо установить утилиту stty из пакета coreutils:

sudo yum install -y coreutils.x86_64

Настройка порта:

stty raw -echo 9600 < /dev/ttyUSB1

или то же самое с другим синтаксисом:

stty raw -echo 9600 -F /dev/ttyUSB1

В каком-то случае может понадобиться индивидуальная настройка stty. См. man stty.

Работа в CLI: UART TX

Отправка в порт ASCII-строки:

echo -n AT+ > /dev/ttyUSB1

Отправка бинарного файла в UART:

dd if=fw_image_9600.sbl of=/dev/ttyUSB1 bs=1

Работа в CLI: UART RX

Приём из порта ASCII-последовательностей:

picocom

Удобная интерактивная консоль, в общем случае может хватить запуска со следующими «магическими» параметрами:

sleep 1 && picocom —omap delbs —imap crcrlf,lfcrlf -b 9600 /dev/ttyUSB1

Serial порт к Raspberry | Реальные заметки Ubuntu & Mikrotik

Прочитано:
6 173

Когда есть желание то все задуманное становится реальностью ну или по крайней мере время проведенное за этим кажется не таким уж в пустую потраченным.Com port uart: UART и с чем его едят / Хабр Вот к примеру я, загорелся желание поизучать мини компьютер именуемый, как Raspberry. Был заказан в день когда мой газовый котел из-за обледенения трубы начал в январские праздничные морозы выключаться. И меня посетила мысль, а как бы пристроить наблюдение за ним, благо на моем котле есть цифровой дисплей. Но как, купить IP-камеру, не это не то слишком просто, хотелось чего-то большего. А в то же время да и ранее я встречал упоминание мини-компьютерах и что с ними делают энтузиасты, мне захотелось просто повторить ихние поделки самому. Ведь ни что так не воодушевляет чем просто чтение того как получилось у других, как все повторить самим и уже на основе этого наложить свое видение. Ладно к чему еще говорить, спустя три долгих недели ожидания вот он Raspberry PI 3 model B+ пришел и началось. А что началось, сразу обнаружилось (а я должен был предвидеть это) как подключить его к компьютеру или подключиться к нему, монитора то с HDMI выходом у меня нет. А раз так, то вроде как с помощью USB-TTL адаптера можно подключиться.

Вот и сейчас я разберу, как данный адаптер подключить к моему домашнему ноутбуку Lenovo E555 (Ubuntu 14.04.5 Desktop amd64 Gnome Classic)

В наличии:

  • PL2303 USB UART Board (mini), Преобразователь USB-UART на базе PL2303 с разъемом USB mini-AB
  • Кабель miniUSB на USB

Соединяю их и разъемом USB подключаю его к своему ноутбуку, система говорит, что:

[Сб. февр. 11 18:54:17 2017] usb 6-1: new full-speed USB device number 2 using xhci_hcd

[Сб. февр. 11 18:54:17 2017] usb 6-1: New USB device found, idVendor=067b, idProduct=2303

[Сб. февр. 11 18:54:17 2017] usb 6-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0

[Сб.Com port uart: UART и с чем его едят / Хабр февр. 11 18:54:17 2017] usb 6-1: Product: USB-Serial Controller

[Сб. февр. 11 18:54:17 2017] usb 6-1: Manufacturer: Prolific Technology Inc.

[Сб. февр. 11 18:54:17 2017] usbcore: registered new interface driver usbserial

[Сб. февр. 11 18:54:17 2017] usbcore: registered new interface driver usbserial_generic

[Сб. февр. 11 18:54:17 2017] usbserial: USB Serial support registered for generic

[Сб. февр. 11 18:54:17 2017] usbcore: registered new interface driver pl2303

[Сб. февр. 11 18:54:17 2017] usbserial: USB Serial support registered for pl2303

[Сб. февр. 11 18:54:17 2017] pl2303 6-1:1.0: pl2303 converter detected

[Сб. февр. 11 18:54:17 2017] usb 6-1: pl2303 converter now attached to ttyUSB0

[email protected]:~$ sudo modinfo pl2303

filename: /lib/modules/4.4.0-57-generic/kernel/drivers/usb/serial/pl2303.ko

license: GPL

description: Prolific PL2303 USB to serial adaptor driver

srcversion: A72335A7497CE03F142BCAC

depends: usbserial

intree: Y

vermagic: 4.4.0-57-generic SMP mod_unload modversions

[email protected]:~$ ls /dev/ttyUSB0 -lh

crw-rw---- 1 root dialout 188, 0 февр. 11 18:54 /dev/ttyUSB0

[email protected]:~$ sudo usermod -a -G dialout ekzorchik

[email protected]:~$ apt-cache search setserial

setserial — Управление конфигурацией последовательных портов

[email protected]:~$ sudo apt-get install setserial -y

[email protected]:~$ sudo setserial -g /dev/ttyUSB0

/dev/ttyUSB0, UART: 16654, Port: 0x0000, IRQ: 0

Из вывода вижу, что система успешно опознала данный адаптер, а на самом адаптере загорелся индикатор: PWR

  • Далее на самом адаптере выставить переключатель, что работа будет вестись на 5V

Далее нужно подключить адаптер к Raspberry Pi 3 по следующей схеме:

Но т. к. сейчас питание адаптера идет от компьютера то

  • от адаптера TXD ↔ к raspberry pi 3 PIN10 (RXD0)
  • от адаптера RXD ↔ к raspberry pi 3 PIN8 (TXD0)
  • от адаптера GND ↔ к raspberry pi 3 PIN6
  • от адаптера VCCIO ↔ к raspberry pi 3 PIN2

Теперь подключаю свой Raspberry PI 3 к нему, но предварительно вставив в него записанный образ.

Затем для подключения с компьютера мне понадобиться программа: putty

[email protected]:~$ sudo apt-get install putty -y

Запускаю установленную программу putty:

ПриложенияИнтернет — PuTTY SSH Client и настраиваю подключение: Connection — Serial

  • Serial line to connect to: /dev/ttyUSB0
  • Speed (baud): 115200
  • Data bits: 8
  • Stop bits: 1
  • Parity: None
  • Flow Control: None

Затем перехожу в категорию (Category) Session и переключаю тип подключения (Connection type) в положение Serial

строка подключения примет вид:

Serial line: /dev/ttyUSB0

Speed: 115200

и нажимаю кнопку Open — если все сделано правильно я подключусь к своему мини-компьютеру:

или же через другую утилиту именуемую как minicom:

[email protected]:~$ sudo apt-get install minicom -y

Скажу так, все выше по подключению к консоли мини компьютера Raspberry Pi 3 Model B было бесполезно.

потому как в текущей операционной системе jessie:

[email protected]:~ $ lsb_release -a

No LSB modules are available.

Distributor ID: Raspbian

Description: Raspbian GNU/Linux 8.0 (jessie)

Release: 8.0

Codename: jessie

Разработчики по умолчанию отключили все интерфейсы удаленного взаимодействия. Это значит, что мне пришлось отдельно покупать переходник с HDMI на VGA дабы подключить Raspberry Pi 3 Model B к монитору. Когда я подключил, то зайдя в меню настройки интерфейсов увидел своими глазами почему у меня не получалось подключиться:

Preferences — Raspberry Pi Configuration — вкладка Interfaces

Serial: Disabled

Включаю интерфейс либо через вкладку Interfaces, Serial — Enable или же через консоль:

Ctrl + Alt + T → p[email protected]:~ $ sudo raspi-configInterfacing Options, Select — P6 Serial, Select — Would you like a login shell to be accessible over serial? Yes

The serial login shell is enabled

The serial interface is enabled

и нажимаю Ok, Finish

После чтобы изменения вступили в силу необходимо перезагрузиться:

Would you like to reboot now? Yes

После перезагрузки, шаги подключения к консоли миникомпьютера Raspberry следующие:

  • Соединяем PL2303 USB UART Board (mini) с миникомпьютером Raspberry Pi 3 Model B контактами: RX,TX,GND
  • Подключаем адаптер PC2303 через microUSB и USB к ноутбуку
  • Запускаем консоль putty/minicom создаем соединение на /dev/ttyUSB0 при скорости 115200, когда подключение произойдет у Вас должен быть просто черный экран
  • После подключаем с адаптера PC2303 пин VCC0 и PI2 на плате Raspberry Pi 3 Model B

Теперь же переводим свой взор на консоль Putty и видим, как бегут строки загрузки операционной системы Raspbian и в конце строки когда все загрузилось:

Raspbian GNU/Linux 8 raspberry ttyS0

raspberry login:

указываю дефолтные значения

Login: pi

Password: raspberry

и вуаля я все же разобрал как подключиться к консоли миникомпьютера:

[email protected]:~$

Имея такое подключение я могу уже вызвать утилиту raspi-config и включить необходимые интерфейсы, такие как VNC, SSH и другие для взаимодействия. Данная последовательная консоль подключения применяется при первоначальной настройке, восстановления если по каким-либо причинам нельзя подключиться через другие способы, отладки. Жаль что разработчики пошли другим путем и заблокировали изначально данную возможность, как Serial подключение.

Если же Вы закрыли консоль putty, что чтобы вновь в нее подключиться потребуется разъединить PIN питания и подключить его заново при открытой консоли putty или minicom.

Подключаюсь через утилиту minicom к сохраненной конфигурации которую создал с учетом параметров подключения для клиента putty, за справкой по настройки утилиты minicom обратился к заметке:

[email protected]:~$ sudo minicom -o rasp

[ OK ] Started Permit User Sessions.

[ OK ] Started Login Service.

Starting Light Display Manager...

Starting Hold until boot process finishes up...

Starting Terminate Plymouth Boot Screen...

[ OK ] Started LSB: WebIOPi initscript.

[ OK ] Started LSB: triggerhappy hotkey daemon.

Raspbian GNU/Linux 8 raspberrypi ttyS0

raspberrypi login: pi

Password: raspberry

Last login: Sat Feb 25 21:58:52 MSK 2017 on tty1

Linux raspberrypi 4.9.11-v7+ #971 SMP Mon Feb 20 20:44:55 GMT 2017 armv7l

The programs included with the Debian GNU/Linux system are free software;

the exact distribution terms for each program are described in the

individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent

permitted by applicable law.

[email protected]:~$ w

21:59:24 up 0 min, 3 users, load average: 0.34, 0.10, 0.04

USER TTY FROM [email protected] IDLE JCPU PCPU WHAT

pi :0 :0 21:58 ?xdm? 11.62s 0.30s /usr/bin/lxsess

pi tty1 21:58 38.00s 0.36s 0.33s -bash

pi ttyS0 21:59 4.00s 0.52s 0.03s w

а вот с использованием утилиты minicom не нужно разрывать связь между PINом VCCI0 и 5V, подключение сохраняется:

[email protected]:~$ exit

logout

Raspbian GNU/Linux 8 raspberrypi ttyS0

raspberrypi login:

Итого заметка разобрана и много нового я узнал и применил полученные навыки исходя из прошлого. Я горжусь собой. По сути я могу настроить образ Raspberry с учетом своих предпочтений и включенными настройки по удаленному администрированию: VNC, SSH, Serial; а затем создать образ и уже когда нужно разворачивать его и не важно если ли под рукой переходник для подключения монитора или нет. Да, вот и будет следующая заметка на этот счет, как создать образ своего. А пока я прощаюсь, с уважением Олло Александр aka ekzorchik

Что такое UART?

AKA Последовательный порт, RS-232, COM-порт, RS-485

Этот тип функциональности упоминается под разными именами: последовательный порт, интерфейс RS-232, COM-порт, но правильное имя на самом деле UART (универсальный асинхронный приемный передатчик) . UART — это один из простейших способов связи с вашей FPGA. Его можно использовать для отправки команд с компьютера на FPGA и наоборот.

UART — это интерфейс, который обычно отправляет байт за раз по одному проводу.Он не пересылает данные по часам, поэтому он называется асинхронным , а не синхронным. UART могут работать либо в полудуплексном режиме (два передатчика совместно используют линию), либо в полудуплексном режиме (два передатчика, каждый со своей собственной линией). У UART есть несколько параметров, которые могут быть установлены пользователем. Это:

    Скорость передачи (9600, 19200, 115200, другие)
    Количество бит данных (7, 8)
    Бит четности (Вкл., Выкл.)
    Стоповые биты (0, 1, 2)
    Управление потоком (нет, включено, аппаратное)
 

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

Скорость передачи — это скорость, с которой передаются последовательные данные. 9600 бод означает 9600 бит в секунду. Число битов данных почти всегда равно восьми. Бит четности может быть добавлен после отправки данных. Четность всегда вычисляется путем выполнения операции XOR для всех битов данных. Стоповый бит всегда установлен в 1, и может быть 0, 1 или 2 стоповых бита. Управление потоком обычно не используется в современных приложениях и, скорее всего, будет установлено значение Нет.

Как упоминалось ранее, нет часов, которые отправляются вместе с данными. В любом интерфейсе, не имеющем часов, данные должны быть дискретизированы, чтобы восстановить их правильно. Он должен быть дискретизирован как минимум в восемь раз быстрее, чем скорость передачи битов данных. Это означает, что для UART со скоростью 115200 бод данные должны быть дискретизированы с частотой не менее 921,6 кГц (115200 бод * 8). Можно использовать более быструю частоту дискретизации.

Щелкните здесь, чтобы увидеть завершенный UART в VHDL и Verilog!

Уловка для отладки UART

Часто при отладке UART трудно понять, не работает ли последовательный порт вашего компьютера или это код FPGA. Вот хитрость: возьмите 9-контактный кабель и перемычки 2 и 3 вместе. Вы можете использовать скрепку или все, что у вас есть под рукой. Контакты 2 и 3 — это TX и RX. Если вы соедините их вместе, любая команда, которую вы отправите с компьютера, будет получена компьютером.Вы создали последовательный шлейф!

Откройте программу терминала, попробуйте подключиться к последовательному кабелю. Нажмите любую клавишу на клавиатуре. Скорость передачи и все остальное не имеет значения, потому что это петля. Если вы видите, что отправленный вами символ получен на терминале, ваш последовательный кабель работает! В противном случае у вас проблема с кабелем или с программой последовательного порта. Мне уже повезло с использованием Tera Term в прошлом, и я рекомендую это. Если у вас возникли проблемы с последовательным кабелем, попробуйте этот кабель USB-RS-232 на Amazon.Я использовал его, и он отлично работает с Windows.

Помогите мне создавать отличный контент! Поддержите меня на Patreon! Купите доску Go!

Пожалуйста, включите JavaScript, чтобы просматривать комментарии от Disqus.

windows — В чем разница между «COM», «USB», «Последовательный порт»?

Последовательный порт — это тип устройства, в котором используется микросхема UART, универсальный асинхронный приемный передатчик. Один из двух основных способов взаимодействия с компьютером в былые времена, параллельные порты были другим способом.Последовательный порт подключить просто, не нужно много проводов. Параллельный был полезен, если вы хотели работать быстрее, печатать в 8 раз быстрее, чем последовательный, но кабели и разъемы были дорогими. Параллельный ввод-вывод полностью исчез из компьютерных конструкций, его догнали огромные достижения в области шинных трансиверов, типа микросхем, которые могут передавать электрический сигнал по проводам.

COM происходит от MS-Dos, это имя устройства . Сокращение от «Коммуникационный порт». Компьютеры в 1980-х годах обычно имели два последовательных порта, обозначенных COM1 и COM2 на задней панели компьютера.Это имя было перенесено в Windows, почти любой драйвер, имитирующий последовательный порт, создаст устройство с «COM» в своем имени. LPT — это имя устройства для параллельных портов, сокращение от Line PrinTer.

RS-232 был стандартом электрической сигнализации для последовательных портов. Это самый простой вариант с очень низкими требованиями к устройству, поддерживающий только соединение точка-точка. RS-422 и RS-485 не были редкостью, поскольку для каждого сигнала использовалась витая пара, что обеспечивало гораздо более высокую помехоустойчивость и позволяло подключать несколько устройств друг к другу.

USB означает универсальную последовательную шину. Благодаря возможности интеграции микропроцессора в устройства размером несколько миллиметров и стоимостью несколько центов. Он заменил устаревшие устройства в конце 1990-х годов. Он универсален, потому что может поддерживать множество различных устройств, от подогревателей для кофейников и дисководов до адаптеров Wi-Fi и воспроизведения звука. Он последовательный, для этого требуется всего 4 провода. И это шина, вы можете подключить USB-устройство к произвольному порту. Он конкурировал с FireWire, очень похожим подходом, отстаиваемым Apple, но победил с опозданием.

Единственная причина, по которой последовательные порты все еще актуальны в Windows в наши дни, заключается в том, что для USB-устройства требуется специальный драйвер устройства. Производители устройств делают , а не , как написание и поддержку драйверов, они часто используют ярлык в своем драйвере, который заставляет его эмулировать устаревшее устройство с последовательным портом. Таким образом, программисты могут использовать устаревшую поддержку последовательных портов, встроенных в операционную систему, и любую языковую библиотеку времени выполнения. Довольно несовершенная поддержка, кстати, эти эмуляторы никогда не поддерживают plug-and-play хорошо.Обнаружить конкретный последовательный порт, который нужно открыть, очень сложно. И эти драйверы часто работают неправильно, что невозможно диагностировать, когда вы дергаете USB-устройство, когда ваша программа его использует.

Последовательный порт

— контроллер UART или контроллер RS232? UART — общее слово?

Библиография:

Последовательный — это обобщающее слово для всего, что называется «мультиплексирование с временным разделением», если использовать дорогостоящий термин. Это означает, что данные отправляются с распределением по времени, чаще всего один бит за другим.Все протоколы, которые вы называете, являются последовательными протоколами.

UART , для универсального асинхронного приемного передатчика, является одним из наиболее часто используемых последовательных протоколов. Он почти такой же старый, как и я, и очень простой. Большинство контроллеров имеют на борту аппаратный UART. Он использует одну линию данных для передачи и одну для приема данных. Чаще всего передаются 8-битные данные: 1 стартовый бит, низкий уровень, 8 бит данных, 1 стоповый бит, высокий уровень. Стартовый бит низкого уровня и стоповый бит высокого уровня означают, что всегда есть переход с высокого уровня на низкий, чтобы начать обмен данными.Вот что описывает UART. Нет уровня напряжения, поэтому вы можете иметь его на 3,3 В или 5 В, в зависимости от того, что использует ваш микроконтроллер. Обратите внимание, что микроконтроллеры, которые хотят обмениваться данными через UART, должны согласовать скорость передачи, битрейт, поскольку для синхронизации у них есть только задний фронт стартового бита. Это называется асинхронной связью.

Для связи на большие расстояния (не обязательно сотни метров) UART 5 В не очень надежен, поэтому он преобразуется в более высокое напряжение, обычно +12 В для «0» и -12 В для «1».Формат данных остается прежним. Тогда у вас есть RS-232 (который вам на самом деле следует называть EIA-232, но никто этого не делает.)

Важно : RS-232 против последовательной связи TTL — SparkFun Electronics http://goo.gl/0IFYTl

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

Последовательное программирование / Типичная конфигурация оборудования RS232 — Викиучебники, открытые книги для открытого мира http://goo.gl/uTknU6

  RS232 + ----------- + + ----------- + + ----------- + + ------- ---- +
Интерфейс | Линия | | | | Интерфейс | | |
----------- + Драйвер / + --- + UART + --- + Логика + --- + ЦП |
           | Приемник | | | | | | |
           + ----------- + + ----- + ----- + + ----- + ----- + + ---------- - +
                                 | |
                                 | |
                           + ----- + ----- + |
                           | Скорость передачи | |
                           | Генератор + --------- +
                           | |
                           + ----------- +
  

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

UART обычно полностью работает от логического напряжения компьютера. Его входное / выходное напряжение последовательных данных представляет собой логическое напряжение компьютера, а не напряжение последовательной линии. Они оставляют фактический линейный интерфейс конкретному драйверу / приемнику линии.Этот линейный драйвер / приемник не обязательно должен быть линейным драйвером / приемником RS-232, но может, например, также быть дифференциальным драйвером / приемником RS-422. Это, а также тот факт, что скорость передачи данных, четность, количество стоповых битов, количество битов данных являются программируемыми, является причиной того, что UART называются универсальными. Различие между UART и линейным драйвером / приемником стирается, если они оба помещены в один и тот же чип. Такие микросхемы обычно также продаются под маркой «UART».

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

Благодаря UART остальное оборудование, а также программное обеспечение могут работать с обычными байтами для хранения данных связи. Задача UART — разбить байт на серию последовательных битов при отправке и собрать серию битов в байт при получении. UART обычно содержат восьмибитные буферы приемника и передачи. Из которых не все биты могут быть использованы, если e.грамм. используется 7-битная передача. Полученные последовательные данные передаются параллельно в буфер приемника, данные для отправки записываются параллельно в буфер передачи. В зависимости от UART буферы могут иметь глубину всего один байт или несколько байтов (в диапазоне от 15 до 16 байтов). Чем менее глубоки буферы, тем точнее должна быть связь с ЦП. Например. если буфер приемника имеет глубину всего в один байт, и данные не извлекаются достаточно быстро, следующие полученные данные могут перезаписать ранее полученные данные в буфере, и ранее полученные данные будут потеряны.

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

SPI (последовательный периферийный интерфейс) — еще один очень простой последовательный протокол. Мастер посылает тактовый сигнал, и после каждого тактового импульса он сдвигает один бит на подчиненное устройство и один бит на вход, исходящий от подчиненного устройства. Таким образом, имена сигналов: SCK для часов, MOSI для Master Out Slave In и MISO для Master In Slave Out.Используя сигналы SS (выбор ведомого), ведущее устройство может управлять более чем одним ведомым устройством на шине. Существует два способа подключения нескольких подчиненных устройств к одному мастеру, один из которых упомянут выше, то есть с использованием выбора подчиненного устройства, а другой — гирляндное соединение, он использует меньше аппаратных контактов (выберите линии), но программное обеспечение усложняется.

I2C (Межинтегральная схема, произносится как «Я в квадрате С») также является синхронным протоколом, и это первое, что мы видим, в котором есть некоторый «интеллект»; другие тупо сдвигали биты туда-сюда, вот и все.I2C использует только 2 провода: один для часов (SCL) и один для данных (SDA). Это означает, что ведущий и ведомый отправляют данные по одному и тому же проводу, снова под контролем ведущего, который создает тактовый сигнал. I2C не использует отдельные Slave Selects для выбора конкретного устройства, но имеет адресацию. Первый байт, отправленный мастером, содержит 7-битный адрес (так что вы можете использовать 127 устройств на шине) и бит чтения / записи, указывающий, будет ли следующий байт (-ы) также поступать от мастера или должен исходить от раб.После каждого байта получатель должен послать «0», чтобы подтвердить получение байта, который мастер фиксирует 9-м тактовым импульсом. Если мастер хочет записать байт, тот же процесс повторяется: мастер помещает бит за битом на шину и каждый раз выдает тактовый импульс, чтобы сообщить, что данные готовы к чтению. Если мастер хочет получать данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов, когда подан тактовый импульс. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (2-проводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI.

Два или более сигнала на одном и том же проводе могут вызвать конфликты, и у вас может возникнуть проблема, если одно устройство отправит «1», а другое — «0». Следовательно, шина подключена по схеме ИЛИ: два резистора переводят шину на высокий уровень, а устройства отправляют только низкие уровни. Если они хотят послать высокий уровень, они просто отпускают автобус.

TTL (транзисторная транзисторная логика) не является протоколом. Это более старая технология цифровой логики, но это название часто используется для обозначения напряжения питания 5 В, часто неправильно относясь к тому, что следует называть UART.

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

Как работают последовательные порты | HowStuffWorks

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

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

Перед каждым байтом данных последовательный порт отправляет стартовый бит, который представляет собой один бит со значением 0.После каждого байта данных он отправляет стоповый бит, чтобы сигнализировать, что байт завершен. Он также может отправить бит четности.

Последовательные порты, также называемые портами связи (COM) , являются двунаправленными . Двунаправленная связь позволяет каждому устройству как принимать данные, так и передавать их. Последовательные устройства используют разные контакты для приема и передачи данных — использование одних и тех же контактов ограничит связь до полудуплекс , что означает, что информация может перемещаться только в одном направлении за раз.Использование разных контактов позволяет полнодуплексной связи , при которой информация может перемещаться в обоих направлениях одновременно.

Последовательные порты полагаются на специальную микросхему контроллера, универсальный асинхронный приемник / передатчик (UART) , для правильной работы. Микросхема UART принимает параллельный вывод системной шины компьютера и преобразует его в последовательную форму для передачи через последовательный порт. Чтобы работать быстрее, большинство микросхем UART имеют встроенный буфер объемом от 16 до 64 килобайт.Этот буфер позволяет микросхеме кэшировать данные, поступающие по системной шине, пока он обрабатывает данные, поступающие на последовательный порт. В то время как большинство стандартных последовательных портов имеют максимальную скорость передачи 115 Кбит / с (килобит в секунду), высокоскоростные последовательные порты, такие как Enhanced Serial Port (ESP) и Super Enhanced Serial Port (Super ESP) , могут достигать передачи данных. скорости 460 Кбит / с.

Последовательная связь — learn.sparkfun.com

Добавлено в избранное

Любимый

88

Введение

Встроенная электроника — это объединение схем (процессоров или других интегральных схем) для создания симбиотической системы.Чтобы эти отдельные каналы обменивались информацией, они должны использовать общий протокол связи. Для этого обмена данными определены сотни протоколов связи, каждый из которых можно разделить на две категории: параллельный или последовательный.

Параллельный и последовательный

Параллельные интерфейсы одновременно передают несколько битов. Обычно для них требуется шин, данных — передача по восьми, шестнадцати или более проводам. Данные передаются огромными, грохочущими волнами единиц и нулей.

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

Последовательные интерфейсы передают свои данные по одному биту за раз. Эти интерфейсы могут работать всего с одним проводом, обычно не более четырех.

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

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

Параллельная связь, безусловно, имеет свои преимущества. Это быстро, просто и относительно легко реализовать. Но для этого требуется гораздо больше линий ввода / вывода (I / O). Если вам когда-либо приходилось переносить проект с базовой Arduino Uno на Mega, вы знаете, что линии ввода-вывода на микропроцессоре могут быть драгоценными и немногочисленными.Таким образом, мы часто выбираем последовательную связь, жертвуя потенциальной скоростью ради полезности контактов.

Асинхронный последовательный

За прошедшие годы были созданы десятки последовательных протоколов для удовлетворения особых потребностей встраиваемых систем. USB (универсальная последовательная шина ) и Ethernet — это пара наиболее известных компьютерных последовательных интерфейсов. Другие очень распространенные последовательные интерфейсы включают SPI, I 2 C и стандарт последовательного порта, о котором мы здесь сегодня поговорим. Каждый из этих последовательных интерфейсов можно разделить на две группы: синхронные или асинхронные.

Синхронный последовательный интерфейс всегда связывает свою линию (линии) данных с тактовым сигналом, поэтому все устройства на синхронной последовательной шине используют общие часы. Это упрощает и зачастую ускоряет последовательную передачу данных, но также требует как минимум одного дополнительного провода между взаимодействующими устройствами. Примеры синхронных интерфейсов включают SPI и I 2 C.

Асинхронный означает, что данные передаются без поддержки внешнего тактового сигнала .Этот метод передачи идеально подходит для минимизации количества необходимых проводов и контактов ввода-вывода, но это означает, что нам нужно приложить дополнительные усилия для надежной передачи и приема данных. Последовательный протокол, который мы будем обсуждать в этом руководстве, является наиболее распространенной формой асинхронной передачи. На самом деле это настолько распространено, что, когда большинство людей говорят «серийный», они говорят об этом протоколе (что вы, вероятно, заметите в этом руководстве).

Последовательный протокол без тактовой частоты, который мы обсудим в этом руководстве, широко используется во встроенной электронике.Если вы хотите добавить в свой проект модуль GPS, Bluetooth, XBee, ЖК-дисплеи с последовательным интерфейсом или многие другие внешние устройства, вам, вероятно, потребуется добавить несколько последовательных интерфейсов.

Рекомендуемая литература

Это руководство основано на нескольких концепциях электроники нижнего уровня, в том числе:

двоичный

Двоичная — это система счисления в электронике и программировании … поэтому важно научиться этому. Но что такое двоичный? Как это переводится в другие системы счисления, такие как десятичная?

Логические уровни

Узнайте разницу между 3.Устройства 3V и 5V и логические уровни.

Аналоговый и цифровой

В этом руководстве рассматривается концепция аналоговых и цифровых сигналов в их отношении к электронике.

Как читать схему

Обзор обозначений схем компонентов, а также советы и рекомендации для лучшего чтения схем. Щелкните здесь и станьте схематически грамотным уже сегодня!

Шестнадцатеричный

Как интерпретировать шестнадцатеричные числа и как преобразовать их в / из десятичных и двоичных чисел.

ASCII

Краткая история того, как появился ASCII, как он полезен для компьютеров, и некоторые полезные таблицы для преобразования чисел в символы.

Если вы не очень хорошо знакомы с какой-либо из этих концепций, подумайте о проверке этих ссылок.

А теперь давайте отправимся в серийное путешествие …

Правила серийного номера

Асинхронный последовательный протокол имеет ряд встроенных правил — механизмов, которые помогают обеспечить надежную и безошибочную передачу данных.Вот эти механизмы, которые мы получаем для отказа от внешнего тактового сигнала:

  • Биты данных,
  • бит синхронизации,
  • бит четности,
  • и скорость передачи.

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

Скорость передачи

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

Скорость передачи может быть практически любой в разумных пределах. Единственное требование — чтобы оба устройства работали с одинаковой скоростью. Одна из наиболее распространенных скоростей передачи, особенно для простых вещей, где скорость не критична, — 9600 бит / с .Другие «стандартные» скорости: 1200, 2400, 4800, 19200, 38400, 57600 и 115200.

Чем выше скорость передачи, тем быстрее отправляются / принимаются данные, но существуют ограничения на скорость передачи данных. Обычно вы не увидите скорости, превышающей 115200 — это быстро для большинства микроконтроллеров. Поднимитесь слишком высоко, и вы начнете видеть ошибки на принимающей стороне, поскольку часы и периоды выборки просто не успевают.

Обрамление данных

Каждый блок (обычно байт) передаваемых данных фактически отправляется в пакете или кадре бит.Кадры создаются путем добавления к нашим данным битов синхронизации и четности.

Серийный корпус. Некоторые символы в кадре имеют настраиваемый размер бит.

Давайте подробно рассмотрим каждую из этих частей рамы.

Блок данных

Настоящая суть каждого последовательного пакета — это данные, которые он несет. Мы неоднозначно называем этот блок данных чанком , потому что его размер конкретно не указан. Количество данных в каждом пакете может быть установлено от 5 до 9 бит.Конечно, стандартный размер данных — это ваш базовый 8-битный байт, но другие размеры имеют свое применение. 7-битный блок данных может быть более эффективным, чем 8-ми битный, особенно если вы просто передаете 7-битные символы ASCII.

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

Биты синхронизации

Биты синхронизации — это два или три специальных бита, передаваемых с каждым блоком данных. Это стартовый бит и стоповый бит . Как следует из названия, эти биты отмечают начало и конец пакета. Всегда есть только один стартовый бит, но количество стоповых битов можно настроить на один или два (хотя обычно его оставляют равным одному).

Стартовый бит всегда обозначается незанятой строкой данных, переходящей от 1 к 0, в то время как стоповый бит (ы) переходит обратно в состояние ожидания, удерживая строку на 1.

Биты четности

Четность — это форма очень простой низкоуровневой проверки ошибок. Он бывает двух видов: четный и нечетный. Для создания бита четности все 5-9 битов байта данных складываются, и четность суммы определяет, установлен ли бит или нет. Например, предполагая, что четность установлена ​​на четность и добавляется к байту данных, например 0b01011101 , который имеет нечетное число 1 (5), бит четности будет установлен на 1 . И наоборот, если бы режим четности был установлен на нечетный, бит четности был бы 0 .

Четность — это необязательный , который не очень широко используется. Это может быть полезно для передачи через шумные среды, но это также немного замедлит вашу передачу данных и требует, чтобы отправитель и получатель реализовали обработку ошибок (обычно полученные данные, которые терпят неудачу, должны быть отправлены повторно).

9600 8N1 (пример)

9600 8N1 — 9600 бод, 8 бит данных, без четности и 1 стоповый бит — это один из наиболее часто используемых последовательных протоколов. Итак, как будут выглядеть один или два пакета данных 9600 8N1? Приведем пример!

Устройство, передающее символы ASCII «O» и «K», должно создать два пакета данных.Значение ASCII O (это верхний регистр) — 79, что разбивается на 8-битное двоичное значение 01001111 , а двоичное значение K 01001011 . Осталось только добавить биты синхронизации.

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

Поскольку мы передаем со скоростью 9600 бит / с, время, затрачиваемое на поддержание высокого или низкого уровня каждого из этих битов, составляет 1 / (9600 бит / с) или 104 мкс на бит.

Для каждого переданного байта данных фактически отправляется 10 бит: стартовый бит, 8 бит данных и стоповый бит. Итак, при 9600 бит / с мы фактически отправляем 9600 бит в секунду или 960 (9600/10) байтов в секунду.


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

Электромонтаж и оборудование

Последовательная шина состоит всего из двух проводов — один для отправки данных, а другой — для приема.Таким образом, последовательные устройства должны иметь два последовательных контакта: приемник RX и передатчик TX .

Важно отметить, что эти ярлыки RX и TX относятся к самому устройству. Таким образом, RX от одного устройства должен переходить в TX другого, и наоборот. Это странно, если вы привыкли подключать VCC к VCC, GND к GND, MOSI к MOSI и т. Д., Но это имеет смысл, если подумать. Передатчик должен разговаривать с приемником, а не с другим передатчиком.

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

Некоторые последовательные шины могут обходиться без единого соединения между отправляющим и принимающим устройством. Например, все наши ЖК-дисплеи с последовательным подключением — это уши, и на самом деле у них нет никаких данных для обратной передачи на управляющее устройство.Это так называемая последовательная связь simplex . Все, что вам нужно, это один провод от TX ведущего устройства до RX линии слушателя.

Аппаратная реализация

Мы рассмотрели асинхронный последовательный порт с концептуальной стороны. Мы знаем, какие провода нам нужны. Но как на самом деле реализуется последовательная связь на уровне сигнала? На самом деле, разными способами. Существуют всевозможные стандарты для последовательной передачи сигналов. Давайте посмотрим на пару наиболее популярных аппаратных реализаций последовательного интерфейса: логического уровня (TTL) и RS-232.

Когда микроконтроллеры и другие низкоуровневые ИС взаимодействуют последовательно, они обычно делают это на уровне TTL (транзисторно-транзисторная логика). Последовательный TTL Сигналы существуют между диапазоном напряжения питания микроконтроллера — обычно от 0 В до 3,3 В или 5 В. Сигнал на уровне VCC (3,3 В, 5 В и т. Д.) Указывает либо на свободную линию, либо на бит со значением 1, либо на стоповый бит. Сигнал 0 В (GND) представляет либо стартовый бит, либо бит данных со значением 0.

RS-232, который можно найти на некоторых из более древних компьютеров и периферийных устройств, похож на TTL-последовательный порт, перевернутый с ног на голову.Сигналы RS-232 обычно находятся в диапазоне от -13 В до 13 В, хотя в спецификации допускается любое значение от +/- 3 В до +/- 25 В. В этих сигналах низкое напряжение (-5 В, -13 В и т. Д.) Указывает либо на свободную линию, либо на стоповый бит, либо на бит данных со значением 1. Высокий сигнал RS-232 означает либо стартовый бит, либо 0- бит данных значения. Это своего рода противоположность серийному TTL.

Между двумя стандартами последовательных сигналов, TTL намного проще реализовать во встроенных схемах. Однако низкие уровни напряжения более подвержены потерям на длинных линиях передачи.RS-232 или более сложные стандарты, такие как RS-485, лучше подходят для последовательной передачи на большие расстояния.

Когда вы подключаете два последовательных устройства вместе, важно убедиться, что их сигнальные напряжения совпадают. Вы не можете напрямую связать последовательное устройство TTL с шиной RS-232. Вам придется изменить эти сигналы!


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

УАПП

Последняя часть этой серийной головоломки — найти что-то, что могло бы создать как последовательные пакеты, так и управлять этими физическими линиями оборудования.Введите UART.

Универсальный асинхронный приемник / передатчик (UART) — это блок схемы, отвечающий за реализацию последовательной связи. По сути, UART действует как посредник между параллельным и последовательным интерфейсами. На одном конце UART находится шина из восьми или около того линий данных (плюс несколько управляющих контактов), на другом — два последовательных провода — RX и TX.

Супер-упрощенный интерфейс UART. Параллельный на одном конце, последовательный на другом.

UART существуют как отдельные ИС, но чаще встречаются внутри микроконтроллеров.Вам нужно будет проверить таблицу вашего микроконтроллера, чтобы узнать, есть ли у него какие-либо UART. У кого-то его нет, у кого-то есть, у кого-то много. Например, Arduino Uno, основанный на «старом верном» ATmega328, имеет только один UART, а Arduino Mega, построенный на ATmega2560, имеет целых четыре UART.

Как следует из аббревиатуры R и T , UART отвечают как за отправку, так и за прием последовательных данных. На стороне передачи UART должен создать пакет данных — добавив биты синхронизации и четности — и отправить этот пакет по линии передачи с точным временем (в соответствии с установленной скоростью передачи).На стороне приема UART должен выполнить выборку линии RX со скоростью в соответствии с ожидаемой скоростью передачи, выбрать биты синхронизации и выдать данные.

Блок-схема внутреннего UART (любезно предоставлена ​​таблицей данных Exar ST16C550)

Более продвинутые UART могут сбрасывать полученные данные в буфер , где они могут оставаться до тех пор, пока микроконтроллер не придет за ними. UART обычно выпускают свои буферизованные данные по принципу FIFO. Буферы могут иметь размер от нескольких бит до тысяч байтов.

Программные UART

Если микроконтроллер не имеет UART (или его недостаточно), последовательный интерфейс может быть с битовой последовательностью — напрямую управляться процессором. Это подход, который используют библиотеки Arduino, такие как SoftwareSerial. Bit-banging требует много ресурсов процессора и обычно не так точен, как UART, но в крайнем случае работает!

Общие ловушки

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

RX-to-TX, TX-to-RX

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

FTDI Базовое программирование Pro Mini. Обратите внимание на пересечение RX и TX!

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

Несоответствие скорости передачи

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

Данные передаются со скоростью 9600 бит / с, но принимаются со скоростью 19200 бит / с. Несоответствие бода = мусор.

Разногласия в автобусе

Последовательная связь позволяет двум устройствам обмениваться данными по одной последовательной шине. Если несколько устройств пытаются передавать по одной и той же последовательной линии, вы можете столкнуться с конфликтом на шине. Дун Дун Дун ….

Например, если вы подключаете модуль GPS к Arduino, вы можете просто подключить линию TX этого модуля к линии RX Arduino.Но этот вывод Arduino RX уже подключен к выводу TX преобразователя USB-to-serial, который используется всякий раз, когда вы программируете Arduino или используете Serial Monitor . Это создает потенциальную ситуацию, когда и модуль GPS, и микросхема FTDI пытаются одновременно передавать данные по одной и той же линии.

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

Два устройства пытаются передавать данные одновременно по одной линии — это плохо! В «лучшем» случае ни одно из устройств не сможет отправлять свои данные.В худшем случае обе линии передачи устройства выходят из строя (хотя это редко и обычно защищено от этого).

Подключение нескольких приемных устройств к одному передающему устройству может быть безопасным. Не совсем соответствует спецификации и, вероятно, не одобряется закаленным инженером, но это сработает. Например, если вы подключаете последовательный ЖК-дисплей к Arduino, самым простым подходом может быть подключение линии RX ЖК-модуля к линии TX Arduino. TX Arduino уже подключен к линии RX USB-программатора, но это по-прежнему оставляет только одно устройство, контролирующее линию передачи.

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

В общем — одна последовательная шина, два последовательных устройства!

Ресурсы и дальнейшее развитие

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

Хотите узнать больше о других стандартах связи? Может что-то синхронное? Ознакомьтесь со следующими протоколами связи.

I2C

Введение в I2C, один из основных используемых сегодня протоколов встроенной связи.

AST-CAN485 Руководство по подключению

AST CAN485 — это миниатюрная Arduino в компактном форм-факторе ProMini.В дополнение ко всем обычным функциям он имеет встроенные порты CAN и RS485, позволяющие быстро и легко взаимодействовать с множеством промышленных устройств.

Многие технологии широко используют последовательную связь:

А может, хотите посмотреть сериал в действии?

Последовательные мосты USB — UART

Преобразователи или мосты

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

Приложения

С точки зрения взлома, наиболее интересное применение UART — это встроенные устройства. Большинство встроенных устройств имеют на плате разъем UART. Устройство отправляет вывод консоли и принимает команды через интерфейс UART. Часто это дает прямой доступ к корневой оболочке.

Связь

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

Несколько других протоколов построены на связи UART, такие как IrDA, DMX, MIDI и порты P1 интеллектуального счетчика. Их можно использовать с мостами USB-UART, но для их работы потребуется дополнительная обработка.

Связь с UART

Когда два устройства обмениваются данными через UART, они соединяются как минимум тремя проводами:

  • Общая земля, или 0 В, или отрицательный вывод источника питания.
  • Передающий контакт (Tx) одного устройства соединен с приемным контактом (Rx) другого устройства.
  • Точно так же Rx подключается к Tx.
  • Для изолированных адаптеров Vcc или положительный вывод источника питания.

Теперь устройства могут отправлять данные друг другу, изменяя напряжение на линиях Tx, и считывать данные, проверяя напряжение на линии Rx. UART использует двоичный протокол, поэтому есть только два уровня напряжения: высокий и низкий.

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

Скорость передачи

Скорость передачи — это термин, обозначающий количество битов в секунду, которые передаются по сети. Обычная скорость передачи составляет 9600 бит в секунду. В этом случае один бит занимает 1 9600 секунды или 104 мкс.

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

Наиболее распространенные используемые скорости передачи — 9600 и 115200. Затем есть несколько стандартных скоростей передачи, например 19200 и 38400. Теоретически вы можете использовать любую скорость передачи, но старые интерфейсы поддерживают только стандартные скорости передачи. Для отправки и приема можно использовать разные скорости передачи, хотя это бывает довольно редко.

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

Кадры

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

Уровни напряжения

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

  • Последовательные порты RS232 используют отрицательное и положительное напряжение до -15 В и 15 В.
  • Некоторые устройства используют 0 В и 5 В, например, Arduino Uno, который работает от 5 В.
  • Большинство устройств используют 0 В и 3,3 В.
  • Некоторые устройства используют 0 В и 1,8 В.

Для RS232 отрицательное напряжение — это логическая 1, положительное напряжение — 0. Для большинства других устройств UART 0 В означает бит 0, а более высокое напряжение означает 1 бит.

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

Напряжение в диапазоне от 0 до напряжения источника питания (Vcc) также называется уровнями напряжения TTL.Уровни напряжения 5 В TTL рассматривают все, что выше 2 В, как высокий логический уровень, и, таким образом, также могут получать данные от устройств UART на 3,3 В. Таким образом, в этом случае можно связаться с UART на 5 В с помощью UART на 3,3 В.

Модуль преобразователя USB в UART

Чтобы ваш компьютер мог разговаривать с UART, вам необходимо устройство, которое преобразует компьютерные байты в сигналы UART; модуль преобразователя USB в UART. Это небольшое устройство, которое подключается к вашему USB-порту и имеет как минимум выходы заземления, Rx и Tx. Он притворяется последовательным портом вашего компьютера.Компьютер отправляет данные в этот последовательный порт, а модуль преобразует их в сигналы UART.

Различия микросхем

Мост USB-UART имеет специальную микросхему для этой цели. Существует несколько часто используемых семейств микросхем:

  • Jiangsu Qinheng / WCH Ch440
  • Silicon Labs CP2102
  • Пролифик PL2303
  • FTDI FT232

Имеются разные версии с разными характеристиками:

Чип Цена Напряжение ввода / вывода Макс.скорость передачи Размер буфера GPIO Лист данных
Ch440 € 0.25 3,3 / 5 В 2 Мбит / с 32 + 32 В 0 Ч440
Корпус 441 0,75 € 3,3 / 5 В 2 Мбит / с 32 + 32 В 0 Ч441
CP2102 0,75 € 3,3 В 1 1 Мбит / с 576 + 640 В 0 CP2102 / 9
CP2102N € 1.50 3,3 В 3 Мбит / с 512 + 512 В 7 CP2102N
PL2303HXD € 0,90 1,8 — 3,3 В 1 12 Мбит / с 512 B 4 PL2303HXD
PL2303TA € 0,70 1,8 — 3,3 В 6 Мбит / с 512 B 2 PL2303TA
FT232R € 3.50 1,8 — 5 В 3 Мбит / с 128 + 256 B 4 FT232R
FT231X 1,80 € 1,8 — 4 В 3 Мбит / с 512 + 512 В 4 FT231X
  1. CP2102 и PL2302HXD выдают максимум 3,3 В, но могут принимать до 5 В на входе, что делает их совместимыми с устройствами UART на 5 В.

Помимо различий в микросхемах, качество драйверов также различается для разных микросхем. Некоторые чипы имеют драйверы Windows, встроенные в Windows или распространяемые через Центр обновления Windows, что обеспечивает возможность подключения и воспроизведения. У других чипов есть драйверы, которые надежно вызывают сбой операционной системы при чтении и записи на устройство значительных объемов данных. Linux является здесь исключением, поскольку драйверы Linux пишутся, обслуживаются и проверяются разработчиками ядра, а не производителем микросхемы.

FTDI является одним из самых длинных и ранее был единственной реализацией, доступной для мостов USB-UART. Они были настолько распространены, что мост часто называли FTDI по названию компании, которая сделала микросхему преобразователя. В настоящее время их быстро заменяют гораздо более дешевые китайские преобразователи.

Поддельные чипы FTDI

Микросхемы

FTDI FT232 довольно популярны и относительно дороги (3,50 евро). Это привело к росту числа поддельных китайских подделок. Эти имитации имеют логотип FTDI и работают правильно, и их трудно отличить от подделок.

FTDI не был доволен этим. В 2014 году они выпустили обновление драйвера, которое работает только с настоящими чипами FTDI, и заблокировали поддельные чипы. Позже они вернулись это спорное поведение, но серьезно повреждены своей репутация. Несмотря на это, поддельные чипы FT232 по-прежнему широко используются и доступны.

Различия адаптера

Самые дешевые адаптеры просто имеют USB-порт и контактный разъем, напрямую подключенные к микросхеме. Обычно они открывают только землю, положительное напряжение (Vcc), Rx и Tx, а не другие линии модема управления данными, такие как RTS и CTS.

Также существуют переходники с гальванической развязкой. Они используют землю и Vcc устройства, с которым вы хотите связаться, и не подключают устройство к компьютеру электрически. Это защищает ваш компьютер от высокого напряжения, предотвращает образование контуров заземления и снижает уровень шума. Эти адаптеры более дорогие, но они могут спасти жизнь вашему компьютеру в случае, если вы когда-нибудь по ошибке подключите мост к высокому напряжению.

Справочник покупателя

При выборе моста USB-UART имейте в виду следующее:

  • Уровень напряжения.Определите уровень напряжения, который вы хотите использовать. Некоторые мосты поддерживают как 3,3 В, так и 5 В, и есть небольшая перемычка для переключения напряжения.
  • Драйверы. Проверьте, есть ли у моста, который вы хотите купить, драйверы для вашей платформы.
  • Мигающие светодиоды. Они классно выглядят и могут помочь вам в устранении неполадок.
  • Разъем USB. Некоторые мосты подключаются прямо к вашему компьютеру, но часто полезно иметь USB-кабель между вашим компьютером и мостом, чтобы у вас было больше места на вашем столе.Мосты с разъемами mini-USB довольно распространены, но я предпочитаю разъемы micro-USB.
  • Особенности. Вам нужны специальные функции, такие как инвертированные сигналы или специализированное СППЗУ? Проверьте технический паспорт микросхемы.
  • Скорость. Вам нужны особенно быстрые или необычные скорости? Проверьте технический паспорт микросхемы.
  • Гальваническая развязка. Как описано выше, электрическое отключение USB-соединения от контактов ввода-вывода защищает компьютер от повреждения.
  • Сигналы управления модемом.Если вам нужны управляющие сигналы RTS, CTS, DSR, DTR, DCD и RI, убедитесь, что у вашего моста есть контакты для них.

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

Для нормального использования UART подойдет любой чип. С самым дешевым мостом на AliExpress (0,50 евро) вы можете нормально разговаривать со встроенными устройствами.

Драйверы

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

В Linux драйверы поставляются вместе с ядром. Наиболее распространенные микросхемы поддерживаются начиная с версии ядра 2.6 и выше, а драйверы все еще улучшаются в последних версиях.

MacOS поставляется со встроенными драйверами для определенных микросхем. Несколько чипов FTDI поддерживаются в MacOS 10.9 или 10.10, а некоторые чипы Ch440 и PL2303 поддерживаются в MacOS 10.14. Для других чипов нужны драйверы на MacOS. Например, драйвер Ch440 можно установить с помощью homebrew с помощью следующей команды:

  brew cask install wch-ch44x-usb-serial-driver
  

В качестве альтернативы вы можете использовать отличное приложение Serial для macOS, которое поставляется с собственными драйверами.

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

Некоторые из этих драйверов сомнительного качества и могут сделать вашу систему нестабильной.Я мог надежно разбить свой Mac, читая и записывая большой объем данных в последовательный порт при использовании драйвера Ch440.

Поиск имени последовательного порта

Мост USB-UART добавляет к вашему компьютеру последовательный порт. Для связи через UART вы должны читать и писать в правильный последовательный порт. Если вы не можете найти нужный порт, возможно, у вас проблемы с драйверами или USB-подключением к мосту.

Linux

Устройство называется что-то вроде / dev / ttyUSB0.Если вы подключите устройство к просмотру журналов ( sudo dmesg ), строка обычно указывает, где подключено новое обнаруженное устройство:

macOS

Устройство называется примерно так /dev/tty.wchusbserial1410. Я не нашел надежного способа узнать имя файла этого порта. Вы можете попробовать следующее:

  • Просмотрите журналы с помощью sudo dmesg .
  • Перечислите USB-устройства, используя ioreg -p IOUSB , или перейдя в «Об этом Mac», «Системный отчет», «USB».

Если все остальное не помогает, перечислите все файлы в / dev, подключите устройство, перечислите еще раз и сравните два:

  $ ls / dev> before.txt
$ ls / dev> after.txt
$ diff before.txt after.txt
268a 269 270
> cu.usbserial-1410
> cu.wchusbserial1410
444a 447 448
> tty.usbserial-1410
> tty.wchusbserial1410
  
Окна

В Windows порт называется COM3 или другим номером. Вы можете найти правильный номер порта в диспетчере устройств.

Разговор с последовательным портом

Вам необходимо программное обеспечение, которое устанавливает скорость передачи и отправляет и принимает байты через последовательный порт.Используйте tio в Linux, Putty в Windows и Serial в macOS. Не используйте экран .

При использовании Putty в Windows включить программное квитирование, которое по умолчанию включено. В меню Serial установите Flow control на None .

Обычно вам нужно программное обеспечение, которое поддерживает произвольную скорость передачи и информирует вас о том, что происходит. В этом плане screen и gtkterm недостаточны. Хотя screen может установить последовательное соединение и может работать правильно, он не сообщает вам, когда он не может делать то, что вы хотите.Если вы запустите команду screen / dev / ttyUSB0 128000 , вы можете ожидать, что для скорости передачи будет установлено значение 128000. Однако это неподдерживаемая скорость передачи данных, и screen автоматически возвращается к 9600. Кажется, все в порядке, за исключением того, что скорость передачи неверна.

Еще более странно то, что screen / dev / ttyUSB0 4098 использует скорость передачи 115200, потому что константа ядра B115200 равна 4098 , а screen интерпретирует данное число в любом случае.

Команда cu по крайней мере сообщает вам, что скорость передачи не поддерживается.

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

  • экран: ctrl-a, k, y
  • tio: ctrl-t, q
  • у.е.: ~. введите

Поиск интерфейса UART на устройстве

Если вы хотите подключиться к встроенному устройству, первым делом найдите правильные контакты на плате.Часто имеется ряд из четырех или пяти контактов, по крайней мере, с заземлением, Vcc, Rx и Tx. Иногда штифты опускаются и остаются только отверстия. Часто такое соединение обозначается J5 или другим номером.

На следующем изображении вы можете увидеть интерфейс UART на модеме Huawei. Устройство шло с пустыми контактными площадками, и я припаял к нему контакты. На шелкографии вы можете увидеть небольшую таблицу с описанием контактов: Tx, Gnd, Vcc, Rx. Контакты с правой стороны — это контакты JTAG. Наличие UART и JTAG в одном разъеме позволяет легко подключить отладочный кабель к плате для отладки.По тем же причинам порты отладки часто находятся сбоку от платы.

Если вы подозреваете, что контакт является линией UART, первым делом необходимо измерить напряжение с помощью мультиметра. Сначала найдите хорошее соединение с общей землей и подключите к нему черный провод мультиметра. Затем измерьте напряжение на подозреваемых контактах красным проводом. В режиме ожидания линия Tx будет иметь напряжение 3,3 В. Продолжайте измерять при перезагрузке устройства. Данные часто отправляются при загрузке, поэтому мы можем использовать их, чтобы определить, отправляются ли данные по линии.Если данные отправлены, напряжение временно упадет ниже 3В, согласно мультиметру.

Теперь вы определили, что линия имеет приемлемое напряжение и на ней есть активность. Это еще не означает, что линия является линией UART, она может использовать другой протокол, такой как I2C или SPI. Один из способов определить это — использовать логический анализатор или осциллограф для просмотра электрических сигналов. Или вы можете подключить свой USB к мосту UART и посмотреть, работает ли он.

В примере ниже камера имеет пять отверстий, изначально скрытых под белой наклейкой.Это дает возможность получить доступ к интерфейсу UART извне. Однако я не смог заставить это работать и припаял провода к контактным площадкам. Контактные площадки обозначены как TP41, TP42 и т. Д., Где TP означает контрольную точку.

Подключение к устройству

Перед подключением к устройству убедитесь, что оно излучает напряжение, совместимое с вашим мостом. Линии RS232, например, используют -15 и +15 В, что может легко испортить ваш мост. Даже если напряжение приемлемое, вы можете установить резистор 300 Ом между мостом и устройством, чтобы предотвратить слишком большие токи.

При подключении моста UART к устройству подключите землю, Tx и Rx. Rx моста подключается к Tx устройства и наоборот.

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

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

В качестве альтернативы можно отключить устройство от источника питания и подать питание через мост USB-UART. Однако большинство мостов могут обеспечивать ток не более 100 мА или около того, что недостаточно для большинства устройств.

Определение скорости передачи

Обычный способ — попробовать стандартные скорости передачи, пока результат не станет разборчивым.В качестве альтернативы скорость передачи данных может быть определена путем измерения длины самого короткого импульса. При скорости передачи 9600 бод один бит занимает 1 9600 секунды. Итак, если мы измеряем длительность одного бита, мы можем определить скорость передачи.

Это проще всего с логическим анализатором, который просто показывает время в интерфейсе:

В качестве альтернативы можно использовать микроконтроллер, используя захват входа для измерения ширины импульса. Я создал программу автобода, которая работает на Arduino Uno и может надежно определять скорость передачи до 200 000 бит / с.

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

Поиск и устранение неисправностей

Первый шаг — определить, где проблема: между вашим компьютером и мостом или между мостом и устройством, к которому вы хотите подключиться?

Определение проблемы
  • Есть ли у вашего компьютера дополнительное устройство COM или tty при подключении моста? В противном случае у вас проблема с драйвером.
  • Проверьте светодиоды на мосту.
    • Загорается ли светодиод Tx при отправке данных? Тогда соединение между вашим компьютером и мостом в порядке.
    • Горит ли светодиод Rx, но вы ничего не видите в приложении терминала? Тогда соединение между мостом и устройством в порядке, и проблема между вашим компьютером и мостом.
  • Отсоедините мост от устройства и соедините Rx и Tx моста вместе.Отражается ли ваш ввод в терминале? Тогда подключение к мосту в порядке.
Проблемы с USB
  • Проверьте, распознает ли ваша операционная система устройство USB.
    • В Linux: lsusb
    • В macOS: ioreg -p IOUSB
    • В Windows: проверьте диспетчер устройств.
  • Просмотрите журналы (используя dmesg) при подключении устройства к компьютеру.
  • Отключите мост, перечислите все устройства (ls / dev), снова подключите мост и сравните два.
  • Попробуйте другой заведомо исправный кабель USB.
  • Повторите то, что вы делаете, несколько раз, чтобы исключить временную проблему.
Удаленные проблемы
  • Скорость передачи правильная?
  • Использует ли мост предполагаемую скорость передачи данных?
  • Использует ли устройство перевернутую линию передачи данных?
  • Необходимо ли на устройстве активировать последовательную связь? Есть ли в нем строка запроса данных?
  • Правильно ли заземлено устройство?

Заключение

Использование моста USB-UART может быть довольно простым, если он работает, или может быть болезненным, если он не работает.Я удивлен, что можно так много рассказать о UART.

Подробнее

Чипсы

Изолированные переходники

Статьи

Твиты

Терминология

— Почему в статьях используется термин «UART» вместо «последовательный порт»?

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

При традиционной асинхронной последовательной связи данные передаются серией значений «метка» и «пробел». Представление этих значений зависит от среды передачи данных, например, RS-232C определяет метку как напряжение в диапазоне от -3 В до -15 В, а пробел — от + 3 В до + 15 В.Чтобы знать, где каждый байт (или символ) начинается и заканчивается, каждый байт снабжен префиксом пробела (стартовый бит), который указывает начало байта, и суффиксом с одним или несколькими значениями меток (стоповыми битами), которые указывают конец байта. Между стартовым и стоповым битами каждый байт передается как последовательность значений метки (1) и пробела (0).

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

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

Так как стартовый бит фактически вызывает повторную синхронизацию приемника с передатчиком каждый раз, когда передается байт, это означает, что приемнику не нужно производить выборку каждого бита точно с той же скоростью, что и передатчик.Поскольку обычно перед повторной синхронизацией передается только 10 или менее битов, включая стартовые, данные и стоповые биты, даже относительно большая разница в 5% в скоростях передачи и приема не вызовет ошибок.

UART делает все необходимое для реализации асинхронной последовательной связи на оборудовании и делает это в цифровом виде (в других более ранних реализациях асинхронного оборудования использовались аналоговые схемы синхронизации, которые требовали ручной калибровки). Однако также возможно реализовать асинхронное последовательное устройство в программном обеспечении, используя метод, называемый немного стучать.Это было сделано на старых компьютерах, таких как Commodore 64, чтобы сэкономить деньги, и до сих пор время от времени делается в современных встроенных приложениях по той же причине.

Наконец, есть и другие способы последовательной передачи данных, например методы синхронной последовательной связи, при которых отдельный тактовый сигнал передается вместе с последовательными данными. Фактически, многие современные компьютерные интерфейсы, такие как USB, Serial ATA и PCI Express, на самом деле являются последовательными устройствами. Таким образом, хотя «последовательный порт» обычно относится к асинхронному последовательному устройству, обычно реализованному с помощью какого-либо типа UART, строго говоря, потенциально он может означать широкий спектр устройств.Называя используемое аппаратное устройство «UART», а программный драйвер для него «драйвером UART», диаграмма, которую вы показали в своем вопросе, дает более точное представление о том, что она описывает.