Протокол передачи данных UART


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

Протокол передачи данных UART

Предисловие

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

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

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

Протокол передачи данных UART

Схема параллельного 8-разрядного интерфейса. Передача данных управляется тактирующим сигналом CLK. Байт данных передается по каждому импульсу CLK . Используется 10 проводов.

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

Протокол передачи данных UART

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

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

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

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

За время существования цифровой техники были созданы десятки последовательных протоколов. USB (универсальная Последовательная Шина) и Ethernet — это пример двух наиболее популярных сейчас последовательных протоколов. Другие очень популярные последовательные интерфейсы — это SPI, I2C и последовательный интерфейс, о котором пойдет речь в этой статье. Каждый их этих интерфейсов можно отнести к одной из двух подгрупп — Асинхронные и Синхронные.

Синхронный протокол всегда включает линию тактового сигнала. Это обеспечивает более простую (и зачастую более быструю) передачу данных, но требует как минимум один дополнительный провод. Пример синхронных интерфейсов — это SPI и I2C.

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

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


USB -> UART адаптер дешево

Протокол передачи данных UART

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

  • Биты данных
  • Биты синхронизации
  • Биты проверки четности
  • Скорость передачи

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

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

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

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

Чем выше скорость передачи в бодах, тем быстрее осуществляется передача и прием данных. Но для максимальной скорости существуют физические ограничения . Обычно на практике вы не увидите скоростей, превышающих 115200. Для большинства микроконтроллеров это максимальная скорость. Если выбрать слишком высокую скорость, то неизбежно появятся ошибки на
принимающей стороне.

Кадры данных

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

Протокол передачи данных UART

Один кадр (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 данных? Приведем пример:

Протокол передачи данных UART

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

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

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

Протокол передачи данных UART

Важно понимать, что обозначения 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.

Протокол передачи данных UART

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

Протокол передачи данных UART

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

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

UART

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

Протокол передачи данных UART

Упрощенная схема интерфейса UART

Интерфейсы UART существуют в виде отдельных микросхем, но чаще всего они встроены в микроконтроллеры. Чтобы узнать, есть ли у вашего МК протокол UART, вам придется почитать даташит на этот контроллер. У некоторых нет ни одного, у некоторых есть, у некоторых их несколько. Например, Arduino Uno, основанный на старом добром ATmega328, имеет только один UART, в то время как Arduino Mega — построенный на ATmega2560 — имеет целых четыре UART.

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

Протокол передачи данных UART

Внутренняя блок-схема UART (любезно предоставлена Exar ST16C550)

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

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

Если микроконтроллер не имеет встроенного аппаратного UART (или их количество недостаточно для приложения), последовательный интерфейс может быть реализован программно. Это тот подход, который используется в библиотеках Arduino, таких, как SoftwareSerial.Точность работы программно реализуемого UART меньше чем аппаратного, но в крайнем случае можно использовать и такой вариант.

Общие вопросы

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

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

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

Протокол передачи данных UART

Данные передавались со скоростью 9600 бит/с, но получены со скоростью 19200 бит/с. В итоге — гора мусора.

Объединение шин

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

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

Протокол передачи данных UART

Два передатчика пытаются отправить данные в одну и ту же шину. Ситуация конкуренции на шине

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

Статься переведена с английского. Источник https://learn.sparkfun.com/tutorials/serial-communication


86 comments

  1. Уведомление: Quels sont les six familles ou acheter du cialis
  2. Уведомление: safe canadian online pharmacies
  3. Уведомление: Feeling chilled or experiencing shivering sensations despite the absence of a cold environment or fever may indicate thyroid deficiency: synthroid brand name cost
  4. Уведомление: atorvastatin cost without insurance | Can stress management techniques lower the risk of heart disease
  5. Уведомление: Why you should not take antibiotics?
  6. Уведомление: Where is liver pain located?
  7. Уведомление: http://trommelforum.ch/forum/profile/franbervage/
  8. Уведомление: https://www.horreur.club/community/profile/canadianpharmacy/
  9. Уведомление: https://essidi.cm/community/profile/canadianpharmacy/
  10. Уведомление: canada online pharmacies
  11. Уведомление: abusetalk.co.ukforumprofilecanadianpharmacy
  12. Уведомление: Can antibiotics raise heart rate?
  13. Уведомление: prescription drugs without prior prescription
  14. Уведомление: warriorfarm.co.ukcommunityprofile153413
  15. Уведомление: ascenddeals.combeaverageprofilecanadianpharmacy
  16. Уведомление: https://baldstyled.com/community/profile/canadianpharmacy/
  17. Уведомление: How can u tell if you have chlamydia?
  18. Уведомление: www.careerstek.comforumprofilecanadianpharmacy
  19. Уведомление: canadian online pharmacy
  20. Уведомление: Quelles sont les composantes d'une famille: sildenafil 100mg prix
  21. Уведомление: Comment fait-on Lamour a 70 ans | tadalafil generique
  22. Уведомление: Quels sont les problemes de la famille cialis vidal
  23. Уведомление: What organ can you love without vidalista professional 20 mg
  24. Уведомление: What do men expect in a relationship | side effects of vidalista
  25. Уведомление: What time of day is sperm count highest: buy vidalista
  26. Уведомление: Persistent headaches or migraines can be associated with thyroid deficiency?
  27. Уведомление: Lack of motivation and decreased productivity can be linked to thyroid deficiency and low energy levels?
  28. Уведомление: Does clomiphene increase the risk of miscarriage in women with recurrent pregnancy loss?
  29. Уведомление: Does smoking affect a woman's ability to ovulate?
  30. Уведомление: Does cholesterol affect the health of the sweat glands
  31. Уведомление: How does a lack of access to education and awareness about heart-healthy lifestyles impact heart disease prevention
  32. Уведомление: Why do my legs seize up at night - Dapoxetine walmart over the counter
  33. Уведомление: How do you know she's the one to marry - pink viagra pills
  34. Уведомление: How do you know if you are naturally attractive?
  35. Уведомление: What is the biggest source of infection?
  36. Уведомление: Qu'est-ce qu'il ne faut pas accepter dans un couple viagra naturel africain
  37. Уведомление: Study Links Inhaler Use to Increased Risk of Glaucoma - albuterol inhaler
  38. Уведомление: Exercise can help alleviate treatment-related side effects in breast cancer patients. Tamoxifen 10 mg side effects
  39. Уведомление: What can flush your liver | cefadroxil with or without food
  40. Уведомление: What makes a man fall deeply in love with a woman cheap vardenafil
  41. Уведомление: amoxil 500 precio - What are signs of strong immune system
  42. Уведомление: What over the counter medications can be used for relieving back pain - over counter allergy medication
  43. Уведомление: How long can the average man stay erect | fildena 50mg over the counter
  44. Уведомление: plaquenil tabs 200 mg | Is honey good for your liver
  45. Уведомление: What happens if a bacterial infection goes untreated - stromectol 12mg online
  46. Уведомление: Which inhaler is easiest to use albuterol sulfate hfa
  47. Уведомление: Medications and Eye Infections: Clearing the Path to Recovery - over the counter viagra
  48. Уведомление: buy plaquenil online
  49. Уведомление: How do you know she's the one to marry
  50. Уведомление: Is 8 shots of vodka a lot | plaquenil 200 mg price
  51. Уведомление: Can I get medication for anxiety from an online pharmacy
  52. Уведомление: What foods are good for rebuilding your liver?
  53. Уведомление: How long until antibiotics are out of your system ivermectin where to buy?
  54. Уведомление: How do you stop getting wet when turned on buy stromectol 3 mg?
  55. Уведомление: Can you test for a parasite at home?
  56. Уведомление: Does turmeric help with parasites ivermectin dosage for humans?
  57. Уведомление: What is the best probiotic after taking antibiotics ivermectin tablets for humans?
  58. Уведомление: Do antibiotics interfere with blood pressure medication buy stromectol 3mg?
  59. Уведомление: How long does it take for a parasite to make you sick stromectol 3mg dosage?
  60. Уведомление: How do you know if sperm has entered buy stromectol 6mg?
  61. Уведомление: How can you bring your blood pressure down quickly stromectol 6mg?
  62. Уведомление: Can antibiotics be used for urinary tract infections (UTIs) while menstruating ivermectin cream cost?
  63. Уведомление: Can antibiotics be used to treat infections in patients with bacterial pneumonia and community-acquired pneumonia ivermectin dose for scabies?
  64. Уведомление: Why is my cough worse after steroid inhaler symbicort inhaler asthma dosing?
  65. Уведомление: Does albuterol increase heart rate ventolin hfa 90 mcg inhaler?
  66. Уведомление: How can I raise my oxygen level quickly?
  67. Уведомление: What is the difference between a puffer and an inhaler?
  68. Уведомление: How long should you wait to eat or drink after using an inhaler can you take stolt with ventolin?
  69. Уведомление: canadian online pharmacies prescription drugs?
  70. Уведомление: people's pharmacy?
  71. Уведомление: What is a toxic infection Zithromax suspension?
  72. Уведомление: What color is trichomoniasis discharge Azithromycin cats?
  73. Уведомление: Can antibiotics be used to treat infections in patients with lung disease buy z-pak online pharmacy?
  74. Уведомление: How long to wait for round 2??
  75. Уведомление: Why do I crave physical touch so much cialis walmart price??
  76. Уведомление: How do you handle a cheating man??
  77. Уведомление: What to do when he goes silent??
  78. Уведомление: What should you eat before bedtime??
  79. Уведомление: Can a woman have 4 babies at once??
  80. Уведомление: What happens when a guy takes zinc??
  81. Уведомление: Will my silence bring him back??
  82. Уведомление: When comparing prices for dapoxetine, it is important to factor in any potential shipping delays or customs fees that may be required if purchasing from an international retailer.?
  83. Уведомление: PE can also be a side effect of some medical conditions such as diabetes, hypertension, and heart disease.?
  84. Уведомление: Can antibiotics prevent infection in patients with cancer??
  85. Уведомление: How quickly do antibiotics work??
  86. Уведомление: buyviagraonlinet.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Срок проверки reCAPTCHA истек. Перезагрузите страницу.