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


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

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

Типы протоколов связи

Существуют различные типы передачи данных, доступные в цифровой электронике, такие как последовательная связь и параллельная связь. Аналогично протоколы делятся на два типа, такие как последовательный протокол связи и параллельные протоколы связи . Примерами параллельных протоколов связи являются ISA, ATA, SCSI, PCI и IEEE-488.

Принцип параллельной связи

Аналогично существует несколько примеров последовательных протоколов связи, таких как CAN, ETHERNET, I2C, SPI, RS232, USB, 1-Wire и SATA и т. д.

Принцип последовательной связи

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

Режимы передачи в последовательной связи

Как уже было сказано выше, в последовательной связи данные передаются в виде битов, т.е. двоичных импульсов, и хорошо известно, что двоичная единица представляет собой логический ВЫСОКИЙ уровень, а ноль представляет собой логический НИЗКИЙ уровень. Существует несколько типов последовательной связи в зависимости от типа режима передачи и передачи данных. Режимы передачи классифицируются как симплексный, полудуплексный и полный дуплексный.

Симплексный метод:

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

Метод полудуплекса:

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

Метод полного дуплекса:

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

Синхронизация

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

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

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

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

Принцип синхронной последовательной связи

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

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

Принцип асинхронной последовательной связи

Другие термины, связанные с последовательной связью

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

Скорость передачи данных: Скорость передачи данных — это скорость, с которой данные передаются между передатчиком и приемником в виде бит в секунду (бит/с). Наиболее часто используемая скорость передачи данных — 9600. Но есть и другие варианты скорости передачи данных, такие как 1200, 2400, 4800, 57600, 115200. Чем больше скорость передачи данных, тем больше данных будет передано за один раз. Также для передачи данных скорость передачи данных должна быть одинаковой для передатчика и приемника.

Кадрирование: Кадрирование относится к числу бит данных, которые должны быть отправлены от передатчика к приемнику. Число бит данных различается в зависимости от приложения. Большинство приложений используют 8 бит в качестве стандартного количества бит данных, но можно выбрать также 5, 6 или 7 бит.

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

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

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

Синхронные последовательные протоколы

К синхронным последовательным протоколам относятся такие протоколы как SPI, I2C, CAN и LIN. Они являются одними из лучших для подключения различных периферийных устройств. Также они находят применение и во множестве других приложений.

Протокол SPI

SPI (Serial Peripheral Interface - последовательный периферийный интерфейс) — это синхронный интерфейс, который позволяет соединять несколько микроконтроллеров или других устройств. В SPI для линий данных и синхронизации требуются отдельные провода. Также тактовый сигнал не включен в поток данных и должен быть предоставлен как отдельный сигнал. SPI может быть настроен как ведущий или как ведомый. Четыре основных сигнала SPI (MISO, MOSI, SCK и SS), Vcc и Ground являются частью передачи данных. Поэтому для отправки и получения данных от ведомого или ведущего устройства требуется 6 проводов. Теоретически SPI может иметь неограниченное количество ведомых устройств. Передача данных настраивается в регистрах SPI. SPI может обеспечивать скорость до 10 Мбит/с и идеально подходит для высокоскоростной передачи данных.

Структурная схема работы протокола SPI

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

Протокол I2C

Структурная схема работы протокола I2C

Протокол I2C используется для двухпроводной связи между различными микросхемами или модулями, где две линии — это SDA (Serial Data Line - линия последовательных данных) и SCL (Serial Clock Line - линия последовательной синхронизации). Обе линии должны быть подключены к положительному источнику питания с помощью подтягивающего резистора. I2C может обеспечивать скорость до 400 Кбит/с и использует 10- или 7-битную систему адресации для нацеливания на определенное устройство на шине i2c, поэтому может подключать до 1024 устройств. Протокол I2C имеет ограниченную длину связи и идеально подходит для встроенной связи. Сети I2C легко настраиваются, поскольку они используют только два провода, и новые устройства можно просто подключить к двум общим линиям шины I2C.

Как и SPI, протокол I2C имеется в большинстве современных микроконтроллеров. На нашем сайте мы рассматривали использование протокола I2C в следующих микроконтроллерах (платах):

USB

USB (Universal Serial Bus) — широко распространенный протокол с различными версиями и скоростями. К одному хост-контроллеру USB можно подключить до 127 периферийных устройств. USB действует как устройство «plug and play». USB используется практически во всех устройствах, таких как клавиатуры, принтеры, медиаустройства, камеры, сканеры и мыши. Он разработан для легкой установки, более быстрой передачи данных, меньшего количества кабелей и горячей замены. Он заменил более громоздкие и медленные последовательные и параллельные порты. USB использует дифференциальную сигнализацию для уменьшения помех и обеспечения высокоскоростной передачи на большие расстояния.    

Дифференциальная шина построена на основе двух проводов, один из которых представляет передаваемые данные, а другой — их дополнение. Идея заключается в том, что «среднее» напряжение на проводах не несет никакой информации, что приводит к меньшим помехам. В USB устройствам разрешено потреблять определенное количество энергии без запроса хоста. USB использует только два провода для передачи данных и работает быстрее, чем последовательный и параллельный интерфейс. Версии USB поддерживают разные скорости, такие как 1,5 Мбит/с (USB v1.0), 480 Мбит/с (USB2.0), 5 Гбит/с (USB v3.0). Длина отдельного кабеля USB может достигать 5 метров без концентратора и 40 метров с концентратором.

CAN

Протокол CAN (Controller Area Network) используется, например, в автомобильной промышленности для обеспечения связи между ECUs (Engine Control Units - блоками управления двигателем) и датчиками. Протокол CAN является надежным, недорогим и основан на сообщениях и охватывает множество приложений, например, автомобили, грузовики, тракторы, промышленные роботы. Система шины CAN обеспечивает централизованную диагностику ошибок и настройку во всех ECUs. Сообщения CAN имеют приоритет с помощью идентификаторов, так что идентификаторы с наивысшим приоритетом не прерываются. Каждый ECU содержит чип для получения всех переданных сообщений, определения релевантности и соответствующих действий — это позволяет легко модифицировать и включать дополнительные узлы (например, регистраторы данных шины CAN). Приложения включают запуск/остановку транспортных средств, системы предотвращения столкновений. Системы шины CAN могут обеспечивать скорость до 1 Мбит/с.

Достаточно подробно работа данного протокола рассмотрена в статье про использование стандарта CAN в плате Arduino.

Microwire

MICROWIRE — это последовательный 3-проводной интерфейс со скоростью 3 Мбит/с [полный дуплекс], по сути являющийся подмножеством интерфейса SPI. Microwire — это последовательный порт ввода-вывода на микроконтроллерах, поэтому шина Microwire также будет обнаружена на EEPROM и других периферийных чипах. 3 линии — это SI (Serial Input - последовательный вход), SO (SerialOutput - последовательный выход) и SK (Serial Clock - последовательная синхронизация). Линия последовательного входа (SI) к микроконтроллеру, SO — это последовательная выходная линия, а SK — последовательная синхронизирующая линия. Данные выводятся наружу по заднему фронту SK и оцениваются по переднему фронту. SI выводится внутрь по переднему фронту SK. Дополнительное усовершенствование шины MICROWIRE называется MICROWIRE/Plus. Основное различие между этими двумя шинами, по-видимому, заключается в том, что архитектура MICROWIRE/Plus в микроконтроллере более сложная. Она поддерживает скорость до 3 Мбит/с.

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

Асинхронный тип последовательных протоколов очень важен, когда речь идет о надежной передаче данных на большие расстояния. Асинхронная связь не требует тактового генератора, общего для обоих устройств. Каждое устройство независимо слушает и отправляет цифровые импульсы, которые представляют биты данных с согласованной скоростью. Асинхронная последовательная связь иногда называется последовательной связью транзисторно-транзисторной логики (ТТЛ), где высокий уровень напряжения равен логической 1, а низкий уровень напряжения равен логическому 0. Почти каждый микроконтроллер на рынке сегодня имеет по крайней мере один универсальный асинхронный приемник-передатчик (UART) для последовательной связи. Примерами являются RS232, RS422, RS485 и т. д.

RS232

RS232 (Recommended Standard 232) — очень распространенный протокол, используемый для подключения различных периферийных устройств, таких как мониторы, ЧПУ и т. д. RS232 поставляется в разъемах типа «папа» и «мама». RS232 имеет топологию «точка-точка» с максимум одним подключенным устройством и охватывает расстояние до 15 метров со скоростью 9600 бит/с. Информация по интерфейсу RS-232 передается в цифровом виде с помощью логических 0 и 1. Логическая «1» (MARK) соответствует напряжению в диапазоне от -3 до -15 В. Логический «0» (SPACE) соответствует напряжению в диапазоне от +3 до +15 В. Он поставляется в разъеме DB9, который имеет 9 выводов, таких как TxD, RxD, RTS, CTS, DTR, DSR, DCD, GND.

RS422

RS422 похож на RS232, который позволяет одновременно отправлять и получать сообщения по отдельным линиям, но использует для этого дифференциальный сигнал. В сети RS-422 может быть только одно передающее устройство и до 10 принимающих устройств. Скорость передачи данных в RS-422 зависит от расстояния и может варьироваться от 10 кбит/с (1200 метров) до 10 Мбит/с (10 метров). Линия RS-422 представляет собой 4 провода для передачи данных (2 витых провода для передачи и 2 витых провода для приема) и один общий заземляющий провод GND. Напряжение на линиях данных может находиться в диапазоне от -6 В до +6 В. Логическая разница между A и B больше +0,2 В. Логическая 1 соответствует разнице между A и B меньше -0,2 В. Стандарт RS-422 не определяет конкретный тип разъема, обычно это может быть клеммная колодка или разъем DB9.

RS485

Поскольку RS485 использует многоточечную топологию, он наиболее широко используется в промышленности и является предпочтительным протоколом в отрасли. RS485 может подключать 32 линейных драйвера и 32 приемника в дифференциальных конфигурациях, но с помощью дополнительных повторителей и усилителей сигнала до 256 устройств. RS-485 не определяет конкретный тип разъема, но часто это клеммная колодка или разъем DB9. Скорость работы также зависит от длины линии и может достигать 10 Мбит/с на 10 метрах. Напряжение на линиях находится в диапазоне от -7 В до +12 В. Существует два типа RS-485, такие как полудуплексный режим RS-485 с 2 контактами и полнодуплексный режим RS-485 с 4 контактами. На нашем сайте мы рассматривали работу с протоколом RS485 в следующих проектах:

Заключение

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

(Проголосуй первым!)
Загрузка...
92 просмотров

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

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