Какой протокол обмена spi или uart у смарт карты тв и контроллером

Опубликовано: 16.04.2024

Итак что же такое интерфейс?
Вездесущая Википедия дает такой ответ: Физический (аппаратный) интерфейс — способ взаимодействия физических устройств. Чаще всего речь идёт о компьютерных портах.
Т.е. если мы попытаемся связать наш микроконтроллер с другими устройствами нам потребуется знать определенный набор правил, методов и характеристик оборудования, чтобы сделать это безболезненно. Давайте рассмотрим основные типы интерфейсов, которые мы можем встретить "на борту" микроконтроллера.

Последовательный интерфейс UART/USART

Универсальный асинхронный или универсальный синхронно/асинхронный приемопередатчик (Universal Synchronous/Asynchronous Receiver and Transmitter — UART или USART) — удобный и простой последовательный интерфейс для организации информационного канала обмена микроконтроллера с внешним миром. Способен работать в дуплексном режиме (одновременная передача и прием данных). Он поддерживает протокол стандарта RS-232, что обеспечивает возможность организации связи с персональным компьютером.
Изначально использовался в компьютерах для большинства периферийных устройств, таких как плоттер, удаленный принтер, мышь, внешний модем и т. д. До настоящего времени для последовательной связи IBM PC-совместимых компьютеров используются адаптеры с интерфейсом RS-232С (новое название EIA-232D). В современном IBM PC-совместимом компьютере может использоваться до четырех последовательных портов, имеющих логические имена соответственно COM1, COM2, COM3 и COM4. Основой последовательного адаптера является микросхема UART (Universal Asynchronous Receiver/Transmitter) — универсальный асинхронный приемопередатчик. Обычно используется микросхема UART 16550A. Она имеет 16-символьный буфер на прием и на передачу и, кроме того, может использовать несколько каналов прямого доступа в память DMA -habrahabr.ru/post/37455/ . При передаче микросхема UART преобразует параллельный код в последовательный и передает его побитно в линию, обрамляя исходную последовательность битами старта, останова и контроля. При приеме данных UART преобразует последовательный код в параллельный (разумеется, опуская служебные символы). Непременным условием правильной передачи (приема) является одинаковая скорость работы приемного и передающего UART, что обеспечивается стабильной частотой кварцевого резонатора. Основным преимуществом последовательной передачи является возможность пересылки данных на большие расстояния, как правило, не менее 30 метров. В IBM PC-совместимых персональных компьютерах из 25 сигналов, предусмотренных стандартом RS-232, используются в соответствии с EIA только 9; таким образом, в данном интерфейсе как правило применяются 9-контактные разъемы типа DB-Shell.
В современных компьютерах UART и СОМ порт уже не применяются напрямую, но они получили вторую жизнь для связи с различными нестандартными внешними устройствами в числе которых вошли и устройства на микроконтроллерах. Аппаратная часть при этом стала значительно проще для связи микроконтроллеров друг с другом подключение UART осуществляется по трём линиям: RXD – приём, TXD – передача и GND – общий (минус).


Подключать UART надо, так сказать "наоборот" RXD к TXD, а TXD к RXD как на картинке ниже:


С помощью UART также можно можно связать микроконтроллер и компьютер, но есть одна проблема: у UART интерфейса логические уровни 0 и +5 вольт, а в компьютере логические уровни в интерфейсе RS-232 могут быть от -25 до -3 вольт и от +3 до +25 вольт. Для этого применяют специальный преобразователь уровней на микросхеме MAX232:


Все сигналы UART передаются специально выбранными уровнями, обеспечивающими высокую помехоустойчивость связи. Отметим, что данные передаются в инверсном коде (логической единице соответствует низкий уровень, логическому нулю — высокий уровень. Более подробно о логических уровнях смотрите тут — www.drive2.ru/b/2528993/).
Формат передаваемых данных показан на рисунке 4. Собственно данные (5, 6, 7 или 8 бит) сопровождаются стартовым битом, битом четности и одним или двумя стоповыми битами. Получив стартовый бит, приемник выбирает из линии биты данных через определенные интервалы времени. Очень важно, чтобы тактовые частоты приемника и передатчика были одинаковыми, допустимое расхождение — не более 10%). Скорость передачи по RS-232C может выбираться из ряда: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200 бит/с.


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

Последовательный периферийный трехпроводный интерфейс SPI (Serial Peripheral Interface) предназначен для организации обмена данными между двумя устройствами. С его помощью может осуществляться обмен данными между микроконтроллером и различными устройствами, такими, как цифровые потенциометры, ЦАП/АЦП, FLASH-ПЗУ и др. С помощью этого интерфейса удобно производить обмен данными между несколькими микроконтроллерами AVR.
Кроме того, через интерфейс SPI может осуществляться программирование микроконтроллера.
Изначально он был придуман компанией Motorola, а в настоящее время используется в продукции многих производителей. Его наименование является аббревиатурой от 'Serial Peripheral Bus', что отражает его предназначение — шина для подключения внешних устройств. Шина SPI организована по принципу 'ведущий-подчиненный'. В качестве ведущего шины обычно выступает микроконтроллер, но им также может быть программируемая логика, DSP-контроллер или специализированная ИС. Подключенные к ведущему шины внешние устройства образуют подчиненных шины. В их роли выступают различного рода микросхемы, в т.ч. запоминающие устройства (EEPROM, Flash-память, SRAM), часы реального времени (RTC), АЦП/ЦАП, цифровые потенциометры, специализированные контроллеры и др.

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

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


Самое простое подключение, в котором участвуют только две микросхемы, показано на рисунке 6. Здесь, ведущий шины передает данные по линии MOSI синхронно со сгенерированным им же сигналом SCLK, а подчиненный захватывает переданные биты данных по определенным фронтам принятого сигнала синхронизации. Одновременно с этим подчиненный отправляет свою посылку данных. Представленную схему можно упростить исключением линии MISO, если используемая подчиненная ИС не предусматривает ответную передачу данных или в ней нет потребности. Одностороннюю передачу данных можно встретить у таких микросхем как ЦАП, цифровые потенциометры, программируемые усилители и драйверы. Таким образом, рассматриваемый вариант подключения подчиненной ИС требует 3 или 4 линии связи. Чтобы подчиненная ИС принимала и передавала данные, помимо наличия сигнала синхронизации, необходимо также, чтобы линия SS была переведена в низкое состояние. В противном случае, подчиненная ИС будет неактивна. Когда используется только одна внешняя ИС, может возникнуть соблазн исключения и линии SS за счет жесткой установки низкого уровня на входе выбора подчиненной микросхемы. Такое решение крайне нежелательно и может привести к сбоям или вообще невозможности передачи данных, т.к. вход выбора микросхемы служит для перевода ИС в её исходное состояние и иногда инициирует вывод первого бита данных.


При необходимости подключения к шине SPI нескольких микросхем используется либо независимое (параллельное) подключение (рис. 7), либо каскадное (последовательное) (рис. 8).

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

У меня есть общее представление о том, как все они работают, но я запутываюсь, когда вижу их очень много, и мне трудно понять, как они связаны друг с другом. Например, является ли UART подмножеством USART? В чем разница между RS232 и Serial? Каковы основные различия между всеми этими методами коммуникации: надежность, стоимость, применение, скорость, требования к оборудованию?

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

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

УАППдля универсального асинхронного приемника-передатчика является одним из наиболее часто используемых последовательных протоколов. Это почти так же старо, как и я, и очень просто. Большинство контроллеров имеют аппаратный 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.

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

UART, serial port, communications port, COM-порт, интерфейс стандарта RS-232 что это и почему так много названий?

Употребляя в своих статьях названия и определения: последовательный порт, serial port, communications port, COM-порт, интерфейс стандарта RS-232 я не был до конца уверен, что употребляю их в правильном контексте. Давайте разберёмся что, зачем, как и почему.

Прежде чем перейти к последовательному порту, чуть-чуть общей теории.

Классификация протоколов

А какие протоколы бывают?

По порядку передачи данных протоколы (шины данных) делятся на:

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

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

Параллельный протокол передачи данных (параллельная шина данных)

Передача нескольких сигналов с данными одновременно по нескольким параллельным каналам.

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

Примеры чаще всего это устаревшие шины такие как: принтерный порт (IEEE 1284/Centronics), ISA, ATA (IDE), SCSI , PCI, FSB (Front Side Bus)

По времени передачи и приему информации связь делится:

  • Симплексная связь - только передача или прием данных.
  • Полудуплексная связь прием и передача разнесены во времени. Сначала прием, а затем передача или наоборот.
  • Дуплекс - одновременно прием и передача.

Перейдем сразу к последовательному протоколу, он делится на:

  • Асинхронные
  • Синхронные

Асинхронный протокол - данные передаются без внешнего тактирующего устройства. Данные можно передавать по двум проводам прием/передача. Но нужны дополнительные усилия для синхронизации (пример UART, RS-232, 1-Wire)

Синхронный протокол - данные синхронизированы с тактирующим устройством (примеры SPI и I2C)

И у меня вопрос к читателям, а протокол USB какой синхронный или асинхронный?

UART

Universal Asynchronous Receiver-Transmitter (UART), Универсальный асинхронный приёмопередатчик (УАПП)

История его начинается в 19 веке, тогда возникает необходимость передавать и кодировать телеграфные сообщения. Для передачи телеграфных сообщений Жан Морис Эмиль Бодо изобретает свой код для телеграфа он был 5- битным - отсюда код Бодо и скорость в БОДах, это был золотой "стимпанковский" 1870 год. Проходит всего ничего, 90 лет и к 60-м годам прошлого века появились компьютеры и кодировка ASCII сначала семи битная. А в начале 60-х появляется 8-битная ASCII. В 1970х годах цветет и пахнет микроэлектроника, начинается бум микросхем появляется микросхема UART WD1402A (1971г), а затем 8250. В 90-е был удалось прикрутить буфер (FIFO) к UART и скорость и удобство пользование интерфейсом возрастают.

В 60-70годах в нашей стране не принято пользоваться англоязычными терминами поэтому UART получает свое, русское название - УАПП (Универсальный асинхронный приёмопередатчик) как и все остальные названия, например НГМД и так далее. Хорошее время было, все кратко и понятно, например скажешь УВК-1 и сразу всем все понятно, разговор идет о устройстве ввода координатном или о мышке.

Что такое UART

UART это физическая реализация интерфейса в виде логической схемы (микросхемы) которая обеспечивает прием и передачу информация в последовательном виде, в пределах одного чипа или одного устройства, на короткие дистанции. Он непригоден для приема, передачи данных на "длинные дистанции". Причем понятие длинные и короткие взяты в кавычки и это не зря. Так как все в мире относительно и в данном случае то же, но попробуем разобраться, что за такие "длинные и короткие дистанции". Когда микроконтроллеры и другие низкоуровневые ИС взаимодействуют между собой по последовательному протоколу, они делают это на уровне TTL (транзисторно-транзисторная логика). Последовательные сигналы TTL живут между диапазоном напряжения питания микроконтроллера - обычно от 0 до 5.0 вольт (так было раньше, это уже классика) ну или до 3,3 вольт (так сейчас или еще меньше до 1,8 и 1,6 вольт КМОП) Сигнал такого диапазона да еще и не защищенный передать далеко не получится иногда проблемы возникают тут сразу же, при передачи от одной микросхемы до другой, вспомним микросхемы серии К(К155, К1533, К153) из недостатков которых: высокие требования к напряжению питания, отклонение не более 0,5 В, низкая помехоустойчивость, высокие требование в правильной разводки шины земли. Так вот передать далеко эти сигналы не получится, а что делать? Самое простое тупо усилить - поднять напряжение питания так родился интерфейс RS-232

Интерфейс RS-232

(Recommended Standard 232, рекомендованный стандарт RS-232, EIA232)

Это стандарт физического уровня, надстройка над UART для приема передачи данных другим устройствам, т. е. на "длинные дистанции

В далекие годы 60 годы прошлого века (1962 год) особо не стали заворачивается с обработками сигнала, да и мощностей подходящих не было, а потом, видимо, вспомнили телеграф.

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

Электрический принцип работы RS-232

Логический нуль RS-232 лежит в пределе от +3 до +12 вольт, а единица от -3 до -12, соответственно. Между -3 и +3 вольт зона ничего, не нуля и не единицы, зона неопределённости. Т. е. разработчики стандарта инвертировали сигнал, сделали отрицательное напряжение для единицы и повысили и понизили напряжение до -12, +12вольт (на самом деле до -15, +15 вольт, а иногда и до 25 вольт) Пишут даже, что в блоке питания компьютера именно поэтому и появилась -12 вольт. Хорошо же они поработали над стандартом для которого пришлось модифицировать и блок питания, сейчас бы такая фишка не прошла, хотя.

Максимальная длинна кабеля по стандарту 20 метров, но нормально прием идет до 15 метров на скорости 19200 бод, но можно передать и на 900 метров снижая скорость (помните трансатлантический кабель) до 2400бод. А вообще максимальная скорость передачи составляет 115 200 бод

Это единица измерения скорости передачи символов (символьной скорости) или скорости модуляции в символах в секунду или импульсах в секунду.

С этими БОДами сплошная путаница, обратите внимание на определение, сколько ИЛИ, давайте разбираться.

Символьная скорость

Сначала БОД придумали для того чтобы определить сколько символов, букв можно передать за секунду по телетайпу, а кодировка тогда была 5 битная. Кодировка двоичная, импульс - единица, нет импульса - нолик. Все логично и понятно.

Импульсах в секунду

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

Квадратурная амплитудная модуляция (КАМд)

Но потом все еще больше запуталось, потому как в одном импульсе с помощью, например квадратурной амплитудной модуляции (КАМд), можно зашифровать не один бит, а например до 16 бит.

В общем все в конце концов вообще перепуталось!

Иногда в бодах выражают полную ёмкость канала.

Полная ёмкость канала = служебная информация в бит/c + эффективная информация в бит/c.

Преобразование UART в RS-232

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

MAX 3232

MAX 3232 это MAX 232, но работает в диапазоне напряжений питания от 3 до 5.5 вольт

Физическая реализация

Разъем представлен Д-образными разъёмами 9- и 25-контактные, (DB-9 и DB-25), были и другие, но вымерли как динозавры, нужно сказать что и DB-25 то же практически вымер, остался только DB-9 и он то же вымирает, но остается в промышленном оборудовании. В бытовом использовании, да и в промышленном кстати то же все эти порты успешно вытесняются интерфейсом USB.

Какие еще есть стандарты?

Самые распространённые это:

  • RS-485 стандарт автоматизации промышленных сетей
  • LIN интерфейс (K-Line.) это автомобильная сеть

Что за названия serial port, communications port, COM-порт и так далее?

А это все сленговые названия интерфейса RS-232

Последовательный порт или по английскому serial port, Сommunications port или сокращенно COM-порт, или интерфейс связи, а в то время особенно других то и не было. Все это синонимы интерфейса RS-232

Название COM - порт идет еще и с DOS, так там обозначался п оследовательный порт.

USB (Universal Serial Bus — «универсальная последовательная шина») — последовательный интерфейс для подключения периферийных устройств. Появился в 1995 года, спустя 33 года после RS-232

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

Преобразователь UART-USB на базе микросхем:

  • cp2102 (cp2103)
  • pl2303
  • CH340
  • FT232R

Но самые распространённые:

  • CH340
  • CP2102

UART, COM-порт, RS-232 что это и как они связаны?

CH340 используется очень широко, например в конверторах о них в статьях:

Выводы

Правильно употреблять выражение преобразователь (конвертер, адаптер) UART-USB. Так как термины: serial port, communications port, COM-порт, последовательный порт больше относятся к интерфейсу стандарта RS-232 и являются синонимами.

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

UART, COM-порт, RS-232 что это и как они связаны?

Связанные статьи:

Конвертеры UART - USB

Подписывайтесь на наш канал TehnoZet-2 , будет интересно! Мы только развиваемся! Понравилась статья, хотите продолжения - ставьте лайк, жмите палец вверх!

цифровая электроника вычислительная техника встраиваемые системы

  • Вычислительная техника
    • Микроконтроллеры микропроцессоры
    • ПЛИС
    • Мини-ПК
  • Силовая электроника
  • Датчики
  • Интерфейсы
  • Теория
    • Программирование
    • ТАУ и ЦОС
  • Перспективные технологии
    • 3D печать
    • Робототехника
    • Искусственный интеллект
    • Криптовалюты
Чтение RSS

Краткий обзор популярных последовательных интерфейсов (SPI, I2C, UART/USART)

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

Разница между последовательной и параллельной связью

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

Разница между последовательной и параллельной связью

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

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

SPI (Serial Peripheral Interface)

Это протокол последовательной связи синхронного типа, который состоит из двух линий данных (MOSI и MISO), одной тактовой линии (SCK) и линии выбора подчиненных (SS).

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

Master (ведущий) - устройство, которое обеспечивает синхронизацию

Slave (ведомый) - устройство, отличное от мастера, использующее тактирование ведущего для связи

MOSI - Master Out Slave In (линия, по которой мастер отправляет данные своим подчиненным)

MISO - Master In Slave Out (линия, по которой ведомые передают ведомому данные в ответ)

SCK – линия тактирования (предоставляется ведущим устройством)

SS - Slave Select (линия, используемая для выбора ведомого устройства, к которому ведущий хочет установить связь)

В случае с SPI в любой момент времени может быть только одно ведущее устройство и несколько других ведомых, которые отвечают только на вызов ведущего. Вся связь обрабатывается самим ведущим; ни один подчиненный не может отправлять данные по своей воле. Ведущий отправляет данные через MOSI, а ведомые отвечают через линию MISO. Во всем процессе SCK (последовательное тактирование) играет очень важную роль, каждое подчиненное устройство зависит от этих часов, чтобы читать данные из MOSI и отвечать через MISO. SS (выбор ведомого) используется для того, чтобы конкретное подчиненное устройство проснулось, с кем мастер хочет общаться. Ниже представлена иллюстрация принципа подключения посредством интерфейса SPI:

SPI

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

SPDR (регистр данных SPI) используется для хранения одного байта данных, который должен быть передан или получен.

SPSR (регистр состояния SPI) содержит биты состояния, участвующие в передаче SPI.

SPCR (регистр управления SPI) содержит контрольные биты, участвующие в передаче SPI.

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

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

I2C (Inter-Integrated Circuit) или двухпроводный интерфейс

Другим очень полезным синхронным протоколом последовательной связи является протокол I2C или Inter-Integrated Circuit. В отличие от SPI, I2C использует только два провода для всего процесса, возможно, поэтому он также известен как протокол двухпроводного интерфейса (TWI). Эти два провода представляют собой SDA (последовательные данные) и SCL (последовательное тактирование). Протокол I2C может поддерживать несколько подчиненных устройств, но в отличие от SPI, который поддерживает только одно ведущее устройство, I2C может также поддерживать несколько мастер-устройств. Каждое устройство отправляет / принимает данные, используя только один провод, который является SDA. SCL поддерживает синхронизацию между устройствами через общую систему тактирования, которая реализуется активным ведущим устройством.

I2C

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

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

UART / USART

UART означает универсальный асинхронный приемник и передатчик, а USART – универсальный синхронный и асинхронный приемник и передатчик. Разница между ними заключается в том, что UART выполняет только асинхронную последовательную связь, в то время как USART может выполнять как синхронный, так и асинхронный последовательный коммуникационный процесс.

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

Интерфейс UART/USART имеет большое ограничение, связанное с тем, что только два устройства могут обмениваться данными с помощью этого протокола одновременно. Линия Tx одного устройства передает данные на лннию Rx другого устройства и аналогично Tx последнего передает данные в Rx первого устройства. Так происходит обмен данными.

UART / USART

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

UART / USART

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

Выводы сравнения интерфейсов

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

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

Большинство разработчиков встраиваемых систем знают, что такое UART: Universal Asynchronous Receiver/Transmitter (универсальный асинхронный приемник/передатчик). Это периферийное устройство микроконтроллера, преобразующее входящие и исходящие байты в последовательный поток данных. Стартовый бит инициирует начало передачи потока битов, а стоповый бит (или два) завершает слово данных. Кроме того, для выявления ошибок при передаче данных UART может вставлять в поток контрольный бит. На Рисунке 1 показан стандартный пример того, что ожидают увидеть инженеры при передаче данных через UART.

USART – Universal Synchronous/Asynchronous Receiver/Transmitter (универсальный синхронный /асинхронный приемник/передатчик) – ‘это периферийное устройство микроконтроллера, преобразующее входящие и исходящие байты в последовательный поток данных. Хм. Определение USART ничем не отличается от UART, за исключением одного добавленного слова «синхронный». Но должны же быть какие-то более значимые различия? Иначе USART был бы известен просто как UART.

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

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

Другое важное отличие USART от UART заключается в количестве поддерживаемых периферийных протоколов. UART прост, и может предложить лишь небольшие вариации базового формата – количество стоповых бит и способ контроля ошибок (по четности или нечетности). USART намного сложнее и способен формировать потоки данных, совместимые со многими стандартными протоколами; IrDA, LIN, Smart Card, Driver Enable для RS-485 и Modbus – лишь несколько из них. При этом USART может, как и UART, работать в асинхронном режиме, что позволяет ему генерировать точно такие же типы последовательных данных, какие показаны на Рисунке 1.

Рисунок 1. Поток последовательных данных UART.

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

Так можно ли говорить, что USART и UART – это одно и тоже? Технически правильный ответ – «нет». USART, как правило, имеет набор функций, расширенный по сравнению с UART, и способен обрабатывать синхронизированные потоки данных на скоростях, во много раз превышающих скорости UART. Действительно, USART может выполнять все функции UART, и, возможно, поэтому во многих приложениях разработчики, имея в руках всю мощь USART, используют их как простые UART, игнорируя преимущества синхронного тактирования. Неудивительно, что очень многие используют эти термины так, будто они являются синонимами.

Перевод: AlexAAN по заказу РадиоЛоцман

Читайте также: