Протокол передачи данных UART – MBS Electronics
Универсальный асинхронный приёмопередатчик
Предисловие
Современная цифровая электроника — это всегда соединения между цепями (процессорами, контроллерами и т.д.) для создания симбиотической системы. Для того, чтобы отдельные микросхемы могли бы «понимать» друг друга, они должны разделять некий общий протокол связи. За годы существования цифровой техники было разработано множество протоколов. В целом, их все можно разделить на две большие группы — параллельные и последовательные.
Параллельный или последовательный?
Параллельные интерфейсы передают одновременно (параллельно) несколько бит информации (отсюда, собственно и их название). Для передачи данных такие интерфейсы требуют наличия шин, состоящих из 8, 16 или более проводников.
Схема параллельного 8-разрядного интерфейса. Передача данных управляется тактирующим сигналом CLK.
В противоположность параллельным, последовательные интерфейсы передают по одному биту за раз. Теоретически такой интерфейс может работать на одном единственном проводе. На практике используется до четырех.
Пример последовательного интерфейса, передающего один бит в течение каждого тактового импульса CLK. Требуется всего 2 провода.
Эти два интерфейса можно сравнить с потоком автомобилей. Параллельный интерфейс — это широкое шоссе с количеством полос движения более восьми, а последовательный интерфейс больше поход на двухполосную сельскую дорогу. Мега — Шоссе, потенциально, имеет бОльшую пропускную способность, но очень дорого с точки зрения строительства. Сельская дорога просто выполняет свою функцию и стоит во много раз дешевле многополосного мега-шоссе.
Вне всякого сомнения, параллельные интерфейсы имеют свои преимущества. Это прямота, быстрота, и легкость реализации.
Но мы получаем это за счет большого количества проводов (линий) передачи данных. Если вам когда либо приходилось разрабатывать программы для микроконтроллеров (например в среде Arduino), вы наверняка знаете, насколько драгоценными могут быть линии ввода/вывода. Поэтому мы часто останавливаем свой выбор именно на последовательной связи, жертвуя скоростью, но экономя драгоценные порты микроконтроллера.Асинхронный последовательный интерфейс
За время существования цифровой техники были созданы десятки последовательных протоколов. USB (универсальная Последовательная Шина) и Ethernet — это пример двух наиболее популярных сейчас последовательных протоколов. Другие очень популярные последовательные интерфейсы — это SPI, I2C и последовательный интерфейс, о котором пойдет речь в этой статье. Каждый их этих интерфейсов можно отнести к одной из двух подгрупп — Асинхронные и Синхронные.
Синхронный протокол всегда включает линию тактового сигнала. Это обеспечивает более простую (и зачастую более быструю) передачу данных, но требует как минимум один дополнительный провод. Пример синхронных интерфейсов — это SPI и I2C.
Асинхронный интерфейс подразумевает , что данные передаются без поддержки внешнего тактового сигнала.Этот метод передачи идеально подходит для минимизации количества проводов, но это означает, но для надежной передачи и приема данных рнужно приложить дополнительные усилия. Последовательный интерфейс, который мы обсудим в этой статье, является наиболее распространенным и старым асинхронным и протоколом. Часто бывает так, что, когда человек говорит «последовательный», он имеет в виду именно этот протокол.
Асинхронный последовательный интерфейс, о котором здесь идет речь, широко используется во встраиваемых системах. Если вы хотите добавить в свой проект модуль GPS, Bluetooth, XBee, последовательные ЖК-дисплеи или многие другие внешние устройства, вам, вероятно, придется столкнуться с одним из последовательных интерфейсов.качественный USB -> UART адаптер дешево
Правила последовательного интерфейса.
Асинхронный последовательный протокол имеет ряд встроенных правил — механизмов, которые помогают обеспечить надежную и безошибочную передачу данных. Это те механизмы, которые позволяют передавать данные без использования внешнего тактового сигнала:
- Биты данных
- Биты синхронизации
- Биты проверки четности
- Скорость передачи
Благодаря сочетанию этих правил — параметров, протокол очень гибкий. Для успешной связи нужно убедиться, что оба устройства на шине настроены на использование одинаковых правил.
Скорость передачи
Данный параметр определяет скорость передачи данных по последовательной линии. Обычно это выражается в единицах бит в секунду (бит / с или БОД). Если вы инвертируете этот параметр, выраженный в бодах, то получите время, которое требуется для передачи одного бита. Это значение определяет, как долго передатчик держит последовательную линию в высоком / низком состоянии или в какой период принимающее устройство производит выборку своей линии.
Скорость передачи может быть практически любой в пределах разумного. Единственное требование заключается в том, что оба устройства работали с одинаковой скоростью. Одна из наиболее распространенных скоростей передачи, особенно для простых применений, где скорость не критична, составляет 9600 бит / с. Другие «стандартные» скорости — 1200, 2400, 4800, 19200, 38400, 57600 и 115200.
Чем выше скорость передачи в бодах, тем быстрее осуществляется передача и прием данных. Но для максимальной скорости существуют физические ограничения . Обычно на практике вы не увидите скоростей, превышающих 115200. Для большинства микроконтроллеров это максимальная скорость. Если выбрать слишком высокую скорость, то неизбежно появятся ошибки напринимающей стороне.
Кадры данных
Каждый блок данных (обычно это байт) фактически отправляется в пакете или кадре битов. Кадры создаются путем добавления бит синхронизации и бит четности к битам данным.
Один кадр (Frame) последовательных данны. (Size = размер)
Давайте рассмотрим каждую часть кадра более подробно
Блок Данных ( Data chunk )
Самая важная часть каждого пакета — это блок данных, так как именно этот блок несет полезную информацию. Мы намеренно называем этот блок «куском» данных (chunk), поскольку его размер конкретно не указан. Количество данных в каждом пакете может быть установлено любым — от 5 до 9 бит. Разумеется, стандартный размер данных — это наш с вами основной 8-разрядный байт, но другие его размеры также в ходу. 7-битный блок данных может быть более эффективным, чем 8-битный, особенно если вы просто переносите 7-битные символы ASCII (текст).
После согласования длины символа оба устройства на последовательной шине также должны согласовать достоверность своих данных. Являются ли данные наиболее старшим битом (msb) наименьшим, или наоборот? Если не указано иное, обычно мы предполагаем, что сначала передается младший бит (lsb)
Биты синхронизации
Биты синхронизации представляют собой два или три специальных бита, передаваемых с каждым фрагментом данных.
Это стартовый и стоповый биты. Эти биты отмечают начало и конец пакета. Всегда есть только один стартовый бит, но количество стоповых бит настраивается отдельно. Может быть один или два стоп-бита (чаще всего используется один).Старт-бит всегда определяется линией данных по его спаду (переходу от 1 в 0), в то время как стоп биты определяются линией по фронту, то есть по переходу из 0 в 1.
Биты четности
Четность — это форма очень простой, низкоуровневой проверки ошибок. Может быть два варианта такой проверки: нечетный или четный. Чтобы создать бит четности, все 5-9 бит блока данных складываются, а четность суммы определяет, установлен бит четности или нет. Например, представим себе что у нас проверка установлена в режим четности. Байт данных в двоичном представлении равен 01011101. Видим, что в байте нечетное количество единиц (пять единиц). В этом случае бит проверки четности будет установлен в 1. Если мы настроим режим проверки на на нечетность, то соответственно, бит проверки будет установлен в 0.
Пример настройки протокола: 9600 8N1
9600 8N1 — 9600 бод, 8 бит данных, без контроля четности и 1 стоповый бит — это одна из наиболее часто используемых настроек последовательного протокола. Итак, как выглядит пакет или два из 9600 8N1 данных? Приведем пример:
Фактически для каждого байта передаваемых данных отправляются 10 бит: начальный бит, 8 бит данных и стоповый бит. Таким образом, при 9600 бит / с мы фактически отправляем 9600 бит в секунду или 960 (9600/10) байтов в секунду.
Теперь, когда вы знаете, как создавать последовательные пакеты, мы можем перейти к разделу аппаратного обеспечения.
Мы увидим, как всё это будет реализовано на уровне сигнала.
Последовательная шина состоит всего из двух проводов: один для отправки данных и другой — для приема. Таким образом, последовательные устройства должны иметь два последовательных контакта: приемник, ( RX ) и передатчик ( TX ).
Важно понимать, что обозначения RX и TX относятся к самому устройству. Поэтому RX одного устройства должен соединяться с TX другого, и наоборот. Это может показаться странным, если вы привыкли подключать сигналы VCC к VCC, GND к GND, MOSI в MOSI и т.д. Но все-таки это имеет смысл, поскольку передатчик (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. Но в случае с длинными линиями передачи данных низкие уровни TTL намного более восприимчивы к потерям и помехам. RS-232 или более сложные стандарты, такие как RS-485, лучше подходят для последовательных передач на большие расстояния.
Когда вы соединяете два последовательных устройства вместе, важно убедиться, что их сигнальные напряжения совпадают. Вы не можете напрямую соединять последовательное устройство TTL с шиной RS-232. Вам придется конвертировать их уровни для взаимной совместимости.
UART
Универсальный асинхронный приемник / передатчик (UART) представляет собой блок схем, ответственный за реализацию последовательной связи. По сути, UART выступает в качестве посредника между параллельными и последовательными интерфейсами. На одном конце UART есть шина из восьми (или около того) линий данных (плюс некоторые управляющие контакты), с другой — два последовательных провода — RX и TX.
Упрощенная схема интерфейса UART
Интерфейсы UART существуют в виде отдельных микросхем, но чаще всего они встроены в микроконтроллеры. Чтобы узнать, есть ли у вашего МК протокол UART, вам придется почитать даташит на этот контроллер. У некоторых нет ни одного, у некоторых есть, у некоторых их несколько. Например, Arduino Uno, основанный на старом добром ATmega328, имеет только один UART, в то время как Arduino Mega — построенный на ATmega2560 — имеет целых четыре UART.
R и T в терминологии UART несут ответственность за отправку и получение последовательных данных. На стороне передачи UART должен создать пакет данных — добавление битов синхронизации и четности — и отправить этот пакет по линии TX в соответствии с установленной скоростью передачи. На стороне приема UART должен проверять линию RX со скоростью, соответствующей ожидаемой скорости передачи в бодах, выбирать биты синхронизации и выделять данные.
Внутренняя блок-схема UART (любезно предоставлена Exar ST16C550)
Более продвинутые UART могут передавать полученные данные в буфер, где они будут оставаться до тех пор, пока микроконтроллер не сможет их получить и обработать. Обычно UART выдают буферизованные данные по принципу «первым вошел — первым вышел» (FIFO). Буферы могут быть как маленькими, так и большими, более тысячи байтов.
Программный UART
Если микроконтроллер не имеет встроенного аппаратного UART (или их количество недостаточно для приложения), последовательный интерфейс может быть реализован программно. Это тот подход, который используется в библиотеках Arduino, таких, как SoftwareSerial.Точность работы программно реализуемого UART меньше чем аппаратного, но в крайнем случае можно использовать и такой вариант.
Общие вопросы
Это все, что связано с последовательной связью. Я хотел бы обратить ваше внимание на распространенные ошибки, которые допускают инженеры любого уровня опыта. Это досадные ошибки вроде RX-to-TX, TX-to-RX. Удивительно, но это ошибка, которую я допускал несколько раз.
Несоответствие скорости передачи
Скорость передачи данных — это вроде языка в последовательной связи. Если два устройства не «говорят» с одинаковой скоростью, данные могут быть либо неверно истолкованы, либо полностью пропущены. Если все принимающее устройство «видит» на своей линии приема гору мусора, проверьте соответствие скоростей передачи и приема.
Данные передавались со скоростью 9600 бит/с, но получены со скоростью 19200 бит/с. В итоге — гора мусора.
Объединение шин
Последовательная связь предназначена для того, чтобы два устройства могли обмениваться данными по одной последовательной шине. Если несколько устройств пытаются передать на одной и той же последовательной линии, вы можете столкнуться с конкуренцией на шинах.
Например, если вы подключаете GPS-модуль своего Arduino, вы можете просто подключить TX-линию этого модуля к линии RX Arduino. Но этот вывод Arduino RX уже подключен к контакту TX преобразователя USB-to-serial, который используется всякий раз, когда вы программируете Arduino или используете Serial Monitor. Это порождает возможность возникновения ситуации, когда и модуль GPS, и чип FTDI попытаются передать данные на одной и той же шине одновременно.
Два передатчика пытаются отправить данные в одну и ту же шину. Ситуация конкуренции на шине
В общем, нужно придерживаться правила — одна последовательная шина, два последовательных устройства!
Статься переведена с английского. Источник https://learn.sparkfun.com/tutorials/serial-communication
Основные сведения о протоколе UART
Как и в большинстве цифровых систем, «высокий» уровень напряжения используется для обозначения логической «1», а «низкий» уровень напряжения используется для обозначения логического «0». Поскольку в протоколе UART не определены конкретные напряжения или диапазоны напряжений для этих уровней, иногда высокий уровень также называют «Mark» (отметка), а низкий — «Space» (пробел). Обратите внимание, что в состоянии ожидания (когда данные не передаются) в линии поддерживается высокий уровень. Это позволяет легко обнаружить поврежденную линию или передатчик.
Стартовые и стоповые биты
Поскольку UART является асинхронным протоколом, передатчик должен сигнализировать о поступлении битов данных. Это делается с помощью стартового бита. Стартовый бит — это переход из состояния ожидания высокого уровня в состояние низкого уровня, за которым сразу же следуют пользовательские биты данных.
После того, как биты данных закончились, стоповый бит указывает на окончание пользовательских данных. Стоповый бит — это либо переход обратно в состояние высокого уровня или состояние ожидания, либо сохранение этого состояния в течение дополнительного битового интервала. Второй (необязательный) стоповый бит может быть настроен, как правило, на то, чтобы дать приемнику время подготовиться к следующему кадру, но на практике это используется редко.
Биты данных
Биты данных являются пользовательскими данными или «полезными» битами и идут сразу после стартового бита. Может быть от 5 до 9 битов пользовательских данных, хотя чаще всего используется 7 или 8 битов. Эти биты данных обычно передаются в формате с первым младшим значащим битом.
Пример:
Если мы хотим передать заглавную букву «S» в 7-битном коде ASCII, битовая последовательность будет выглядеть как 1 0 1 0 0 1 1. Сначала мы меняем порядок битов, чтобы организовать перед передачей формат с первым младшим значащим битом, то есть 1 1 0 0 1 0 1. После передачи последнего бита данных для завершения кадра используется стоповый бит, и линия возвращается в состояние ожидания.
- 7-битный код ASCII ‘S’ (0x52) = 1 0 1 0 0 1 1
- Порядок LSB = 1 1 0 0 1 0 1
UART или последовательные интерфейсы
За последние 50 лет было придумано множество разновидностей последовательных интерфейсов: SPI, I2C, I2S, RS-232, USB, Firewire, — мы поговорим о том, что такое UART в целом.
Но для начала надо разобраться в чем разница между последовательными и параллельными интерфейсами. Слово “последовательный” означает, что данные передаются по одному проводу последовательно, бит за битом. А “параллельный” означает, что между устройствами есть шина из нескольких проводов, по которым части сообщения передаются одновременно.
SyamilAshri at English Wikibooks [GFDL (http://www. gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], from Wikimedia Commons
Преимущества параллельной передачи данных в том, что за один шаг передаётся сразу группа битов. К тому внутри процессора используются параллельная передача, поэтому данные сразу, можно сказать, передаются и принимаются в удобной форме. Но есть и недостатки. Главный заключается в том, что биты по проводам могут приходить не одновременно и требуются дополнительные ухищрения для получения неискаженных сообщений. Это сильно ограничивает максимальную скорость передачи. (прим. Тут ничего удивительного. В силу физических причин биты по разных проводам не могут приходить со 100% одновременностью.)
При последовательном способе передачи передаваемые биты должны быть преобразованы в параллельную форму и наоборот (в силу того, что внутри процессора быит передаются параллельно). Это преобразование требует времени. Но зато мы получаем огромное преимущество в виде отсутствия необходимости синхронизировать поступление битов по каждому проводу, что также расширяется скоростные возможности линии передачи.
UART
Universal Asynchronous Receiver/Transmitter или просто UART используется с ранних 1960-х и с тех пор претерпевал постоянные изменения. Несмотря на то, что постоянно производятся попытки уничтожить UART, последовательные протоколы этого типа всё ещё представляют важный способ общения между устройствами встраиваемых систем.
UART представляет собой периферийное устройство в процессоре, с помощью которого осуществляется общение между устройствами по последовательному протоколу на небольшие расстояния. Кстати, UART является основой стандарта RS-232 (тот самый D-образный разъем с 9-ю пинами). В языке “С” вывод printf часто может передаваться напрямую через UART. Вообще порты работающие по UART чаще всего называются просто последовательными портами. В самой простой форме UART представляет собой три провода: земля, передача, приём.
Первая проблема UART в том, что нет возможности определить какое устройство ведущее, а какое ведомое (master/slave), так что непонятно к чему цеплять transmit? Обычно, это определяют за нас. Например, кто-то, кто проектирует печатную плату может назвать этот провод как TX и определить, что устройство должно соединяться так, тогда система будет выглядеть следующим образом:
В итоге получается вариант, когда процессор и принимает, и передаёт данные. Другой способ конфигурации выглядит вот так:
Тогда получается вариант, где процессор всегда передаёт (TX) получателю (RX) и наоборот. Какой вариант правильный? Оказывается это решение принимает за нас производитель чипа и готовой платы/устройства. Я видел множество примеров использования обоих вариантов настолько часто, что без прочтения даташита невозможно было определить как именно следует производить конфигурацию устройств. Если бы я имел контроль над наименованием, то закрепил второй вариант, когда TX соединено с RX. На практике чаще всего TX, подсоединённый к TX, приводит к сгоранию чипов (тоже верно и для RX-RX), так что это хороший пример того, что надо читать документацию перед тем как соединять чипы по UART, так как существует несколько способов соединения.
Когда отправитель и получатель располагаются на одной плате, тогда уровень напряжения сигнала при передаче соответствует уровню напряжения питания процессора. К примеру, “1” будет передаваться с напряжением 3.3В, а “0”, грубо говоря, с 0В. Это неочень полезно тогда, когда требуется передать сигнал более, чем на несколько дюймов (1 дюйм = 2.54 см), так как начинают появляться искажения сигнала и увеличивается падение напряжения. В итоге, чем дальше расстояние, тем количество ошибок передачи растет и в итоге становится невозможно передать сообщение, так как оно поступает до невозможности искаженным.
Для того, чтобы избежать подобной ситуации добавляют дополнительные чипы-буферы, усиливающие сигналы. После этого сигналы могут передаваться уже на метры без существенной потери информации. Однако, напряжения при передаче битов довольно странные: для передачи 1 используются -3В..-15В, а для передачи 0 — от +3В до +15В. Это те самые напряжения, которые используются в RS-232. Кстати, буферы в RS-232 также являются ограничителями тока, так что контакты разъёма можно замыкать между собой и он не выгорит.
Начало и конец передачи данных
By Rs232_oscilloscope_trace.jpg: Ktnbn derivative work: Samuel Tardieu (Rs232_oscilloscope_trace.jpg) [CC SA 1.0 (http://creativecommons.org/licenses/sa/1.0/)], via Wikimedia Common
UART — это последовательный интерфейс (он посылает и принимает биты последовательно: бит за битом), но при этом он не передаёт информацию для синхронизации. Отправитель и получатель не синхронизированы. Таким образом взаимодействие отправителя и получателя является асинхронным. Вместо информации о синхронизации в UART используется “стартовый бит” для сигнализации о том, что мы собираемся передать сообщение. После передачи стартового бита передаётся сообщение, а затем передаётся “стоп-бит”, указывающий о завершении процесса передачи сообщения. Суммарно получается 10 бит: 1 старт-бит, 8 бит данных, 1 стоп-бит.
Биты передаются с заранее установленной скоростью передачи, которая измеряется в битах в секунду или, иначе, в бодах. Так что 9600 бод эквивалентно 9600 бит/сек. А так как у нас передаётся 10 бит за одно сообщение (старт-бит, данные, стоп-бит), это это значит, что мы можем передать 960 сообщений в секунду.
Так как значение скорости передачи не передаётся вместе с сообщением, то и приёмник и получатель должны заранее установить одинаковое значение скорости передачи/приёма. Конечно, скорости на обеих системах не будут совпадать со 100% точностью (опять же в силу чисто технических причин, так как таймеры на разных системах имеют погрешности), но UART допускает до 5% рассинхронизации таймеров. В этих пределах мы будем получать и принимать верные сообщения.
USARTS
USART — это модификация UART. Расшифровывается как Universal Synchronous/Asynchronous Receiver/Transmitter. При этом добавляется дополнительных три провода: CLOCK, CLEAR TO SEND (CTS), READY TO SEND (RTS).
С помощью такой добавки устраняется необходимость иметь на обоих устройствах точные часы (с рассинхроном не более 5%), а также необходимость и приемнику, и передатчику устанавливать одну и ту же скорость передачи данных. В USART сигнал от CLOCK используется для синхронизации двух устройств. Передающая сторона выдаёт прямоугольные импульсы с частотой, соответствующей скорости передачи данных. А принимающая использует эти импульсы, чтобы правильно принять данные.
Clock-сигнал был довольно обычен несколько десятков лет назад, когда связь осуществлялась с помощью модемов. Этого сигнала, кстати, не было в 9-пиновом разъёме RS-232, которые появились на IBM PC в 1984г.
USART также поддерживает ещё два контрольных сигнала: CTS, RTS. Они используются для контроля передачи данных. Например, у получателя может заполниться буфер, в который поступали данные, тогда он выставляет RTS, сообщая, что надо приостановить передачу и подождать пока появится место в буфере.
RTS и CTS соединяются крест-накрест: RTS-CTS, CTS-RTS (показано на схеме выше). Таким образом, производится как бы “обмен рукопожатиями”: когда включен RTS получателя, выключается CTS отправителя и наоборот.
Следует использовать USART вместо UART, так как это позволяет проводить обмен рукопожатиями и синхронизировать передачу. В коде это будет означать постоянную проверку CTS значений, либо генерацию прерывания CTS-пином.
Кстати, для обратной совместимости USART может быть использован как простой UART с использованием только трёх проводников: RX, TX, Земля.
Где используются UART и USART?
Оба протокола используются в GPS модулях, flash-загрузчик в процессорах ATMEL, старой компьютерной периферии, а также в разнообразном промышленном оборудовании. В общем он все еще очень широко использхуется для обмена информацией между устройствами.
GPS модули поддерживают стандарт NMEA 0183, в котором определена поддержка модулями UART. Конечно, на подходе новый стандарт NMEA 2000, в котором будет использоваться протокол CAN, но пока ещё превалирует использование UART.
Несмотря на то, что ещё можно найти компьютеры с портами RS-232, эти порты уже не найти на ноутбуках и других малогабаритных устройствах. Для обмена информацией с промышленным оборудованием и, к примеру, процессорами ATMEL и устройствами на их основе, как например популярная ARDUINO, часто используются чипы для преобразования последовательного протокола в USB. Благодаря этому UART еще будет жив какое-то время.
Это перевод. Автор оригинальной статьи — Andrei Chichak. Кстати, у них очень интересный блог. Рекомендую.
4a4ik: Как работать с UART
UART – Universal Asynchronous Receiver-Transmitter,УАПП – Универсальный асинхронный приёмопередатчик.
Здесь стречается несколько обозначений, это интерфейс/микросхема/протокол, но в любом случае его основная задача – связать между собой 2 или более устройства, он может быть представлен в виде отдельной микросхемы, быть частью более сложного цифрового устройства (микроконтроллер), либо реализован программно.
Подавать данные в UART можно в различном виде (параллельно, последовательно, различной разрядности), но выдаёт он их в виде в котором их поймёт UART приёмопередатчик на другом конце.
UART передаёт данные последовательно бит за битом, которые посылаются через равные промежутки времени.
Есть сихронный вариант : USART, в нём скорость передачи зависит от синхроимпульсов.
Скорость передачи данных по UART измеряется в бодах (в данном случае биты в секунду) другое название битрейт. Есть общепринятый стандарт скоростей, чаще всего используют 9600 бод. Длительность 1 бита : 1/9600 = 104 мкс.При отсутствии передачи данных, линия передачи выставляется в лог.1, это пассивное состояние (IDLE). Если начинается передача данных сперва поссылается СТАРТ бит (St), на котором лог.0. После него следует от 5 до 9 битов данных.
При желании можно добавить бит паритета (контроля чётности) [P], он может проверять на чётное или не чётное количество единичек в послании (в зависимости от реализации). К примеру если мы проверяем на НЕ чётное число единиц, то в [P] будет передана лог.1 если в нашем сообщении есть 1, 3, 5, 7 или 9 единиц.
В конце идут 1 или 2 СТОП бита (Sp1) [Sp2], (в зависимости от реализации) которые выдают на выход высокий уровень.
После них можно сразу начать передачу другого сообщения.
Рис.1 Передача данных UART |
Передача данных может быть только в 1 сторону, это обозначается сленговым словом симплекс (simplex), в 2 стороны поочерёдно – полудуплекс (half duplex) и в обе стороны одновременно – дуплекс (full duplex).
На физическом уровне определяется диапазон напряжений логических уровней для передачи, передающая частота, максимальная длина кабеля, тип используемого провода и т. д.
RS-232
Самый популярный стандарт это RS-232 (Recommended Standard 232).Логический 0 от +3 В до +15 В.
Логическая 1 от -3 В до -15 В.
К сожалению нет точной характеристики на определение расстояния на который можно передавать данные по данному типу кабеля при заданной скорости.
На “средних скоростях” и с “обычным куском проводов” данные можно передать на ≈ 15 м.
При скорости 115200 бод на 1,5 м.
Изначально для этого стандарта использовались коннекторы с 25 выводами типа D-sub, половину контактов не использовали и перешли на 9 выводов, которые использовали на персональных компьютерах в вместе с интерфейсом под названием COM-порт или Последовательный порт.
Затем опустились до 5 и наконец 3 выводов:
приём (RxD – Received Data),
передача (TxD – Transmitted Data),
земля.
Довольно популярны микросхемы преобразователи USB – RS232, к примеру FT232R.
Они превращают USB порт в “виртуальный” COM-порт. с COM портом проще работать чем с USB, для него легче написать программу и на большинстве цифровых устройств на борту есть UART интерфейс работающий по RS-232 стандарту.
Подробная таблица характеристик нескольких стандартов
RS-485
Есть несколько других стандартов, но на втором месте по популярности стоит RS-485, который используется в промышленности.
Здесь возможна передача данных на 1 км с хорошей помехозащищённостью. В качестве провода применяется витая пара, кабель для интернета распространённый представитель витой пары.
Рис.2 Витая пара |
Есть 2 провода A и Б.
Логический 0 – отрицательное напряжение (А-Б
Логическая 1 – Положительное напряжение (А-Б > +200 мВ)
На этом всё, следует добавить что в микроконтроллере используются стандартные уровни напряжений для лог.0 и лог.1.
Источники:
Контроллер UART или контроллер RS232? Является ли UART общим словом?
Библиография :
Сериал -это обобщающее слово для всего, что является “мультиплексированным с временным разделением”, если использовать дорогостоящий термин. Это означает, что данные передаются с течением времени, чаще всего один бит за другим. Все протоколы, которые вы называете, являются последовательными протоколами.
UART , для универсального асинхронного приемника-передатчика, является одним из наиболее часто используемых последовательных протоколов. Он почти такой же старый, как и я, и очень простой. Большинство контроллеров имеют аппаратное обеспечение UART на борту. Он использует одну линию передачи данных для передачи и одну для приема данных. Чаще всего 8-битные данные передаются следующим образом: 1 начальный бит, низкий уровень, 8 бит данных, 1 стоп-бит, высокий уровень. Стартовый бит низкого уровня и стоп-бит высокого уровня означают, что для начала связи всегда существует переход от высокого уровня к низкому. Вот что описывает UART. Нет уровня напряжения, поэтому вы можете иметь его на уровне 3.3 В или 5 В, в зависимости от того, что использует ваш microcontroller. Обратите внимание, что микроконтроллеры, которые хотят общаться через UART, должны согласовать скорость передачи, скорость передачи битов, поскольку для синхронизации у них есть только нижний край начального бита. Это называется асинхронной связью.
Для связи на большие расстояния (а это не обязательно сотни метров) UART 5 В не очень надежен, поэтому он преобразуется в более высокое напряжение, обычно +12 В для a “0” и -12 В для a “1”. Формат данных остается прежним. Тогда у вас есть RS-232 (который вы на самом деле должны назвать EIA-232, но никто этого не делает.)
Важно : RS-232 против Последовательная связь TTL – SparkFun Электроника http://goo.gl/0IFYTl
Зависимость от времени является одним из больших недостатков UART, и решением является USART для универсального синхронного/асинхронного приемника-передатчика. Это может сделать UART, но также и синхронный протокол. В синхронном режиме передаются не только данные, но и часы. С каждым битом тактовый импульс сообщает приемнику, что он должен зафиксировать этот бит. Синхронным протоколам требуется либо более высокая пропускная способность, как в случае манчестерского кодирования, либо дополнительный провод для часов, как SPI и I2C.
Последовательное программирование/Типичная конфигурация оборудования RS232 – Wikibooks, открытые книги для открытого мира http://goo.gl/uTknU6
RS232 +-----------+ +-----------+ +-----------+ +-----------+
Interface | Line | | | | Interface | | |
-----------+ Driver / +---+ UART +---+ Logic +---+ CPU |
| Receiver | | | | | | |
+-----------+ +-----+-----+ +-----+-----+ +-----------+
| |
| |
+-----+-----+ |
| Baud Rate | |
| Generator +---------+
| |
+-----------+
UART (универсальный асинхронный приемник-передатчик) является сердцем последовательного оборудования. Это чип или часть чипа, предназначенная для преобразования между параллельными данными и последовательными данными. RS-232 UARTs также обычно добавляют необходимые биты запуска/остановки и четности при передаче и декодируют эту информацию при приеме.
UART обычно работает полностью на напряжении компьютерной логики. Его последовательное напряжение ввода/вывода данных-это напряжение компьютерной логики, а не напряжение последовательной линии. Они оставляют фактический линейный интерфейс конкретному линейному драйверу / приемнику. Этот линейный драйвер / приемник не обязательно должен быть линейным драйвером / приемником RS-232, но может, например также быть дифференциальным драйвером / приемником RS-422. Это, а также тот факт, что скорость передачи данных, четность, количество стоп-битов, количество битов данных программируются, является причиной того, что UARTs называются универсальными. Различие между UART и линейным драйвером / приемником стирается, если они оба помещены в один и тот же чип. Такие чипы, как правило, также продаются под маркой ‘UART’.
UARTs называются асинхронными, потому что они не используют специальный тактовый сигнал для синхронизации с удаленной стороной. Вместо этого они используют стартовые/стоп-биты для идентификации битов данных в последовательном потоке.
Благодаря UART rest аппаратного, а также программного обеспечения приложение может работать с обычными байтами для хранения данных связи. Задача UART состоит в том, чтобы разбить байт на серию последовательных битов при отправке и собрать серию битов в байт при получении. UARTs обычно содержат буферы приемника и передачи шириной в восемь бит. Из которых не все биты могут быть использованы, если, например, используется 7-битная передача. Принятые последовательные данные подаются параллельно в буфер приемника, данные to-be-send записываются параллельно в буфер передачи. В зависимости от UART буферы могут иметь глубину всего в один байт или несколько байт (в диапазоне 15 или 16 байт). Чем менее глубоки буферы, тем более точной должна быть связь с CPU. E.g. если буфер приемника имеет глубину всего в один байт, и данные извлекаются недостаточно быстро, следующие полученные данные могут перезаписать ранее полученные данные в буфере, и ранее полученные данные будут потеряны.
Из-за того, что синхронизация на последовательном интерфейсе важна, UARTs обычно подключаются к генератору скорости передачи данных, либо внутреннему в микросхеме UART, либо внешнему.
SPI (Последовательный периферийный интерфейс) – это еще один очень простой последовательный протокол. Ведущий посылает тактовый сигнал, и при каждом тактовом импульсе он смещается на один бит в сторону ведомого и на один бит в сторону ведомого. Таким образом, имена сигналов SCK для часов, MOSI для ведущего выхода ведомого входа и MISO для ведущего выхода ведомого выхода. Используя сигналы SS (Slave Select), ведущий может управлять более чем 1 ведомым устройством на шине. Существует два способа подключения нескольких подчиненных устройств к одному ведущему, один из которых упоминается выше, т. е. используя slave select, а другой-последовательную цепочку, он использует меньше аппаратных выводов(линий выбора), но программное обеспечение усложняется.
I2C (Межинтегрированная схема, произносится как “I squared C”) также является синхронным протоколом, и это первый, который мы видим, в котором есть некоторые “intelligence”; другие тупо сдвигали биты внутрь и наружу, и это было все. I2C использует только 2 провода, один для часов (SCL) и один для данных (SDA). Это означает, что ведущий и ведомый отправляют данные по одному и тому же проводу, снова управляемому ведущим, который создает тактовый сигнал. I2C не использует отдельные ведомые селекторы для выбора конкретного устройства, но имеет адресацию. Первый байт, отправленный ведущим устройством, содержит 7-битный адрес (так что вы можете использовать 127 устройств на шине) и бит чтения/записи, указывающий, будет ли следующий байт(ы) также поступать от ведущего устройства или должен поступать от ведомого устройства. После каждого байта приемник должен отправить “0” для подтверждения приема байта, который мастер фиксирует 9-м тактовым импульсом. Если мастер хочет записать байт, тот же процесс повторяется: мастер помещает бит за битом на шину и каждый раз дает тактовый импульс, сигнализирующий о том, что данные готовы к чтению. Если мастер хочет получать данные, он генерирует только тактовые импульсы. Ведомый должен позаботиться о том, чтобы следующий бит был готов, когда будет дан тактовый импульс. Этот протокол запатентован NXP(ранее Phillips), чтобы сэкономить стоимость лицензирования, Atmel использует слово TWI(2-проводной интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI.
Два или более сигналов на одном проводе могут вызвать конфликты, и у вас возникнет проблема, если одно устройство отправит “1”, а другое-“0”. Поэтому шина проводная-OR’d: два резистора тянут шину на высокий уровень, а устройства посылают только низкие уровни. Если они хотят отправить высокий уровень, они просто отпускают автобус.
TTL (Транзисторная транзисторная логика) не является протоколом. Это более старая технология для цифровой логики, но это название часто используется для обозначения напряжения питания 5 В, часто неправильно ссылаясь на то, что должно называться UART.
О каждом из них вы можете написать книгу, и, похоже, я уже в пути. Это всего лишь очень краткий обзор, дайте нам знать, если некоторые вещи нуждаются в уточнении.
USART, UART, RS232, USB, SPI, I2C, TTL и т. Д. Что все это и как они связаны друг с другом?
Серийный – это общее слово для всего, что называется «мультиплексирование с временным разделением», чтобы использовать дорогой термин. Это означает, что данные отправляются с течением времени, чаще всего один бит за другим. Все протоколы, которые вы называете, являются последовательными протоколами.
УАППдля универсального асинхронного приемника-передатчика является одним из наиболее часто используемых последовательных протоколов. Это почти так же старо, как и я, и очень просто. Большинство контроллеров имеют аппаратный UART на борту. Он использует одну линию данных для передачи и одну для приема данных. Чаще всего 8-битные данные передаются следующим образом: 1 стартовый бит (низкий уровень), 8 бит данных и 1 стоповый бит (высокий уровень). Стартовый бит низкого уровня и стоп-бит высокого уровня означают, что всегда есть переход с высокого уровня на низкий, чтобы начать связь. Вот что описывает UART. Нет уровня напряжения, так что вы можете иметь его на уровне 3,3 В или 5 В, в зависимости от того, какой микроконтроллер использует. Обратите внимание, что микроконтроллеры, которые хотят обмениваться данными через UART, должны согласовать скорость передачи, скорость передачи в битах, поскольку у них есть только начальные биты, которые имеют край синхронизации для синхронизации. Это называется асинхронной связью.
Для связи на большие расстояния (это не должно быть сотни метров) 5 В UART не очень надежен, поэтому он преобразуется в более высокое напряжение, обычно +12 В для «0» и -12 В для «» 1″ . Формат данных остается прежним. Тогда у вас есть RS-232 (который вы на самом деле должны называть EIA-232, но никто не делает.)
Временная зависимость является одним из больших недостатков UART, а решение – USART для универсального синхронного / асинхронного приемопередатчика. Это может сделать UART, но также синхронный протокол. В синхронном режиме передаются не только данные, но и часы. С каждым битом тактовый импульс сообщает приемнику, что он должен зафиксировать этот бит. Синхронным протоколам либо требуется более высокая пропускная способность, как в случае манчестерского кодирования, либо дополнительный провод для тактовых импульсов, такой как SPI и I2C.
SPI (Serial Peripheral Interface) – еще один очень простой последовательный протокол. Ведущий посылает тактовый сигнал, и при каждом тактовом импульсе он сдвигает один бит на подчиненный и один бит на вход от подчиненного. Поэтому имена сигналов SCK для часов, MOSI для Master Out Slave In и MISO для Master In Slave Out. Используя сигналы SS (Slave Select), ведущий может управлять более чем одним ведомым на шине. Существует два способа подключения нескольких ведомых устройств к одному ведущему устройству, один из которых упоминался выше, т. Е. Использование ведомого выбора, а другой – последовательное соединение, при этом используется меньше аппаратных выводов (линий выбора), но программное обеспечение усложняется.
I2C(Inter-Integrated Circuit, произносится «I в квадрате C») также является синхронным протоколом, и мы впервые видим, что в нем есть некоторый «интеллект»; другие тупо сдвинули биты внутрь и наружу, вот и все. I2C использует только 2 провода, один для часов (SCL) и один для данных (SDA). Это означает, что ведущий и ведомый отправляют данные по одному и тому же проводу, снова контролируемому ведущим, который создает тактовый сигнал. I2C не использует отдельные ведомые устройства для выбора конкретного устройства, но имеет адресацию. Первый байт, отправленный мастером, содержит 7-битный адрес (так что вы можете использовать 127 устройств на шине) и бит чтения / записи, указывающий, будут ли следующие байты также поступать от мастера или должны поступить от раб. После каждого байта получатель должен отправить «0» для подтверждения приема байта, который мастер фиксирует с 9-м тактовым импульсом. Если мастер хочет записать байт, тот же процесс повторяется: мастер помещает бит за битом в шину и каждый раз выдает тактовый импульс, сигнализирующий, что данные готовы для чтения. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI. Если мастер хочет получить данные, он генерирует только тактовые импульсы. Подчиненное устройство должно позаботиться о том, чтобы следующий бит был готов после подачи тактового импульса. Этот протокол запатентован NXP (ранее Phillips), чтобы сэкономить на стоимости лицензирования, Atmel использует слово TWI (двухпроводный интерфейс), которое точно такое же, как I2C, поэтому любое устройство AVR не будет иметь I2C, но будет иметь TWI.
Два или более сигналов на одном и том же проводе могут вызвать конфликты, и у вас возникнет проблема, если одно устройство отправит «1», а другое – «0». Поэтому шина подключена ИЛИ: два резистора поднимают шину на высокий уровень, а устройства посылают только низкие уровни. Если они хотят послать высокий уровень, они просто выпускают автобус.
TTL (Transistor Transistor Logic) не является протоколом. Это более старая технология для цифровой логики, но название часто используется для обозначения напряжения питания 5 В, часто неправильно ссылаясь на то, что следует называть UART.
О каждом из них можно написать книгу, и, похоже, я уже в пути. Это просто очень краткий обзор, дайте нам знать, если некоторые вещи требуют уточнения.
Руководство по интерфейсу для программирования и отладки MCU — Azure Sphere
- Чтение занимает 9 мин
В этой статье
MT3620 предоставляет два специализированных универсальных асинхронных интерфейса (UART) и два управляющих сигнала (сброс и восстановление) для использования во время подготовки и восстановления устройств. Кроме того, доступен интерфейс SWD для отладки Ртаппс, а еще один UART зарезервирован для диагностики Майкрософт.
Программные средства Azure Sphere для компьютера требуют наличия интерфейсной микросхемы “USB — UART”, которая предоставляет эти интерфейсы компьютеру и позволяет программным средствам распознавать их и взаимодействовать с ними. Средства Azure Sphere включают в себя поддержку загрузки приложения через USB с помощью службы UART, а также для восстановления Azure Sphere ОС с помощью восстановления UART. Для предоставления интерфейсов в инструментах ПК требуется использование интерфейсной микросхемы Future Technology Devices International (FTDI) FT4232HQ “UART к USB”. В настоящее время эти инструменты не поддерживают другие микросхемы FTDI или интерфейсные микросхемы от других производителей.
На платах разработки эта интерфейсная микросхема обычно конструктивно совмещается с MT3620. Этот подход описан на этапе разработки MT3620 Reference Board (RDB). Для настраиваемой платы или модуля, использующего MT3620, может быть целесообразно иметь микросхему интерфейса на отдельном ПКБ, так как это оборудование требуется только во время производства или обслуживания, что позволяет экономить затраты на единицы. Этот подход описан в статье Разработка с помощью изолированной архитектуры программирования и отладки.
Общие сведения о портах
MT3620 предоставляет три UART и интерфейс SWD, которые используются для программирования, диагностики Майкрософт и подготовки микросхемы. Четыре интерфейса имеют следующие функции.
Отладка UART — отладочный UART позволяет корпорации Майкрософт выполнять диагностику. Обратите внимание, что этот UART не может использоваться для отладки или диагностики приложений.
В направлении корпорации Майкрософт этот интерфейс предоставляет средства для записи дополнительных диагностических сведений, которые могут быть полезны при отладке определенных проблем. Поэтому рекомендуется включать этот интерфейс для устройств, используемых для разработки программного обеспечения или оборудования, но его можно считать необязательным для устройств, которые достигают производственного этапа.
SWD interface — интерфейс SWD используется при отладке приложений с поддержкой реального времени (Ртаппс), работающих на ядрах M4F; Этот интерфейс является общим для двух ядер M4F.
Если требуется возможность отладки Ртаппс (например, во время разработки устройства), устройство должно поддерживать этот интерфейс. После того как устройство достигнет этапа производства, этот интерфейс можно считать необязательным и опустить.
Служба UART — служба UART обеспечивает основной интерфейс программирования и отладки между MT3620 и главным компьютером.
Этот интерфейс включает все операции CLI Azure Sphere, для которых требуется подключенное устройство, за исключением восстановления (как описано в следующем абзаце). Поскольку служба UART является основным интерфейсом между MT3620 и главным компьютером, этот интерфейс должен быть доступен для устройств, поддерживающих разработку программного обеспечения, а также во время производства розничных устройств. Если этот интерфейс доступен для устройства в поле, он также может использоваться инженерами служб, например для загрузки новых версий программного обеспечения приложения, если устройство не получает облачные обновления, так как оно не подключено к Интернету.
Восстановление UART — порт восстановления предоставляет средства для восстановления устройства до последней версии операционной системы.
Этот интерфейс должен поддерживаться во время производства, поскольку восстановление устройства до последней версии операционной системы является распространенной задачей во время изготовления устройства. Однако после пропродажи устройства клиенту (и его подключения к Интернету) облачные обновления гарантируют, что устройство будет поддерживаться в актуальном состоянии до последней версии операционной системы.
Общие сведения о компонентах
На следующей схеме представлен обзор основных компонентов 4-портового интерфейса FTDI и их соединений с MT3620:
Вы можете использовать микросхему FTDI и электрическую схему как часть той же платы, что и MT3620 (например, если вы создаете макетную плату), или в отдельной интерфейсной плате, которая находится между вашим устройством MT3620 и компьютером.
Назначения портов
Для обеспечения совместимости с инструментами для ПК важно убедиться, что каждый из общедоступных UART и интерфейс SWD, которые будут использоваться в вашем проекте, подключены к портам ФТДИ, как описано в следующей таблице.
Компонент | Функция контакта FT4232HQ (номер контакта) | Функция контакта MT3620 (номер контакта) | ||
---|---|---|---|---|
UART восстановления, связывающий контакт сброса и восстановления | Порт D | DDBUS0 (48) | RECOVERY_RXD (134) | |
DDBUS1 (52) | RECOVERY_TXD (135) | |||
DDBUS2 (53) | RECOVERY_CTS (136) | |||
DDBUS3 (54) | RECOVERY_RTS (137) | |||
DDBUS5 (57) | DEBUG_RTS (96)* | |||
DDBUS6 (58) | SYSRST_N (125) (и при необходимости ПРОБУЖДЕНие (70) через канал ниже) | |||
UART для обслуживания | Порт C | CDBUS0 (38) | SERVICE_RXD (129) | |
CDBUS1 (39) | SERVICE_TXD (127) | |||
CDBUS2 (40) | SERVICE_CTS (130) | |||
CDBUS3 (41) | SERVICE_RTS (128) | |||
SWD и сброс | Порт B | BDBUS0 (26) | SWCLK | Дополнительные сведения см. в разделе Интерфейс SWD (необязательно) |
BDBUS1 (27) | Выход SWDIO | |||
BDBUS2 (28) | Вход SWDIO | |||
BDBUS4 (30) | Направление SWDIO | |||
BDBUS5 (32) | Включение SWD | |||
BDBUS6 (33) | SYSRST_N (125) (и при необходимости ПРОБУЖДЕНие (70) через канал ниже) | |||
UART для отладки | Порт A | ADBUS0 (16) | DEBUG_RXD (94) | |
ADBUS1 (17) | DEBUG_TXD (95) | |||
ADBUS2 (18) | DEBUG_CTS (97) | |||
ADBUS3 (19) | DEBUG_RTS (96)* |
*DEBUG_RTS — один из связывающих контактов MT3620, который, если вытягивается вверх во время сброса микросхемы, переводит микросхему в режим восстановления. В остальное время этот контакт является контактом RTS UART для отладки.
Отвод
На следующих схемах показаны основные компоненты, необходимые для поддержки микросхемы FT4232HQ. Структура эталонной доски MT3620 содержит справочную структуру, включающую эту схематическисть.
Схема 1:
Заметки — схема 1:
- Резисторы 4.7 K в ряде с линией сброса включают в себя, чтобы избежать короткого замыкания в событии, которое пользователь нажимает кнопку Reset (если включается в проект) в то же время, когда строка сброса контролируется программным способом во время восстановления.
- При установке печатной платы убедитесь, что дифференциальная пара, USB_P и USB_N, направлены параллельно друг другу, чтобы получить характерный дифференциальный импеданс 90 Ом.
- Резисторы с сопротивлением 33 Ом, последовательно подключенные (необязательно) к линиям SWD, предназначены для уменьшения помех и должны располагаться рядом с FT4232HQ.
Схема 2:
фтди
Заметки — схема 2:
- SYSRST_N помещается в высокий уровень с резистором 100 КБ. Это означает, что по умолчанию сброс микросхемы не производится.
Следующие два элемента являются необязательными. Если этот параметр существует, то они позволяют кнопке физического сброса и интерфейсу ФТДИ на ПК автоматически выбудить MT3620 при переключении сброса. Это рекомендуется для любой модели, в которой используется режим выключения, при котором кнопка Reset или интерфейс ПК должны продолжать работать в режиме выключения.
- Пара диодов Счоттки подключена в ряде между SYSRST_N и ПРОБУЖДЕНия, а распространенное подключение к диодам — к кнопке Reset и сигналам сброса ФТДИ. Это предотвращает переключение SYSRST_N низкого уровня при низком переключении ПРОБУЖДЕНия.
- ПРОБУЖДЕНие загружается очень высоко с резистором 100 КБ, подключенным к источнику питания 3V3_RTC. Сопротивления на 100 КБ гарантирует, что ПРОБУЖДЕНие будет отключено, когда SYSRST_N переключается. подключение к 3V3_RTC гарантирует, что ПРОБУЖДЕНие будет продолжаться, если источник питания MT3620 отключает режим выключения.
Память EEPROM FTDI
Интерфейсная микросхема FTDI предоставляет набор контактов, которые должны быть подключены к небольшой EEPROM, используемой для хранения данных производителя и серийного номера. После сборки платы эта информация запрограммирована в EEPROM через USB с использованием инструмента программирования, предоставляемого FTDI, как описано ниже в разделе Инструмент программирования FTDI FT_PROG.
С микросхемой FTDI совместимы следующие части EEPROM:
- 93LC46BT-I/OT;
- 93LC56BT-I/OT;
- 93LC66BT-I/OT.
Обратите внимание на использование варианта LC, который совместим с источником питания 3,3 В. Для целей внутренней разработки корпорация Майкрософт всегда использует компонент 93LC56BT-I/OT.
Подключите EEPROM к микросхеме FTDI следующим образом:
Схема EEPROM | Подключение к микросхеме FTDI |
---|---|
Интерфейсы UART
Для подключений по восстановлению, обслуживанию и отладке UART между MT3620 и ФТДИ не требуются специальные цепи. Однако обратите внимание на пересечения TXD и RXD, CTS и RTS. В документации FTDI контакт 0 каждого порта описывается как TXD, а контакт 1 — как RXD. Эти определения относятся к микросхеме FTDI, то есть контакт 0 является выходом, а контакт 1 — входом. Следовательно, необходимо пересечь соединения RXD и TXD с MT3620 (аналогично для CTS и RTS). На следующей схеме показана эта проблема для службы UART; Используйте ту же схему для восстановления и отладки UART:
Интерфейс SWD
Микросхемы FTDI обычно обеспечивают мост между UART и USB. Но в интерфейсе программирования и отладки Azure Sphere используются дополнительные микросхемы на основе счетверенного буфера с тремя состояниями, чтобы компонент FTDI мог работать в качестве высокоскоростного интерфейса SWD.
Ниже показана необходимая цепь и подключение к микросхеме ФТДИ. Обратите внимание, что сигнал SWDIO подключается к контакту 98 MT3620, а SWCLK подключается к контакту 99.
Расположение буфера Tri-State | Соединения FTDI (порт B) |
---|---|
Светодиодный индикатор активности USB (необязательно)
Индикатор активности USB может быть полезен для указания передачи данных через USB-подключение во время нормальной работы. Вы можете реализовать светодиодный индикатор активности USB несколькими способами. Следующая схема является всего лишь примером.
AND в схеме объединяет линии часов и данных, которые соединяют FT4232HQ с EEPROM. Хотя это не очевидно, эти две линии переключаются, когда данные отправляются и принимаются по USB и поэтому могут использоваться для указания активности USB. Тем не менее длительность вывода из шлюза AND слишком короткая, чтобы освещать светодиодный индикатор, поэтому этот сигнал используется для управления моностабильной цепью, которая, в свою очередь, управляет светодиодом.
Время включения моностабильной схемы установлено на 100 мс, так что даже короткие всплески USB-трафика приведут к тому, что светодиодный индикатор загорится.
Для упрощения программирования EEPROM FTDI предоставляет бесплатный программный инструмент FT_PROG. Этот инструмент доступен как приложение графического пользовательского интерфейса Windows, так и как инструмент командной строки. Оба объекта устанавливаются одновременно из одного пакета. Скачайте средство с веб-сайта FTDI и установите его в расположении по умолчанию.
_Программа командной строки ft PROG
Версия FT программы, используемая в командной строке _ , является предпочтительным методом программирования EEPROM, поскольку в качестве параметра принимается имя файла конфигурации, а затем несколько устройств с одной командой.
репозиторий Azure Sphere оборудования на GitHub содержит файл конфигурации EEPROM для использования с программой командной строки. Настоятельно рекомендуется использовать этот файл и программу командной строки в сценариях производства. Файл конфигурации программирует EEPROM со следующими параметрами:
- Включает режим D2XX Direct и отключает виртуальный COM-порт
- Автоматическое создание серийного номера, начиная с “AS”
- Задает описание продукта в “MSFT MT3620 STD Interface”
Чтобы программировать EEPROM, необходимо использовать этот файл без изменений, так как средства Azure Sphere PC ищут строку описания продукта и завершатся ошибкой, если это значение изменено.
Пошаговые рекомендации по программированию памяти EEPROM
Чтобы использовать инструмент командной строки (версия FT_PROG) для программирования EEPROM для четырехпортовой микросхемы FTDI:
Установите средства ФТДИ в расположение по умолчанию:
C:\Program Files(x86)\FTDI\FT_Prog
.Подключение одной или нескольких плат MT3620 на пк.
Откройте командную строку (например, cmd.exe или Командную строку разработчика Azure Sphere) и перейдите в папку, в которой вы сохранили файл конфигурации.
Введите следующую команду, чтобы вывести список всех подключенных устройств:
"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan
Если подключены четыре устройства, выходные данные будут выглядеть примерно так:
Device 0: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 1: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 2: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 3: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36
Введите следующую команду, чтобы запрограммировать все подключенные устройства. Укажите индексы подключенных устройств (0, 1, 2 и т. д.) после
prog
параметров иcycl
:"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan prog 0,1,2,3 MT3620_Standard_Interface.xml cycl 0,1,2,3
Инструмент должен отобразить:
Scanning for devices... Device 0: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 1: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 2: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 3: FT4232H, MSFT MT3620 Std Interface, 984A8DD25A36 Device 0 programmed successfully! Device 1 programmed successfully! Device 2 programmed successfully! Device 3 programmed successfully! Finished Re-enumerating Device 0.... Re-enumerating Device 1.... Re-enumerating Device 2.... Re-enumerating Device 3....
Чтобы проверить успешность программирования, выполните проверку еще раз:
"c:\Program Files (x86)\FTDI\FT_Prog\FT_Prog-CmdLine.exe" scan
Обратите внимание, что серийные номера имеют изменения в выходных данных и теперь начинаются с AS:
Scanning for devices... Device 0: FT4232H, MSFT MT3620 Std Interface, AS5AW7FD Device 1: FT4232H, MSFT MT3620 Std Interface, AS5AHG3C Device 2: FT4232H, MSFT MT3620 Std Interface, AS5DWM2I Device 3: FT4232H, MSFT MT3620 Std Interface, AS5JQ0LJ
_Приложение ft PROG GUI
Версия приложения для графического пользовательского интерфейса Windows удобна для чтения и проверки состояния информации EEPROM. Его также можно использовать для изменения информации. Однако для программирования устройства рекомендуется использовать версию средства командной строки.
После запуска приложения щелкните значок увеличительного стекла (кнопка Scan (Сканировать)), чтобы прочитать и отобразить текущее содержимое EEPROM.
Если появится диалоговое окно “Неизвестное устройство”, как показано в следующем примере, нажмите кнопку ОК, пока окно приложения не отобразит информацию правильно.
В следующем примере показано правильное окно:
Дополнительные сведения об использовании программного обеспечения см. в документации по FT_PROG.
UART: аппаратный протокол связи с универсальным асинхронным приемником / передатчиком
Аннотация
UART, или универсальный асинхронный приемопередатчик, является одним из наиболее часто используемых протоколов связи между устройствами. В этой статье показано, как использовать UART в качестве аппаратного протокола связи, следуя стандартной процедуре.
При правильной настройке UART может работать со многими различными типами последовательных протоколов, которые включают передачу и получение последовательных данных.При последовательной связи данные передаются побитно по одной линии или по проводу. При двусторонней связи мы используем два провода для успешной последовательной передачи данных. В зависимости от приложения и требований к системе для последовательной связи требуется меньше схем и проводов, что снижает стоимость внедрения.
В этой статье мы обсудим фундаментальные принципы использования UART, уделяя особое внимание передаче пакетов, стандартному протоколу кадров и настраиваемым протоколам кадров, которые являются дополнительными функциями для обеспечения соответствия требованиям безопасности при их реализации, особенно во время разработки кода.В процессе разработки продукта этот документ также имеет целью поделиться некоторыми основными шагами при проверке фактического использования по таблице данных.
В конце статьи цель состоит в том, чтобы лучше понять и соответствовать стандартам UART, чтобы максимизировать возможности и применение, особенно при разработке новых продуктов.
«Самая большая проблема в общении – это иллюзия, что это произошло».
— Джордж Бернард Шоу
Протокол связи играет большую роль в организации связи между устройствами.Он разработан по-разному в зависимости от системных требований, и для этих протоколов есть определенные правила, согласованные между устройствами для достижения успешной связи.
Встроенные системы, микроконтроллеры и компьютеры в основном используют UART как форму аппаратного протокола связи между устройствами. Среди доступных протоколов связи UART использует только два провода для передачи и приема.
Несмотря на то, что это широко используемый метод аппаратного протокола связи, он не всегда полностью оптимизируется.При использовании модуля UART внутри микроконтроллера обычно не принимают во внимание надлежащую реализацию протокола кадра.
По определению, UART – это протокол аппаратной связи, который использует асинхронную последовательную связь с настраиваемой скоростью. Асинхронность означает отсутствие тактового сигнала для синхронизации выходных битов от передающего устройства, идущих к принимающей стороне.
Интерфейс
Рисунок 1. Два UART напрямую взаимодействуют друг с другом.Два сигнала каждого устройства UART названы:
- Передатчик (Tx)
- Приемник (Rx)
Основное назначение линии передатчика и приемника для каждого устройства – передавать и принимать последовательные данные, предназначенные для последовательной связи.
Рисунок 2. UART с шиной данных.Передающий UART подключен к управляющей шине данных, которая передает данные в параллельной форме. После этого данные будут передаваться по линии передачи (проводу) последовательно, бит за битом, на принимающий UART. Это, в свою очередь, преобразует последовательные данные в параллельные для принимающего устройства.
Линии UART служат средой связи для передачи и приема одних данных в другие. Обратите внимание, что устройство UART имеет вывод для передачи и приема, предназначенный либо для передачи, либо для приема.
Для UART и большинства последовательных коммуникаций скорость передачи данных должна быть одинаковой как на передающем, так и на принимающем устройстве. Скорость передачи – это скорость, с которой информация передается в канал связи. В контексте последовательного порта установленная скорость передачи данных будет служить максимальным числом передаваемых битов в секунду.
Таблица 1 суммирует то, что мы должны знать о UART.
Провода | 2 |
Скорость | 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600, 1000000, 1500000 |
Способы передачи | Асинхронный |
Максимальное количество мастеров | 1 |
Максимальное количество ведомых устройств | 1 |
Интерфейс UART не использует тактовый сигнал для синхронизации передающих и приемных устройств; он передает данные асинхронно.Вместо тактового сигнала передатчик генерирует поток битов на основе своего тактового сигнала, в то время как приемник использует свой внутренний тактовый сигнал для выборки входящих данных. Для управления точкой синхронизации используется одинаковая скорость передачи данных на обоих устройствах. Невыполнение этого требования может повлиять на время отправки и получения данных, что может вызвать расхождения во время обработки данных. Допустимая разница в скорости передачи составляет до 10%, прежде чем синхронизация битов станет слишком большой.
Передача данных
В UART режим передачи – пакет.Часть, которая соединяет передатчик и приемник, включает создание последовательных пакетов и управление этими физическими аппаратными линиями. Пакет состоит из стартового бита, кадра данных, бита четности и стоповых битов.
Рисунок 3. Пакет UART.Стартовый бит
Линия передачи данных UART обычно находится под высоким уровнем напряжения, когда она не передает данные. Чтобы начать передачу данных, передающий UART переводит линию передачи с высокого на низкий в течение одного (1) тактового цикла.Когда принимающий UART обнаруживает переход от высокого напряжения к низкому, он начинает считывать биты в кадре данных с частотой, равной скорости передачи данных.
Рисунок 4. Стартовый бит.Кадр данных
Фрейм данных содержит фактические передаваемые данные. Это может быть от пяти (5) битов до восьми (8) битов, если используется бит четности. Если бит четности не используется, длина кадра данных может составлять девять (9) бит. В большинстве случаев данные отправляются первым с младшим значащим битом.
Рисунок 5.Фрейм данных.Четность
Четность описывает четность или нечетность числа. Бит четности – это способ для принимающего UART узнать, изменились ли какие-либо данные во время передачи. Биты могут быть изменены электромагнитным излучением, несоответствием скорости передачи данных или передачей данных на большие расстояния.
После того, как принимающий UART считывает фрейм данных, он подсчитывает количество битов со значением 1 и проверяет, является ли сумма четным или нечетным числом. Если бит четности равен 0 (четность), то 1 или бит высокого логического уровня в кадре данных должен составлять четное число.Если бит четности равен 1 (нечетная четность), то в сумме 1 бит или логические максимумы в кадре данных должны составлять нечетное число.
Когда бит четности совпадает с данными, UART знает, что передача была без ошибок. Но если бит четности равен 0, а общее количество нечетное, или бит четности равен 1, а общее количество четное, UART знает, что биты в кадре данных изменились.
Рисунок 6. Биты четности.Стоп-биты
Чтобы сигнализировать об окончании пакета данных, отправляющий UART переводит линию передачи данных с низкого напряжения на высокое в течение от одного (1) до двух (2) битов.
Рисунок 7. Стоповые биты.Шаги передачи UART
Первый: передающий UART получает данные параллельно от шины данных.
Рисунок 8. Шина данных к передающему UART.Секунда: передающий UART добавляет стартовый бит, бит четности и стоповый бит (ы) к кадру данных.
Рисунок 9. Кадр данных UART на стороне Tx.Третий: весь пакет отправляется последовательно, начиная от стартового бита до стопового бита, от передающего UART к принимающему UART.Принимающий UART производит выборку линии данных с предварительно настроенной скоростью передачи данных.
Рисунок 10. Передача UART.Четвертый: принимающий UART отбрасывает стартовый бит, бит четности и стоповый бит из кадра данных.
Рисунок 11. Кадр данных UART на стороне Rx.Пятый: принимающий UART преобразует последовательные данные обратно в параллельные и передает их на шину данных на принимающей стороне.
Рисунок 12. Прием UART на шину данных.Протокол кадра
Одна ключевая функция, которая доступна в UART, но не используется полностью, – это реализация протокола кадров.Основное использование и важность этого – дополнительная ценность для безопасности и защиты на каждом устройстве.
Например, когда два устройства используют один и тот же протокол кадра UART, существует тенденция к тому, что при подключении к одному и тому же UART без проверки конфигурации устройство будет подключаться к разным контактам, что может вызвать сбои в системе.
С другой стороны, реализация этого обеспечивает безопасность из-за необходимости синтаксического анализа полученной информации в соответствии с протоколом проектного кадра.Каждый фрейм-протокол специально разработан, чтобы быть уникальным и безопасным.
При разработке протокола кадра разработчики могут установить желаемые заголовки и трейлеры, включая CRC, для различных устройств. На рисунке 13 два (2) байта заданы как часть заголовка.
Секунда: под картой памяти проверьте адрес UART.
Рисунок 13. Пример протокола кадра UART.На основе образца вы можете установить заголовок, трейлер и CRC, которые уникальны для вашего устройства.
Заголовок 1 (h2 – 0xAB) и Заголовок 2 (h3 – 0xCD)
Заголовок – это уникальный идентификатор, который определяет, с каким устройством вы обмениваетесь.
Выбор команды (CMD)
Команда будет зависеть от списка команд, предназначенных для установления связи между двумя устройствами.
Длина данных (DL) на команду
Длина данных будет зависеть от выбранной команды. Вы можете максимизировать длину данных в зависимости от выбранной команды, поэтому она может варьироваться в зависимости от выбора. В этом случае длину данных можно отрегулировать.
Данные n (различные данные)
Данные – это полезная нагрузка, передаваемая с устройств.
Трейлер 1 (T1 – 0xE1) и трейлер 2 (T2 – 0xE2)
Прицепы – это данные, которые добавляются после завершения передачи. Как и заголовок, их можно однозначно идентифицировать.
Циклический контроль избыточности (формула CRC)
Формула циклической проверки избыточности – это добавленный режим обнаружения ошибок для обнаружения случайных изменений необработанных данных. Значение CRC передающего устройства всегда должно быть равно вычислению CRC на стороне получателя.
Рекомендуется добавить безопасность, реализовав протоколы кадров для каждого устройства UART.Протокол кадра требует одинаковых конфигураций как на передающем, так и на принимающем устройствах.
Операции UART
При использовании любого протокола связи с оборудованием необходимо ознакомиться с техническими данными и справочным руководством по оборудованию.
Вот шаги, которые необходимо выполнить:
Во-первых: проверьте интерфейс таблицы данных устройства.
Рисунок 14. Технические данные микроконтроллера. Рисунок 15. Карта памяти микроконтроллера.Третий: проверьте конкретные детали для ПОРТА UART, такие как режим работы, длина битов данных, бит четности и стоповые биты.Пример сведений о порте UART в техническом описании: Порт UART
Образцы микроконтроллеров имеют полнодуплексный порт UART, который полностью совместим со стандартными UART ПК. Порт UART обеспечивает упрощенный интерфейс UART для других периферийных устройств или хостов, поддерживая полнодуплексный режим, прямой доступ к памяти и асинхронную передачу последовательных данных. Порт UART поддерживает от пяти до восьми бит данных, а также отсутствие, четность или нечетность. Фрейм завершается полутора или двумя стоповыми битами.
Четвертый: проверьте детали работы UART, включая вычисление скорости передачи.Скорость передачи конфигурируется с использованием следующей примерной формулы. Эта формула варьируется в зависимости от микроконтроллера.
Пример подробностей операций UART:
- 5-8 бит данных
- 1, 2 или 1 и ½ стоповых битов
- Нет, четная или нечетная четность
- Программируемая частота передискретизации на 4, 8, 16, 32
- Скорость передачи = PCLK / ((M + N / 2048) × 2 OSR + 2 × DIV
где,
OSR (частота передискретизации)
UART_LCR2.OSR = от 0 до 3
DIV (делитель скорости передачи)
UART_DIV = от 1 до 65 535
M (дробная скорость передачи DIVM M)
UART_FBR.DIVM = от 1 до 3
N (дробная скорость передачи DIVM M)
UART_FBR.DIVN = от 0 до 2047
Пятое: Для скорости передачи обязательно проверьте, какие периферийные часы (PCLK) использовать. В этом примере доступны PCLK 26 МГц и PCLK 16 МГц. Обратите внимание, что OSR, DIV, DIVM и DIVN зависят от устройства.
Скорость передачи | OSR | РАЗД. | DIVM | ДИВН |
9600 | 3 | 24 | 3 | 1078 |
115200 | 3 | 4 | 1 | 1563 |
Скорость передачи | OSR | РАЗД. | DIVM | ДИВН |
9600 | 3 | 17 | 3 | 1078 |
115200 | 3 | 2 | 2 | 348 |
Шестое: Следующая часть – проверить подробные регистры для конфигурации UART.Взгляните на параметры при вычислении скорости передачи данных, такие как UART_LCR2, UART_DIV и UART_FBR. Таблица 4 приведет к конкретному регистру для покрытия.
Имя | Описание |
UART_DIV | Делитель скорости передачи |
UART_FIBR | Дробная скорость передачи |
UART_LCR2 | Управление второй линией |
Седьмое: в каждом регистре проверьте детали и подставьте значения для вычисления скорости передачи, затем начните реализацию UART.
Почему это важно?
Знакомство с протоколом связи UART полезно при разработке надежных, ориентированных на качество продуктов. Знание того, как отправлять данные с использованием только двух проводов, а также как транспортировать весь пакет данных или полезную нагрузку, поможет гарантировать, что данные передаются и принимаются без ошибок. Поскольку UART является наиболее часто используемым протоколом связи оборудования, эти знания могут обеспечить гибкость проектирования в будущих проектах.
Сценарии использования
Вы можете использовать UART для многих приложений, например:
- Отладка: Раннее обнаружение системных ошибок важно во время разработки.Добавление UART может помочь в этом сценарии, перехватив сообщения из системы.
- Трассировка на уровне производственных функций: журналы очень важны в производстве. Они определяют функциональные возможности, предупреждая операторов о том, что происходит на производственной линии.
- Обновления клиентов или клиентов: обновления программного обеспечения очень важны. Полноценное динамическое оборудование с программным обеспечением с возможностью обновления важно для полноценной системы.
- Тестирование / проверка: проверка продуктов до того, как они покинут производственный процесс, помогает поставлять клиентам продукцию самого высокого качества.
использованная литература
«Основы связи UART». Electronics Hub, июль 2017 г.
Кэмпбелл, Скотт. «Основы связи UART». Основы схемотехники. Кейм, Роберт.
«Назад к основам: универсальный асинхронный приемник / передатчик». All About Circuits , декабрь 2016 г.
«Что такое протокол UART? Объяснение связи UART ». Стрелка.
Основы связи UART
Помните, когда у принтеров, мышей и модемов были толстые кабели с огромными неуклюжими разъемами? Те, которые буквально нужно было прикрутить к вашему компьютеру? Эти устройства, вероятно, использовали UART для связи с вашим компьютером.Хотя USB почти полностью заменил эти старые кабели и разъемы, UART определенно не ушли в прошлое. Вы обнаружите, что UART используются во многих проектах DIY-электроники для подключения модулей GPS, модулей Bluetooth и модулей считывания карт RFID к вашим Raspberry Pi, Arduino или другим микроконтроллерам.
UART – это универсальный асинхронный приемник / передатчик. Это не протокол связи, такой как SPI и I2C, а физическая схема в микроконтроллере или автономная ИС.Основное назначение UART – передача и прием последовательных данных.
Одна из лучших особенностей UART заключается в том, что он использует только два провода для передачи данных между устройствами. Принципы, лежащие в основе UART, легко понять, но если вы не читали первую часть этой серии, Основы протокола связи SPI, это может быть хорошим началом.
Введение в связь UART
При обмене данными по UART два UART напрямую взаимодействуют друг с другом. Передающий UART преобразует параллельные данные от управляющего устройства, такого как CPU, в последовательную форму, последовательно передает их принимающему UART, который затем преобразует последовательные данные обратно в параллельные данные для принимающего устройства.Только два провода необходимы для передачи данных между двумя UART. Данные передаются от вывода Tx передающего UART к выводу Rx принимающего UART:
UART передают данные асинхронно , что означает отсутствие тактового сигнала для синхронизации вывода битов из передающего UART с дискретизацией битов принимающим UART. Вместо тактового сигнала передающий UART добавляет к передаваемому пакету данных стартовые и стоповые биты. Эти биты определяют начало и конец пакета данных, поэтому принимающий UART знает, когда начать чтение битов.
Когда принимающий UART обнаруживает стартовый бит, он начинает считывать входящие биты с определенной частотой, известной как скорость передачи бод. Скорость передачи – это мера скорости передачи данных, выраженная в битах в секунду (бит / с). Оба UART должны работать примерно с одинаковой скоростью передачи данных. Скорость передачи между передающим и принимающим UART может отличаться только примерно на 10%, прежде чем синхронизация битов станет слишком большой.
Оба UART также должны быть настроены для передачи и приема одинаковой структуры пакетов данных.
Как работает UART
UART, который будет передавать данные, получает данные от шины данных. Шина данных используется для отправки данных в UART другим устройством, таким как ЦП, память или микроконтроллер. Данные передаются от шины данных к передающему UART в параллельной форме. После того, как передающий UART получает параллельные данные из шины данных, он добавляет стартовый бит, бит четности и стоповый бит, создавая пакет данных. Затем пакет данных выводится последовательно, бит за битом на выводе Tx.Принимающий UART считывает пакет данных бит за битом на своем выводе Rx. Затем принимающий UART преобразует данные обратно в параллельную форму и удаляет стартовый бит, бит четности и стоповые биты. Наконец, принимающий UART передает пакет данных параллельно шине данных на принимающей стороне:
Переданные данные UART организованы в пакетов . Каждый пакет содержит 1 стартовый бит, от 5 до 9 бит данных (в зависимости от UART), дополнительный бит четности , бит и 1 или 2 стоповых бита:
Стартовый бит
Линия передачи данных UART обычно находится под высоким уровнем напряжения, когда она не передает данные.Чтобы начать передачу данных, передающий UART переводит линию передачи с высокого на низкий на один тактовый цикл. Когда принимающий UART обнаруживает переход от высокого напряжения к низкому, он начинает считывать биты в кадре данных с частотой, равной скорости передачи данных.
Кадр данных
Фрейм данных содержит фактические передаваемые данные. Если используется бит четности, он может иметь длину от 5 до 8 бит. Если бит четности не используется, длина кадра данных может составлять 9 бит. В большинстве случаев данные отправляются первым с младшим значащим битом.
Четность
Четность описывает четность или нечетность числа. Бит четности – это способ для принимающего UART определить, изменились ли какие-либо данные во время передачи. Биты могут быть изменены электромагнитным излучением, несоответствием скорости передачи данных или передачей данных на большие расстояния. После того, как принимающий UART считывает фрейм данных, он подсчитывает количество битов со значением 1 и проверяет, является ли сумма четным или нечетным числом. Если бит четности равен 0 (четность), бит 1 в кадре данных должен составлять четное число.Если бит четности равен 1 (нечетная четность), бит 1 в кадре данных должен составлять нечетное число. Когда бит четности совпадает с данными, UART знает, что передача была без ошибок. Но если бит четности равен 0, а сумма нечетная; или бит четности равен 1, а результат четный, UART знает, что биты в кадре данных изменились.
Стоп-биты
Чтобы сигнализировать об окончании пакета данных, отправляющий UART переводит линию передачи данных с низкого напряжения на высокое в течение как минимум двух битов.
Шаги передачи UART
1. Передающий UART получает данные параллельно от шины данных:
2. Передающий UART добавляет стартовый бит, бит четности и стоповый бит (ы) к кадру данных:
3. Весь пакет последовательно отправляется от передающего UART к принимающему UART. Принимающий UART производит выборку линии данных с предварительно сконфигурированной скоростью передачи данных:
.4. Принимающий UART отбрасывает стартовый бит, бит четности и стоповый бит из кадра данных:
5.Принимающий UART преобразует последовательные данные обратно в параллельные и передает их на шину данных на принимающей стороне:
Преимущества и недостатки UART
Ни один протокол связи не идеален, но UART довольно хорошо справляются со своей задачей. Вот несколько плюсов и минусов, которые помогут вам решить, соответствуют ли они потребностям вашего проекта:
Преимущества
- Использует только два провода
- Нет необходимости в тактовом сигнале
- Имеет бит четности для проверки ошибок
- Структура пакета данных может быть изменена, если обе стороны настроены для этого
- Хорошо документированный и широко используемый метод
Недостатки
- Размер кадра данных ограничен максимум 9 битами
- Не поддерживает несколько ведомых или несколько главных систем.
- Скорости передачи каждого UART должны быть в пределах 10% друг от друга
Перейдите к третьей части этой серии, «Основы протокола связи I2C», чтобы узнать о другом способе связи электронных устройств.Или, если вы еще этого не сделали, ознакомьтесь с первой частью «Основы коммуникационного протокола SPI».
И, как всегда, дайте нам знать в комментариях, если у вас есть вопросы или что-то еще, что можно добавить! Если вам понравилась эта статья и вы хотите, чтобы она была похожа на нее, обязательно подпишитесь – мы отправляем электронное письмо, когда публикуем новые сообщения.
Протокол связи
UART – как это работает?
UART (универсальный приемник асинхронного передатчика ), это наиболее распространенный протокол, используемый для полнодуплексной последовательной связи.Это один чип LSI (крупномасштабная интеграция), предназначенный для асинхронной связи. Это устройство отправляет и получает данные из одной системы в другую.
В этом руководстве вы изучите основы связи UART и работу UART.
Что такое UART?
«UART» – универсальный асинхронный приемник-передатчик. Это периферийное оборудование, которое находится внутри микроконтроллера. Функция UART заключается в преобразовании входящих и исходящих данных в последовательный двоичный поток.8-битные последовательные данные, полученные от периферийного устройства, преобразуются в параллельную форму с помощью преобразования из последовательного в параллельный, а параллельные данные, полученные от ЦП, преобразуются с помощью преобразования из последовательного в параллельный. Эти данные представлены в модулирующей форме и передаются с определенной скоростью передачи.
Почему используется UART?
Протоколы, такие как SPI (последовательный периферийный интерфейс) и USB (универсальная последовательная шина), используются для быстрой связи. Когда высокоскоростная передача данных не требуется, используется UART.Это дешевое устройство связи с одним передатчиком / приемником. Требуется один провод для передачи данных и другой провод для приема.
Интерфейс UART
Его можно связать с ПК (персональным компьютером) с помощью преобразователя RS232-TTL или преобразователя USB-TTL. Общее между RS232 и UART заключается в том, что им обоим не нужны часы для передачи и приема данных. Кадр Uart состоит из 1 стартового бита, 1 или 2 стоповых битов и бита четности для последовательной передачи данных.
Блок-схема
UART состоит из следующих основных компонентов. Они передатчик и приемник. Передатчик состоит из регистра удержания передачи, регистра сдвига передачи и логики управления. Точно так же приемник состоит из регистра удержания приема, регистра сдвига приемника и логики управления. Обычно и передатчик, и приемник снабжены генератором скорости передачи данных.
Блок-схемаUART
Генератор скорости передачи данных генерирует скорость, с которой передатчик и приемник должны отправлять / получать данные.Регистр удержания передачи содержит передаваемый байт данных. Регистр сдвига передачи и регистр сдвига приемника сдвигают биты влево или вправо, пока байт данных не будет отправлен / получен.
В дополнение к этому, предусмотрена логика управления чтением или записью, чтобы указать, когда читать / писать. Генератор скорости передачи данных генерирует скорости в диапазоне от 110 бит / с (бит в секунду) до 230400. В большинстве случаев микроконтроллеры предлагают более высокие скорости передачи, такие как 115200 и 57600, для более быстрой передачи данных.Такие устройства, как GPS и GSM, используют более низкие скорости передачи данных в 4800 и 9600.
Как работает UART?
Чтобы знать, как работает UART, вам необходимо понимать основные функции последовательной связи. Короче говоря, передатчик и приемник используют стартовый бит, стоповый бит и параметры синхронизации для синхронизации друг с другом. Исходные данные находятся в параллельной форме. Например, у нас есть 4-битные данные, чтобы преобразовать их в последовательную форму, нам нужен преобразователь из параллельного в последовательный. Обычно для проектирования преобразователей используются D-триггеры или защелки.
Работа D – Триггер
Триггер Basic D
D-триггер , также известный как триггер данных, сдвигает один бит со стороны входа на сторону выхода тогда и только тогда, когда часы изменяют переход из высокого состояния в низкое или из низкого состояния в высокое состояние . Точно так же, если вы хотите передать четыре бита данных, вам понадобится 4 триггера.
Примечание: Здесь
« D » представляет собой входные данные.
« CLK » указывает тактовые импульсы.
« Q » обозначает выходные данные. Теперь давайте спроектируем преобразователь из параллельного в последовательный и из последовательного в параллельный.
Преобразование параллельно в последовательный
Параллельно-последовательное преобразование
Каскадное соединение – параллельно последовательному
Шаг № 1:
Возьмите 4 шлепанца. Количество триггеров эквивалентно количеству передаваемых битов. Точно так же поставьте мультиплексоры перед каждым триггером, но исключая первый.Установлен мультиплексор для объединения данных и преобразования их в последовательные биты. Он имеет два входа: один параллельный бит данных, а другой – от предыдущего триггера.
Шаг № 2:
Теперь загрузите данные за один раз в D-триггеры. Он извлечет параллельные данные и переместит последний бит последнего триггера (четыре), затем третий бит, второй бит и, наконец, первый бит. Теперь для преобразования параллельных данных в последовательную форму используется преобразователь из последовательного в параллельный.
Последовательное преобразование в параллельное
Последовательное преобразование в параллельное
Каскадное соединение – последовательное преобразование в параллельное
Шаг № 1:
Возьмите 4 шлепанца.Количество триггеров совпадает с количеством передаваемых битов.
Шаг № 2:
Сначала отключите параллельную шину. Не включайте, пока не будут загружены все биты. Сохраните данные на входе первого триггера. Теперь сделайте тактовый сигнал высоким, это сдвинет младший бит на вход второго триггера и выход первого. Точно так же сдвиньте все биты один за другим, сделав тактовый импульс высоким. Преобразователь находится в состоянии удержания до тех пор, пока все биты не будут переданы на выход.
Шаг № 3:
Теперь каждый триггер содержит один бит последовательных данных. Пока все биты передаются на выход триггера, активируйте шину. Это заставит конвертер отправлять все биты за раз.
Формат протокола
UART начинает обмен данными со стартовым битом «0». Стартовый бит инициирует передачу последовательных данных, а стоповый бит завершает транзакцию данных.
Формат протокола
Он также имеет бит четности (четный или нечетный).Бит четности представлен как «0» (четное количество единиц), а бит нечетной четности представлен как «1» (нечетное количество единиц).
Трансмиссия
Передача данных осуществляется по одной линии передачи (TxD). Здесь «0» рассматривается как пробел, а «1» – как состояние отметки.
Кадр передачи
Передатчик отправляет по одному биту за раз. После отправки одного бита отправляется следующий бит. Таким образом, все биты данных отправляются на приемник с заранее определенной скоростью передачи.Передача каждого бита будет иметь определенную задержку. Например, чтобы отправить один байт данных со скоростью 9600 бод, каждый бит отправляется с задержкой 108 мкс. Данные добавляются с битом четности. Итак, для отправки 7 бит данных требуется 10 бит данных.
Примечание : При передаче всегда сначала передается младший бит (младший значащий бит).
Приемная
Во время приема для приема данных используется линия RxD (Receiver).
Кадр приема
Пример интерфейса UART
Этот пример демонстрирует взаимодействие ESP8266 UART с MAX232.Но, прежде чем я перейду к деталям интерфейса, позвольте мне рассказать о контактах драйвера Max232.
Распиновка MAX232
MAX232 IC питается от источника питания 5 В, который включает в себя емкостный генератор напряжения для управления напряжением 232 уровня. Он поставляется с двумя передатчиками, также называемыми драйвером (TIN, TOUT) и приемниками (RIN и ROUT).
Здесь я использовал ESP8266 (32-битный микроконтроллер) со встроенным UART. Связь может осуществляться с ESP8266 с использованием AT-команд через преобразователь уровня RS232 в TTL (MAX232).На рисунке ниже показано подключение ESP8266 к ПК (персональному компьютеру).
ESP8266 интерфейс с UART
На запрос действительных AT-команд через ПК чип Wi-Fi ответит подтверждением. Я не хочу углубляться в ESP8266, и это будет объяснено в следующих руководствах.
Вот шаги для реализации последовательной связи с ПК.
- Подключите передатчик (TX) ESP8266 к приемнику (TX) преобразователя уровня RS232 в TTL (MAX232) и приемника ПК.
- Подключите приемник (RX) ESP8266 к TX ПК и RX преобразователя TTL.
ESP8266 Команды
AT-команда (отправлена с ПК) | ESP8266 Ответ (получен ПК) |
---|---|
AT | OK |
AT + CIPMUX = 1 | OK |
AT + CIPSERVER = 1,23 | OK |
На снимке экрана ниже показан ответ модуля ESP8266.
Команды ESP8266 – программа Docklight
UART против USART
USART – это базовая форма UART. Технически это не одно и то же. Но определение для них обоих одно и то же. Это периферийные устройства микроконтроллера, которые преобразуют параллельные данные в последовательные биты и наоборот.
Основное различие между UART и USART заключается в том, что UART поддерживает только асинхронную связь, тогда как USART поддерживает как синхронную, так и асинхронную связь.Для облегчения понимания, вот сравнение между USART и UART.
UART | USART |
---|---|
Часы генерируются внутри микроконтроллера. | Отправляющее устройство сгенерирует часы. |
Скорость передачи данных низкая. | Скорость передачи данных выше из-за внешних часов. |
Автономный протокол | Поддерживает несколько протоколов, таких как LIN, RS-485, IrDA, смарт-карта и т. Д. |
Перед передачей необходимо знать скорость передачи. | Нет необходимости знать скорость передачи раньше. |
Подходит для низкоскоростной связи | Подходит для высокоскоростной связи. |
Снижение энергопотребления. | Обеспечивает последовательную связь при высоком энергопотреблении |
RS232 и UART
Логические уровни представляют собой уровни рабочего напряжения, которые устройство может выдержать для работы в безопасной зоне.Вот уровни напряжения для RS232 и TTL.
Логика RS232:
Уровни напряжения RS232
Уровень логики | Диапазон напряжения |
---|---|
Высокий логический уровень или выход ВЫКЛ | от -5В до -15В |
Низкий логический уровень или выход ВКЛ. | От + 5В до +15В |
Высокий логический уровень или вход ВЫКЛ. | от -3В до -15В |
Низкий логический уровень или вход ВКЛ. | От +3 В до +15 В |
В большинстве случаев уровни RS232 находятся в диапазоне от -12 В до +12 В.Например, значение ASCII для символа « A » в RS232 составляет 65 и 41 в шестнадцатеричном формате. Таким образом, в 8-битном двоичном формате это 0100 0001. Здесь показано представление логических уровней RS232 для ASCII « A ».
Сигнал RS232 для ASCII Letter A
Логика TTL / CMOS:
UART работает по логике TTL.
Сигнал TTL CMOS для ASCI Letter A
- Первоначально последовательная линия находится в состоянии ожидания, обычно называемом Mark stat e (Logic 1).Теперь передача данных начинается со стартового бита (логический 0).
- Далее, по последовательной линии один за другим отправляются восемь битов данных, причем сначала младший бит (младший значащий бит).
- После завершения всей передачи встречается стоповый бит (логическая 1).
Преимущества
Преимущество UART в том, что он поддерживает полнодуплексную связь по двум проводам. Кроме того, для передачи данных не требуются внешние часы. Он поддерживает проверку ошибок с помощью бита четности, а длину данных можно легко изменить.
Недостатки
Основным недостатком UART является то, что он не поддерживает конфигурацию с несколькими ведомыми или несколькими ведущими устройствами. И размер пакета данных ограничен 9 битами. UART не подходит для тяжелой последовательной связи при высоком энергопотреблении.
Приложения
- Последовательный порт отладки использует драйвер UART для печати данных, поступающих из внешнего мира.
- Мы можем использовать его для отправки и получения команд на встроенные устройства и от них.
- Связь в GPS, модеме GSM / GPRS, микросхемах Wi-Fi и т. Д. Работает с UART.
- Используется в доступе к мэйнфрейму для подключения разных компьютеров.
Последовательная связь – learn.sparkfun.com
Добавлено в избранное Любимый 93УАПП
Последняя часть этой серийной головоломки – найти что-то, что могло бы создать как последовательные пакеты, так и управлять этими физическими аппаратными линиями. Введите 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, но в крайнем случае работает!
← Предыдущая страница
Электромонтажные и аппаратные средства
Что такое UART? – все RF
Универсальный асинхронный прием и передача (UART) – это простой протокол последовательной связи, который позволяет главному устройству обмениваться данными с вспомогательным устройством.Формат данных и скорость передачи для UART настраиваются. UART поддерживает двунаправленную, асинхронную и последовательную передачу данных, что означает, что он отправляет биты данных один за другим, от наименее значимого к наиболее значимому, обрамленные стартовыми и конечными битами, так что точная синхронизация обрабатывается каналом связи. Он имеет две линии данных, одну для передачи (TX), а другую для приема (RX), которые подключены между двумя устройствами. UART также может решать проблемы управления синхронизацией между компьютерами и внешними последовательными устройствами.Поскольку UART представляет собой асинхронную последовательную передачу, у него нет часов. Передача UART преобразует параллельные данные от ведущего устройства (например, CPU) в последовательную форму и последовательно передает на принимающий UART. Затем он преобразует последовательные данные обратно в параллельные данные для принимающего устройства.
Он может работать между устройствами тремя способами: симплекс , полудуплекс и полудуплекс . В симплексном режиме передача данных возможна только в одном направлении.В полудуплексном режиме данные передаются в любом направлении, но не одновременно. В полнодуплексном режиме данные передаются одновременно в обоих направлениях.
Поскольку UART не имеет часов, UART добавляет стартовые и стоповые биты, которые передаются. Это помогает принимающему UART узнать, когда начинать чтение битов, поскольку биты представляют начало и конец пакета данных. Когда принимающий UART обнаруживает стартовый бит, он будет читать биты со скоростью BAUD. Скорость передачи данных UART называется скоростью передачи данных в формате BAUD и по умолчанию установлена на 115200 (скорость передачи данных в формате BAUD основана на скорости передачи символов, но аналогична скорости передачи в битах).Оба UART должны работать примерно с одинаковой скоростью передачи данных. Если разница в скорости передачи данных в формате BAUD составляет более 10%, синхронизация битов может быть отключена, поэтому пользователь должен убедиться, что UART настроены для передачи и приема из одного и того же пакета данных.
Преимущества использования UART
- Простой в использовании, хорошо документированный, поскольку это широко используемый метод с большим количеством ресурсов в Интернете
- Часы не требуются
- Бит четности для проверки ошибок
Недостатки с использованием UART
- Размер кадра данных ограничен только 9 битами
- Невозможно использовать несколько ведущих систем и ведомых устройств
- Скорости передачи каждого UART должны быть в пределах 10% друг от друга, чтобы предотвратить потерю данных.
- Низкая скорость
Что такое 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.
UART против I2C против SPI – протоколы связи и их использование
Когда мы говорим о протоколах связи, UART, SPI и I2C являются общими аппаратными интерфейсами, которые люди используют при разработке микроконтроллеров.
В этой статье сравниваются различные интерфейсы: UART, SPI и I2C, а также их различия.Мы будем сравнивать их с различными факторами на основе их протоколов, преимуществ и недостатков каждого интерфейса и т. Д., И мы предоставим несколько примеров того, как эти интерфейсы используются в микроконтроллерах.
Интерфейс UART
Что такое UART?
- Означает Универсальный асинхронный прием и передача (UART)
- Простой протокол последовательной связи, который позволяет хосту обмениваться данными с дополнительным устройством.
- UART поддерживает двунаправленную, асинхронную и последовательную передачу данных.
- Он имеет две линии данных, одна для передачи (TX), а другая для приема (RX), которые используются для связи через цифровой контакт 0, цифровой контакт 1.
- TX и RX подключены между двумя устройствами. (например, USB и компьютер)
- UART также может обрабатывать проблемы управления синхронизацией между компьютерами и внешними последовательными устройствами.
Как это работает?
- Он может работать между устройствами тремя способами:
- Симплекс = передача данных в одном направлении
- Полудуплекс = передача данных в любом направлении, но не одновременно
- Полный дуплекс = передача данных в обоих направлениях одновременно
- После подключения данные передаются от TX передающего UART к RX принимающего UART.
- Поскольку UART является протоколом асинхронной последовательной передачи = Нет часов
- Передача UART преобразует параллельные данные от ведущего устройства (например, CPU) в последовательную форму и передает их последовательно в принимающий UART. Затем он преобразует последовательные данные обратно в параллельные данные для принимающего устройства
- Поскольку UART не имеет часов, UART добавляет стартовые и стоповые биты, которые передаются для представления начала и конца сообщения.
- Это помогает принимающему UART узнать, когда начинать и останавливать чтение битов. Когда принимающий UART обнаруживает стартовый бит, он будет читать биты с определенной скоростью передачи BAUD.
- Скорость передачи данных UART называется скоростью передачи данных в формате BAUD и по умолчанию установлена на 115200 (скорость передачи данных в формате BAUD основана на скорости передачи символов, но аналогична скорости передачи в битах).
- Оба UART должны работать примерно с одинаковой скоростью передачи. Если разница в скорости передачи данных в формате BAUD составляет более 10%, синхронизация битов может быть отключена и данные станут непригодными для использования.Пользователь должен убедиться, что UART настроены для передачи и приема одного и того же пакета данных.
Рабочий протокол UART
- UART, который передает данные, сначала получит данные от шины данных, которые отправляются другим компонентом (например, CPU).
- После получения данных из шины данных он добавит стартовый бит, бит четности и стоповый бит для создания пакета данных.
- Пакет данных затем передается на вывод TX, где принимающий UART будет читать пакет данных на своем выводе RX.Данные отправляются до тех пор, пока в передающем UART не останется данных.
Передача и получение данных
- Как только данные передаются по передающему FIFO, флаг FIFO «BUSY» будет установлен и активен во время процесса.
- FIFO = первым пришел – первым ушел. Это буфер UART, который заставляет последовательно передавать каждый байт принимающему UART.
- Бит «BUSY» будет неактивен только после завершения передачи данных, очистки FIFO и передачи всех битов, включая стоповый бит.
- Когда приемник UART находится в режиме ожидания и если после получения стартового бита на входе низкий уровень данных, счетчик приема начнет работать и будет ожидать получения данных в 8-м цикле BAUD16.
- Если RX все еще находится на низком уровне в течение 8-го цикла Baud16, в то время как стартовый бит действителен, он будет обработан как неправильный стартовый бит и, таким образом, проигнорирован.
- Если стартовый бит действителен, биты данных выбираются каждый 16-й цикл Baud16 в зависимости от длины символа данных. Если включен режим четности, также определяется бит четности.
- Если RX высокий, будет подтвержден действительный стоповый бит. В противном случае произойдет ошибка кадрирования.
- Когда получен полный пакет данных, данные сохраняются в принимающем FIFO.
Управление прерываниями
- Целью прерываний является автоматическая отправка содержимого буфера.
- Пользователь может использовать прерывания в следующих случаях:
- Ошибка разрыва строки (сигнал RX остается 0, включая контрольный и стоповый бит.)
- Ошибка кадра (стоповый бит не 1)
- Тайм-аут приема ( приемный FIFO имеет данные, но не полные, и последующие данные не передаются)
Операция FIFO
- Модуль UART семейства процессоров ARM Stellaris содержит два 16-байтовых FIFO: один для передачи и один для приема.
- Их можно настроить на запуск прерываний на разной глубине. Например, глубина 1/8, 1/4, 1/2, 3/4 и 7/8.
- Если принимающий FIFO запускает прерывание на 1/4, прерывание приема запускается, когда UART получает 4 данных.
Рабочий процесс передачи FIFO:
- Процесс запускается сразу после ввода данных. Передача занимает много времени, поэтому другие данные, которые необходимо отправить, могут продолжать поступать в передающий FIFO.
- Когда передающий FIFO заполнится, пользователю придется подождать, иначе вы потеряете свои данные.
- Передающий FIFO будет посылать данные побитно, пока передающий FIFO не станет полностью пустым. После очистки переданных данных в передающий FIFO будет добавлен дополнительный слот.
Рабочий процесс приема FIFO:
- Когда оборудование получает данные, они сохраняются в принимающем FIFO. Программа будет автоматически извлекать и стирать данные из принимающего FIFO, поэтому в принимающем FIFO останется место.Если данные в принимающем FIFO не стираются, а принимающий FIFO заполнен, данные будут потеряны.
- FIFO приемопередатчика предназначен для решения проблемы, связанной с неэффективностью ЦП и слишком частым прерыванием работы приемопередатчика UART. Используя связь UART, режим прерывания проще и эффективнее, чем метод опроса. Без FIFO приемопередатчика все данные будут прерваны один раз и станут неэффективными. С FIFO приемопередатчика он может генерировать прерывание и постоянно передавать и принимать данные (до 14), что повышает эффективность передачи и приема.
- Потеря данных не произойдет в результате FIFO, поскольку он уже предвидел какие-либо проблемы в процессе отправки и получения. Пока UART инициализирован, процедура прерывания будет делать все автоматически.
Петля
- UART имеет внутреннюю функцию обратной петли для диагностики или отладки, когда данные, отправленные из TX, будут приняты входом RX.
Последовательный инфракрасный протокол
- UART имеет последовательный порт IrDA Модуль инфракрасного (SIR) кодера / декодера.Модуль IrDA SIR переводит между асинхронным потоком данных UART и полудуплексным последовательным интерфейсом SIR.
- Используется для обеспечения цифровой кодированный выход и декодированный вход для UART. Сигнальный контакт UART может быть подключен к инфракрасному трансиверу для физического уровня IrDA SIR связь.
Преимущества использования UART
- Прост в использовании, хорошо документирован, поскольку это широко используемый метод с большим количеством ресурсов в Интернете
- Часы не требуются
- Бит четности для проверки ошибок
Недостатки использования UART
- Размер кадра данных ограничен только 9 битами.
- Невозможно использовать несколько ведущих систем и ведомых устройств.
- Скорости передачи каждого UART должны быть в пределах 10% друг от друга, чтобы предотвратить потерю данных.
- Низкая скорость передачи данных
Примеры UART в микроконтроллерах:
USB CP2102 Последовательный преобразователь
- Высокоинтегрированный контроллер моста USB-UART, обеспечивающий простое решение для обновления проектов RS-232 до USB с использованием минимального количества компонентов и места на печатной плате. Он обеспечивает USB-подключение к устройствам с интерфейсом UART.
- Он использует стандартный разъем USB типа A и 6-контактный разъем TTL.
- Этот последовательный преобразователь USB CP2102 представляет собой небольшой адаптер для платы Arduino / Seeeduino для приема обновлений прошивки с компьютера.
FT232r USB UART / USB к UART 5 В
- Компания Seeed предлагает аналогичный продукт: USB – UART 5V
- Это USB – последовательный интерфейс UART, который упрощает переход от USB к последовательному интерфейсу.
- Уменьшает количество внешних компонентов при эффективной работе с хост-контроллером USB, используя как можно меньше общей доступной полосы пропускания USB.
- Для USB в UART 5V он основан на Ch440, который представляет собой микросхему преобразования шины USB и может реализовать преобразование USB в последовательный интерфейс.
- Этот USB-порт преобразуется в инфракрасный порт IrDA или USB-порт в интерфейс принтера, а также может использоваться для загрузки кода или связи с микроконтроллерами.
UART Seeeduino V4.2
- Все платы Arduino имеют как минимум один последовательный порт (UART), который обменивается данными на цифровых выводах 0 (RX) и 1 (TX), а также с компьютером через USB.
- Это Arduino-совместимая плата, основанная на микроконтроллере ATmga328P. С ATMEGA16U2 в качестве преобразователя UART-USB, плата может в основном работать как микросхема FTDI, и ее можно программировать через кабель micro-USB.
Базовый щит V2
- Arduino Uno – самая популярная плата Arduino на данный момент, однако иногда бывает неприятно, когда вашему проекту требуется много датчиков или светодиодов, а ваши перемычки находятся в беспорядке.
- Назначение этого продукта – избавиться от макетной платы и соединительных проводов. Благодаря богатым разъемам Grove на плинтусе вы можете очень удобно добавлять все модули Grove в Arduino Uno!
- Эти устройства могут быть подключены через UART и I2C (следующее коммуникационное периферийное устройство, о котором я расскажу!)
Интерфейс I2C
Что такое I2C?
- Обозначает межинтегральную схему (I2C)
- Это протокол последовательной связи, аналогичный UART.Однако он не используется для связи ПК с устройством, а вместо этого используется с модулями и датчиками.
- Это простая двунаправленная двухпроводная синхронная последовательная шина, для которой требуется всего два провода для передачи информации между устройствами, подключенными к шине.
- Они полезны для проектов, требующих совместной работы множества различных частей (например, датчиков, выводов, расширений и драйверов), поскольку они могут подключать до 128 устройств к материнской плате, сохраняя при этом четкий канал связи!
- Это связано с тем, что I2C использует адресную систему и общую шину = множество различных устройств могут быть подключены с использованием одних и тех же проводов, и все данные передаются по одному проводу и имеют небольшое количество контактов.Однако недостатком этого упрощенного подключения является то, что он медленнее, чем SPI.
- Скорость I2C также зависит от скорости передачи данных, качества проводов и внешнего шума.
- Протокол I2C также используется в качестве двухпроводного интерфейса для подключения низкоскоростных устройств, таких как микроконтроллеры, EEPROM, аналого-цифровые и цифро-аналоговые преобразователи. , Интерфейсы ввода-вывода и другие подобные периферийные устройства во встроенных системах.
Как это работает?
- Он имеет 2 линии: SCL (последовательная линия синхронизации) и SDA (порт приема последовательной линии данных).
- CL – линия синхронизации для синхронизации передачи.SDA – это линия данных, по которой отправляются или принимаются биты данных.
- Ведущее устройство инициирует передачу данных по шине и генерирует часы, чтобы открыть переданное устройство, и любое адресуемое устройство считается ведомым устройством.
- Взаимосвязь между ведущим и ведомым устройствами, передающими и принимающими по шине, непостоянна. Это зависит от направления передачи данных в данный момент.
- Если ведущее устройство хочет отправить данные ведомому устройству, оно должно сначала обратиться к ведомому, прежде чем отправлять какие-либо данные.
- Мастер завершит передачу данных. Если ведущий хочет получить данные от ведомого, ведущий должен снова сначала обратиться к ведомому.
- Затем хост принимает данные, отправленные подчиненным, и, наконец, получатель завершает процесс приема. Хост также отвечает за генерацию тактовых импульсов и прекращение передачи данных.
- Также необходимо подключить питание через подтягивающий резистор. Когда шина простаивает, обе линии работают с высоким уровнем мощности.
- Емкость линии влияет на скорость передачи данных по шине. Поскольку текущая мощность на шине мала, слишком большая емкость может вызвать ошибки передачи. Таким образом, его нагрузочная способность должна составлять 400 пФ, чтобы можно было оценить допустимую длину шины и количество подключенных устройств.
Рабочий протокол I2C
Метод передачи данных
- Ведущее устройство отправляет сигнал передачи каждому подключенному ведомому устройству, переключая линию SDA с высокого уровня напряжения на низкий уровень напряжения и линию SCL с высокого на низкий уровень после переключения линии SDA.
- Ведущее устройство отправляет каждому ведомому устройству 7 или 10-битный адрес ведомого устройства и бит чтения / записи ведомому устройству, с которым он хочет связаться.
- Подчиненное устройство затем сравнит адрес со своим собственным. Если адрес совпадает, ведомое устройство возвращает бит ACK, который переключает линию SDA на низкий уровень на один бит. Если адрес не совпадает с его адресом, ведомое устройство оставляет линию SDA высоким.
- Затем ведущее устройство отправляет или принимает фрейм данных. После передачи каждого кадра данных принимающее устройство возвращает отправителю еще один бит ACK, чтобы подтвердить успешную передачу.
- Чтобы остановить передачу данных, ведущее устройство отправляет сигнал остановки ведомому, переключая высокий уровень SCL перед переключением высокого уровня SDA
Синхронизация часов
- Все мастера генерируют свои собственные часы на линии SCL для передачи сообщений на Шина I2C.
- Данные действительно только в высокий период времени.
- Часы синхронизация осуществляется подключением интерфейса I2C к линии SCL где переключатель идет с высокого на низкий. Когда часы устройства идут на низком уровне, он удерживает линию SCL в этом состоянии до тех пор, пока не достигнет высокого уровня Часы.
- Если другие часы все еще находятся в низком периоде, переключатель низкого-высокого не изменяется состояние линии SCL. Линия SCL всегда удерживается на низком уровне устройством с самый длительный низкий период. На этот раз устройство с коротким и низким период перейдет в состояние высокого и ожидания.
- Когда все соответствующие устройства завершили свой низкий период, линия часов идет высокий.
- После что нет разницы в состоянии часов устройства и линии SCL, и все устройства начинают отсчитывать свой высокий период.Устройство, которое первое завершение периода максимума снова потянет за минимум линии SCL.
- низкий период синхронных часов SCL определяется устройством с самый длинный низкий тактовый период, в то время как высокий период определяется устройством с самым коротким высоким тактовым периодом.
Режимы передачи
Быстрый режим:
- Устройства быстрого режима могут принимать и передавать со скоростью 400 кбит / с. Они должны быть способны синхронизироваться с передачей 400 кбит / с и увеличивать низкий период сигнала SCL, чтобы замедлить передачу.
- Устройства быстрого режима обратно совместимы и могут обмениваться данными с устройствами стандартного режима от 0 до 100 кбит / с шинными системами I2C. Однако, поскольку устройства в стандартном режиме несовместимы снизу вверх, они не могут работать в системе быстрой шины I2C. Спецификация шины I2C для быстрого режима имеет следующие характеристики по сравнению со стандартным режимом:
- Максимальная скорость передачи данных увеличена до 400 кбит / с;
- Отрегулирована синхронизация сигналов последовательных данных (SDA) и последовательных часов (SCL).
- Имеет функцию подавления сбоев, а входы SDA и SCL имеют триггеры Шмитта.
- Выходной буфер имеет функцию управления крутизной для спадающих фронтов сигналов SDA и SCL
- После отключения питания устройства быстрого режима контакты ввода / вывода SDA и SCL должны быть остался без дела и не может заблокировать автобус.
- Внешнее подтягивающее устройство, подключенное к шине, должно быть настроено на максимально короткое максимально допустимое время нарастания шины I2C в быстром режиме.Для шин с максимальной нагрузкой 200 пФ подтягивающим устройством каждой шины может быть резистор. Для шины с нагрузкой от 200 пФ до 400 пФ подтягивающим устройством может быть источник тока (максимум 3 мА) или цепь переключаемого резистора.
Высокоскоростной режим:
- Устройства в режиме Hs могут передавать информацию со скоростью до 3,4 Мбит / с и оставаться полностью обратно совместимыми с устройствами в быстром или стандартном режиме (режим F / S), которые могут обмениваться данными в двух направлениях в системе со смешанной скоростью.
- Передача в режиме Hs имеет тот же принцип последовательной шины и формат данных, что и система в режиме F / S, за исключением арбитража и тактовой синхронизации, которые не выполняются.
- Спецификация шины I2C в высокоскоростном режиме выглядит следующим образом:
- В высокоскоростном (Hs) режиме ведущее устройство имеет выходной буфер с открытым стоком для высокоскоростного сигнала (SDAH) и вытягивание с открытым стоком. – цепь понижения и повышения напряжения источника тока на выходе высокоскоростной последовательной синхронизации (SCLH). Это сокращает время нарастания сигнала SCLH, и в любой момент активен только один источник тока хоста;
- В режиме Hs системы с несколькими мастерами арбитраж и тактовая синхронизация не выполняются для ускорения возможности обработки битов.Процесс арбитража обычно заканчивается после того, как код хоста передан в режиме F / S.
- Ведущее устройство в режиме Hs генерирует последовательный тактовый сигнал высокого и низкого уровня с соотношением 1: 2, что устраняет временные требования для времени установки и удержания.
- Устройство, работающее в режиме HS, может иметь встроенный мост. Во время передачи в режиме Hs линии SDAH и SCLH устройства в режиме Hs отделены от линий SDA и SCL, что снижает емкостную нагрузку линий SDAH и SCLH и ускоряет рост и падение.
- Разница между ведомыми устройствами в режиме Hs и ведомыми устройствами F / S заключается в скорости, с которой они работают.
- Устройство режима Hs может подавлять выбросы, а выходы SDAH и SCLH также имеют триггер Шмитта;
- Выходной буфер устройства режима Hs имеет функцию управления крутизной спада для сигналов SDAH и SCLH.
Преимущества использования I2C
- Имеет небольшое количество контактов / сигналов даже при наличии большого количества устройств на шине.
- Гибкость, поскольку он поддерживает связь с несколькими ведущими и несколькими ведомыми устройствами.
- Просто, поскольку для установления связи между несколькими устройствами используются только 2 двунаправленных провода.
- Приспосабливаемый, так как он может адаптироваться к потребностям различных ведомых устройств.
- Поддержка нескольких мастеров.
Недостатки использования I2C
- Более низкая скорость, поскольку для этого требуются подтягивающие резисторы, а не двухтактные резисторы, используемые SPI. Он также имеет конструкцию с открытым стоком = ограниченная скорость.
- Требуется больше места, поскольку резисторы занимают ценную площадь на печатной плате.
- Может усложняться по мере увеличения количества устройств.
Примеры I2C в микроконтроллерах
Grove – концентратор I2C (6 портов)
- I2C – очень популярный протокол связи. В системе Grove I2C используется более чем 80 датчиками для связи, 19 из которых связаны с мониторингом окружающей среды.
- Сегодня все больше и больше микроконтроллеров используют уровни связи 3,3 В, но традиционный ArduinoUno по-прежнему использует 5 В, что приводит к необходимости выравнивания многих модулей, особенно сенсорных модулей, при их использовании.
- Мы действительно работали в этой области, и теперь большинство сенсорных модулей Grove имеют функцию сдвига уровня, и пользователям не нужно учитывать использование микроконтроллера 3,3 В или 5 В при его использовании. Это соответствует девизу Гроув: плагин, и используйте его, это так просто. Для более подробного обзора совместимости датчиков вы можете просмотреть наше Руководство по выбору Grove.
4-канальный 16-разрядный АЦП для Raspberry Pi (ADS1115)
- Этот продукт от Seeed полностью совместим с Raspberry Pi.
- Используется для Raspberry Pi без аналого-цифрового преобразователя или когда вам нужен более точный АЦП.
- Мы предоставляем 4-канальный 16-разрядный АЦП для Raspberry Pi (ADS1115) через I2C, 4-канальный АЦП на базе Texas Instrument ADS1115, который представляет собой высокоточный 16-разрядный чип АЦП с низким энергопотреблением.
I2C Ардуино
- Связь I2C также может использоваться между двумя платами Arduino.
- Используется только для связи на короткие расстояния и использует синхронизированный тактовый импульс.
- В основном используется для связи с датчиками или другими устройствами, которые должны отправлять информацию мастеру.
Драйвер I2C / Легко управляемый адаптер Устройства I2C
- Драйвер I²C – это простой в использовании инструмент с открытым исходным кодом для управления устройствами I²C. Он работает с Windows, Mac и Linux и имеет встроенный цветной экран, на котором в реальном времени отображается вся деятельность I²C.
- Благодаря встроенному дисплею, отображающему тепловую карту всех активных сетевых узлов, вы можете наблюдать из сети I²C с несколькими устройствами, какие из них являются наиболее активными.
- Когда драйвер I²C подключен к существующей шине I²C, он «отслеживает» трафик и отображает его на экране.
- Это отличный инструмент для отладки проблем с I²C, потому что вы можете подслушивать разговор, когда он происходит.
MCP 23017
Ссылка: Electronicwings, 16-разрядный расширитель GPIO MCP23017.- 16-разрядное расширение параллельного ввода-вывода общего назначения для шины I2C. Аналогичен MCP23S17, за исключением последовательного интерфейса (I2C против SPI).
- Расширитель портов, который предоставляет пользователю практически идентичные порты по сравнению со стандартными микроконтроллерами.
PCF 8574
Ссылка: PCF8574 Плата модуля последовательного интерфейса, преобразователь ЖК-дисплея.- Обеспечивает расширение удаленного ввода-вывода общего назначения через двухпроводную двунаправленную шину I2C (последовательные часы (SCL), последовательные данные (SDA)).
- Seeed будет использовать это в наших будущих продуктах, внимательно следите за ним!
Grove Base Hat для Raspberry Pi
- Что такое роща?
- Это модульная стандартизированная система прототипирования соединителей.При сборке электроники Grove использует конструктивный подход. что упрощает подключение, экспериментирование и создание, а также упрощает систему обучения.
- Сегодня серия датчиков, исполнительных механизмов и дисплеев Grove выросла в большое семейство, и сегодня мы представляем Raspberry Pi для всей системы Grove.
- Базовая шляпа Grove для Raspberry Pi предоставляет цифровой / аналоговый / I2C / PWM / UART порт для удовлетворения всех ваших потребностей.
- С помощью встроенного MCU для Raspberry Pi также доступен 12-битный 8-канальный АЦП.В настоящее время более 60 Groves поддержали Grove Base Hat для Raspberry Pi.
Интерфейс SPI
Что такое SPI?
- Означает последовательный периферийный интерфейс (SPI)
- Он похож на I2C и представляет собой другую форму протокола последовательной связи, специально разработанную для подключения микроконтроллеров.
- Работает в полнодуплексном режиме, когда данные можно отправлять и получать одновременно.
- Работать с более высокой скоростью передачи данных = 8 Мбит или более
- Обычно это быстрее, чем I2C из-за простого протокола.Даже если линии данных / часов используются совместно между устройствами, каждому устройству потребуется уникальный адресный провод.
- Используется там, где важна скорость. (например, SD-карты, модули дисплея или когда информация обновляется и быстро меняется, как термометры)
Как это работает?
- 2 способа связи:
- Выбор каждого устройства с помощью строки выбора микросхемы. Для каждого устройства требуется отдельная строка Chip Select. Это наиболее распространенный способ, которым в настоящее время RPi использует SPI.
- Гирляндное соединение, при котором каждое устройство подключается друг к другу через свои данные с данными в строке следующего.
- Количество подключаемых устройств SPI не ограничено. Однако существуют практические ограничения из-за количества линий выбора оборудования, доступных на главном устройстве с методом выбора микросхемы, или сложности передачи данных через устройства в методе последовательного подключения.
- При двухточечной связи интерфейс SPI не требует операций адресации и является полнодуплексным, что является простым и эффективным.
Рабочий протокол SPI
- SPI обменивается данными через 4 порта:
- MOSI – вывод основных данных, ввод данных ведомого
- MISO – ввод данных ведущего, вывод данных ведомого
- SCLK – тактовый сигнал, генерируемый ведущим устройством, до fPCLK / 2, частота ведомого режима до fCPU / 2
- NSS – сигнал с включенным ведомым устройством, управляемый ведущим устройством, некоторые ИС будут помечены как CS (выбор микросхемы)
- В мульти ведомом В системе каждое ведомое устройство требует отдельного разрешающего сигнала, что немного сложнее с точки зрения оборудования, чем система I2C.
- Интерфейс SPI на самом деле представляет собой два простых сдвиговых регистра во внутреннем оборудовании. Передаваемые данные 8 бит. Он передается бит за битом под сигналом включения ведомого и импульсом сдвига, генерируемым ведущим устройством. Старший бит находится спереди, а младший – сзади.
- Интерфейс SPI – это синхронная последовательная передача данных между ЦП и периферийным низкоскоростным устройством. Под импульсом сдвига ведущего устройства данные передаются бит за битом. Старший бит находится спереди, а младший – сзади.Это полнодуплексная связь, и скорость передачи данных в целом выше, чем у шины I2C, и может достигать скорости в несколько Мбит / с.
Преимущества использования SPI
- Протокол прост, поскольку нет сложной системы адресации ведомых устройств, такой как I2C.
- Это самый быстрый протокол по сравнению с UART и I2C.
- Нет стартовых и стоповых битов, в отличие от UART, что означает, что данные могут передаваться непрерывно без прерывания
- Отдельные линии MISO и MOSI, что означает, что данные могут передаваться и приниматься одновременно
Недостатки использования SPI
- Больше портов Pin занято, практическое ограничение на количество устройств.
- Не указано управление потоком и механизм подтверждения, подтверждающий, получены ли данные, в отличие от I2C
- Использует четыре линии – MOSI, MISO, NCLK, NSS
- Нет формы проверки ошибок в отличие от UART (с использованием бита четности)
- Всего 1 мастер
Примеры SPI в микроконтроллерах:
MCP 3008 / Grove I2C АЦП
- Seeed предлагает аналогичный продукт, который имеет те же функции: Grove I2C ADC, но его коммуникационная периферия – I2C.
- Это 10-битный 8-канальный аналого-цифровой преобразователь (АЦП).
- Для MCP 3008 он подключается к Raspberry Pi через последовательное соединение SPI. Выполняется с помощью аппаратной шины SPI или любых четырех контактов GPIO и программного SPI для подключения к MCP 3008.
Последовательный модуль CAN-BUS на базе MCP2551 и MCP2515
- Этот видимый продукт: Модуль последовательной шины CAN предоставляет вашему Arduino возможности шины CAN и позволяет взломать ваш автомобиль. Он позволяет читать и записывать сообщения на шину CAN.
- CAN-шина – это система протокола обмена сообщениями, которая позволяет различным микроконтроллерам и датчикам в автомобиле общаться друг с другом. CAN обеспечивает междугородную, среднюю скорость передачи данных и высокую надежность.
- Этот модуль последовательной шины CAN также может быть подключен к вашей Arduino через встроенный разъем Grove.
- Интерфейсы с микроконтроллерами по SPI.
SPI Seeeduino V4.2
- Последовательная связь SPI может использоваться с Arduino для связи между двумя Arduino, где один Arduino будет действовать как ведущий, а другой – как ведомый.
- Используется для связи на короткие расстояния на высокой скорости.
- Это тот же продукт: Arduino v4.2 из приведенного выше примера UART
ENC28J60 НАКЛАДКА ДЛЯ Raspberry pi
- Pi zero ENC28J60 – это простой сетевой адаптер для Pi zero, который очень легко собрать и настроить.
- Это позволяет вашему Raspberry Pi zero беспрепятственно получать доступ к сети, а также легко выполнять обновления системы и операции по установке программного обеспечения.
- Microchip ENC28J60 – это 28-контактный автономный контроллер Ethernet 10BASE-T с интерфейсом SPI.
- Интерфейс SPI служит каналом связи между хост-контроллером и ENC28J60.
Драйвер SPI / Легко управляемый адаптер Устройства SPI
- Это аналогичный продукт I2C Driver / Adapter-Easy Driver I2C Device, но для SPI. Это простой в использовании инструмент для управления устройствами SPI. Он работает с Windows, Mac и Linux и имеет встроенный цветной экран, на котором в реальном времени отображается логический анализатор всего трафика SPI.
- Точно так же он использует стандартный последовательный USB-чип FTDI для связи с ПК, поэтому установка специальных драйверов не требуется.На плате имеются блоки питания 3,3 и 5 В с контролем напряжения и тока.
- Флэш-память SPI очень распространена, и с помощью тестового зажима SPIDriver позволяет удобно считывать и записывать флэш-память SPI в цепи. Короткий скрипт – это все, что нужно для чтения или записи вспышки Atmel, а светодиодные ленты SPI также легко подключить к драйверу SPI. Вы также можете управлять ими напрямую, что делает их намного более увлекательными!
- Использование SPI в этом разделе достаточно быстро для плавной анимации длинных полос и достижения эффектов POV.Короткие полоски также могут получать питание напрямую от мощного встроенного источника питания SPIDriver на 470 мА.
Итак, какое из этих коммуникационных периферийных устройств является «лучшим»? UART, SPI или I2C?
К сожалению, «лучшей» коммуникационной периферии не существует. У каждого коммуникационного периферийного устройства есть свои преимущества и недостатки.
Таким образом, пользователь должен выбрать коммуникационное периферийное устройство, наиболее подходящее для вашего проекта.Например, вам нужно самое быстрое периферийное устройство связи, SPI будет идеальным выбором. С другой стороны, если пользователь хочет подключить много устройств, не слишком сложное, I2C будет идеальным выбором, поскольку он может подключать до 127 устройств и прост в управлении.
Резюме
Таким образом, я собрал все преимущества / недостатки и функции различных протоколов связи и сравнил их, чтобы вы могли легко выбрать, какой из них лучше всего подходит для вашего проекта. Помните, что используемое вами устройство, аксессуар, модуль или датчик также должны поддерживать протокол связи.
Протокол | UART | I2C | SPI |
---|---|---|---|
Сложность | Простой | Простое соединение нескольких устройств | Комплекс как устройство увеличивается |
Скорость | Самый медленный | Быстрее UART | Самый быстрый |
Кол-во устройств | До 2 устройств | До 127, но усложняется | Много, но усложняется |
Количество проводов | 1 | 2 | 4 |
Дуплекс | Полный дуплекс | Полудуплекс | Полный дуплекс |
No.мастеров и рабов | от одного к одному | Несколько подчиненных и хозяев | 1 главный, несколько подчиненных |
Эксклюзивное предложение!
Seeed предлагает одну бесплатную макетную плату для каждого клиента.