Разбираемся с понятиями «Интерфейс» и «Протокол»
Понятия «Протокол» и «Интерфейс» неразрывно связаны друг с другом, именно поэтому их так часто путают не только новички, но и опытные специалисты в области IT-технологий. Эти термины используются всегда, когда речь идёт о передаче данных. Причём, не важно, какой обмен данными имеется в виду, это может быть обмен между приложениями, устройствами, между человеком и компьютером – во всех этих случаях мы имеем дело с «интерфейсом» и «протоколом». Однако не многие могут дать внятный ответ на вопрос: «в чём разница между этими понятиями?», попросту путают эти термины или считают их синонимами. В данной статье мы постараемся раз и навсегда внести ясность в этот вопрос.
Для начала дадим определения.
Интерфейс – совокупность аппаратных и программных средств, необходимых для взаимодействия с программой, устройством, функцией и т.д.
Протокол — набор правил, соглашений, сигналов, сообщений и процедур, регламентирующий взаимодействие между сопрягаемыми объектами.
Сложно? На самом деле всё проще, чем кажется. Давайте разбираться!
Что такое интерфейс
Возьмём простой пример: обмен информацией между двумя людьми. Допустим, вам нужно передать сообщение своему другу из другого города. Вы можете это сделать многими способами: отправить ему письмо обычной почтой, почтовым голубем или воспользоваться электронной, можете написать в социальной сети, позвонить по телефону или Skype. Всё это – интерфейсы. Необходимо запомнить, что интерфейс всегда отвечает на вопросы: «Как?», «Каким способом?».
Понятие «интерфейс» также используется, когда речь идёт о взаимодействии компьютерной программы или устройства с человеком. Можно услышать: «программа имеет дружелюбный интерфейс» или «пылесос с беспроводным интерфейсом». В этих случая так же речь идёт о способах взаимодействия. Например, телевизором можно управлять с помощью пульта дистанционного управления или с помощью кнопок. Это его интерфейсы. Для подключения внешних устройств телевизоры имеют интерфейсы USB, DVI, HDMI и другие.
Если мы говорим про интерфейс компьютерной программы, то это тоже способ обмена данными: можно работать в программе пользуясь удобной графической оболочкой, а можно с помощью командной строки.
Как вы понимаете, чтобы организовать обмен данными по какому-либо интерфейсу, необходимо чтобы все участники взаимодействия обладали этим интерфейсом: для того, чтобы написать другу по электронной почте – нужно, чтобы у него был e-mail, а для того чтобы управлять беспроводным пылесосом, нужен пульт.
Интерфейс может содержать в себе другие интерфейсы. Когда мы говорим про передачу сообщения обычной почтой, мы говорим про один интерфейс. Но на самом деле наше письмо может доставляться поездом, самолётом, автотранспортом – это тоже интерфейсы, но они «скрыты» от нас, мы никак не участвуем в их выборе, поэтому для нас это один интерфейс «Почта России».
Что такое протокол
На этом же примере разберёмся, что же такое протокол. Вы можете отправить письмо в виде текста на русском языке или на китайском, можете нарисовать рисунок или послать аудиозапись (если это электронное письмо). Это и есть протоколы передачи – правила, с помощью которых кодируется информация, которую вы собираетесь передать. Протоколы могут быть наложены друг на друга. Например, вы можете написать письмо, пользуясь шифром, который знаете только вы и ваш друг, а символы в нём использовать из кириллицы – то есть вы как бы наложите на одни правила обмена информацией другие правила более высокого уровня. Адресат расшифрует ваше послание, если конечно он владеет этими правилами.
На конверте письма нужно указать адрес получателя – это тоже часть протокола – правила, необходимые для передачи сообщения, но не нужные для его расшифровки. Поэтому, в общем случае при передаче данных может использоваться несколько протоколов. Каждая строка адреса получателя – это директива для разных сегментов почтовой сети. Например, для почтового отделения, откуда письмо начнёт свой путь, не важны улица, дом и номер квартиры получателя, важен только город, куда нужно направить письмо.
В цифровой технике всё происходит аналогично. Когда мы отправляем сообщение пользователю в социальной сети, оно проходит огромное количество промежуточных звеньев от браузера вашего компьютера до браузера компьютера адресата – это сетевые карты, роутеры, шлюзы и т.д. Поскольку всё это оборудование связано разными интерфейсами, наше исходное сообщение «обрастает» большим количеством дополнительной информации на каждом сетевом уровне.
Заключение
Итак, в данной статье мы разобрались, что интерфейс – это способ обмена информацией, а протокол – это совокупность правил, которые необходимо соблюдать при передаче данных по выбранному интерфейсу. При обмене информацией может использоваться несколько интерфейсов, каждый из которых использует свой протокол передачи. При этом каждый протокол как бы оборачивает данные в свою коробку. Получается своеобразная «матрёшка» из данных, которая потом «разбирается» обратно до исходного сообщения, которое и получает адресат.
На этом всё! Надеемся, что было интересно! До встречи на страницах LAZY SMART .
Чтобы не пропустить новую статью, вступай в нашу группу Вконтакте , а также подписывайся на наш канал YouTube .
Источник
Интерфейсы передачи информации
То что вы видите на мониторе — интерфейс. Клавиатура с мышкой — интерфейс. И даже окно регистратуры в больнице — это тоже интерфейс.
Интерфейс (англ. interface) — общая граница между двумя функциональными объектами, требования к которой определяются стандартом; . // Wikipedia
Во встраиваемых системах чаще всего под словом «интерфейс» понимают физический блок МК отвечающий за передачу данных. Они могут быть последовательными или параллельными, синхронными или асинхронными, дифференциальными или обычными.
Параллельные и последовательные интерфейсы
Допустим нам нужно переслать 1 байт (8 бит) информации. Как это сделать? Можно выделить под каждый бит по одной ножке МК (линии), тогда для передачи потребуется 8 ножек, плюс одна, которая будет говорить принимающей стороне что передача закончена и нужно считать входной сигнал. Такой интерфейс называется параллельным (англ. parallel): группа битов передаётся одновременно за один квант времени. К таким интерфейсам относится PCI (32 линии) и её можно встретить в LCD знакогенерирующих индикаторах (например WINSATR).
Можно поступить по другому и передавать данные по одной линии, кодируя, например, 1 как высокий уровень сигнала (3,3 В), а 0 как низкий (0 В). В таком случае потребует всего одна ножка МК для передачи и одна что бы сообщать когда этот сигнал считывать. Такие интерфейсы называют последовательными (англ. serial): N битов передаётся по одному за N-квантов времени. Примером последовательного интерфейса — USART.
Параллельный интерфейс, как не сложно догадаться, быстрее в N-раз, однако требует в N-раз больше линий. В микроконтроллерах чаще всего присутствуют только последовательные интерфейсы (периферийные блоки, которые делают всё автоматически), к ним относятся SPI, I 2 C, I 2 S, CAN, USART и USB. Некоторые из них мы рассмотрим подробнее в этом курсе.
Синхронные и асинхронные интерфейсы
Примеры которые мы привели выше были синхронными, они так называются потому что используют отдельный вывод, который сообщает принимающей стороне когда считывать данные. К ним относится SPI и USART. Однако, USART (с англ. Universal Synchronous/Asynchronous Receiver/Transmitter) как не сложно догадаться может работать в асинхронном режиме. Если время передачи бита известно, то сообщать когда именно нужно считывать бит нет необходимости. Однако нужно как-то различать между собой принятые байты. С этой целью в последовательность высоких и низких уровней на шине внедряют задержки (старт и стоп-биты). Они отличаются по длительности от обычных 0 и 1 , благодаря чему всегда можно определить где начало, а где конец посылки. Асинхронная версия USART называется UART.
Кодировка битов может быть осуществлена не только как 1 — высокий уровень и 0 — низкий уровень. В интерфейсе 1-Wire 1 и 0 кодируется одновременно и низким и высоким уровнем, отличается лишь их заполнение временного отрезка. Вы увидите это дальше в курсе, когда мы будем разбираться с датчиком температуры.
В интерфейсе SPI напротив, считывание сигнала происходит только по команде тактирующей линии.
У вас наверняка возникает философский вопрос, — «Зачем есть капусту, когда есть картошка?» Может показаться, что линия с тактовым сигналом излишня. Да. Но это не всегда так. Линия с тактовым сигналом делает интерфейс независимым от стабильности тактирующих систем узлов. Если погрешность будет слишком велика, то у устройств с асинхронным интерфейсом может произойти рассогласование. В случае с синхронным, тактовый сигнал задаётся передающим устройством (не совсем корректно, но пока пусть будет так), поэтому после первого бита линию можно повесить, условно, на полчаса без каких либо последствий и продолжить передачу после этого.
Дифференциальные интерфейсы
USB является дифференциальным последовательным интерфейсом. При этом он довольно требователен к стабильности частоты и именно по этой причине в нашем устройстве не реализована на физическом уровне возможность подключения часов к компьютеру; требуется внешний высокочастотный кварцевый резонатор 1 .
Дифференциальным он называется потому, что сигнал передаётся сразу по двум линиям, причём если на одной линии выставлена 1 , то на второй должен быть выставлен 0 и наоборот.
Опять же вопрос, зачем два провода, когда можно использовать один? UART вроде хорошо работал на одной линии. На самом деле нет. UART хорошо работает на низких скоростях. При повышении частоты передачи начинают влиять паразитные ёмкости и индуктивности и сигнал просто теряется. Дифф-пара позволяет понизить напряжение, уменьшить электро-магнитное излучение, уменьшить потребление и повысить устойчивость приёма сигнала.
Выбирать дифференциальную пару, конечно, нужно не только в тех случаях, где требуется высокая скорость передачи, но и там, где «шумная» среда. В электронике автомобиля используется другой интерфейс, под названием CAN. Скорость передачи данных там не высокая, за-то она обеспечивает хороший приём в условиях жёсткой эксплуатации.
К слову, проводной интернет (Ethernet) так же построен на дифференциальной паре.
Режим работы
Некоторые интерфейсы могут поддерживать несколько режимов работы, другие напротив способны работать только в одном определённом.
Если устройство использует два канала, один для приёма и второй для передачи, и при этом обмен данными может происходить одновременно, то такой режим работы называют полным дуплексом (англ. full duplex). Ваш мобильный телефон работает в таком режиме: вы можете слушать человека и говорить ему что-либо одновременно. Если используется два канала, но передача и приём может производится только одним устройством в один момент времени, то такой режим работы называется полудуплексным (англ. half-duplex). И наконец, если используется один канал, следовательно общение может проходить только разделённое во времени, то такой режим называется симплексным (англ. simplex).
Свойство шины
Каждый интерфейс предъявляет свои требования к шине данных. В таких интерфейсах как UART может быть только два устройства (принимающее и отправляющее). При этом с точки зрения иерархии нет никакой разницы, оба устройства равнозначны. В интерфейсе SPI устройств может быть несколько, но только одно (на самом деле не всегда, но это исключение) является главным, т.е. ведущим или мастером (англ. master). Все остальные устройства являются ведомыми или подчинёнными (англ. slave). При этом SPI требует подводить к каждому устройству линию выбора (англ. chip select). Общение ведётся только с тем устройством, на линии которого присутствует сигнал активации.
Все ножки вышеописанных интерфейсов настраиваются как двухтактный выход. Но не все интерфейсы можно использовать подобным образом. Интерфейсы 1-Wire и I 2 C вместо линии выбора используют специальную команду с адресом устройства. Выгода очевидна — на линию можно повесить сколько угодно (есть ограничения) устройств, не вводя новые линии. Однако что будет, если два устройства захотят использовать шину одновременно? Непременно сложится ситуация, когда одно устройство подтянет линию к земле, а другое к питанию. Такое поведение, мягко говоря, не желательно и называется коротким замыканием (англ. short circuit).
То самое чувство, когда микросхема испустила дух, выпустила магический дым.
Во избежание таких ситуаций, интерфейс требует, что бы: линия была подтянула внешним резистором к питанию, а устройства были настроены как вход с открытым стоком. Когда устройству нужно передать 1 оно ничего не делает с линией, а когда нужно передать 0 , оно подтягивает линию к земле. В таком случае, если произойдёт коллизия и два устройства одновременно начнут работать с линией, магический дым останется внутри микросхем.
Сравнение некоторых интерфейсов
Название | Количество линий, шт | Длина линии, м | Скорость, бит\с |
---|---|---|---|
1-Wire | Simplex | до 300 м | 15,4 Кбит/с, максимум 125 Кбит/с |
SPI | Duplex | до 5 м | > 100 МГц |
I 2 C | Simplex | 3 м | 425 КБ/c |
UART | Duplex | 5 м | > 11 520 байт/с |
CAN | Simplex | до 5000 | 10 кбит/с — 1 Мбит/с |
USB 2.0 | Duplex | 5 | 60 МБ/c |
Все данные в таблице — ориентировочные, многое зависит от скорости передачи, напряжения, среды распространения и т.д.
Источник