Лекция о коммуникационных интерфейсах UART и SPI: разбираются термины интерфейс, протокол и шина, аппаратная часть, электрическое соединение, логика передачи данных, стартовый и стоповый биты, бит чётности, а также интерфейс SPI, его сигналы, топологии подключения и параметры синхронизации. В конце показана реализация SPI в Arduino.
- 00:07 Различие терминов интерфейс, протокол и шина
- 05:23 Аппаратный интерфейс: распиновка, шина, топология
- 13:38 Электрическое соединение устройств по UART
- 18:37 Стартовый и стоповый биты в UART
- 25:31 Бит чётности в UART
- 32:06 Интерфейс SPI: назначение и подключение периферии
- 33:46 Электрические сигналы и роли интерфейса SPI
- 35:41 Топологии подключения устройств SPI: звезда и кольцо
- 45:48 Параметры синхронизации CPOL и CPHA
- 50:10 Реализация SPI в Arduino и стандарт
- UART
- SPI
Кому полезно: Инженерам АСУ ТП и программистам ПЛК, изучающим коммуникационные интерфейсы.
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:02 Ну что, всех приветствую на нашей сегодняшней лекции? Тема занятий у нас коммуникационные интерфейсы и протоколы. Мы с вами уже касались как минимум протоколов на предыдущих лекциях и практических занятиях разбирались с вами. Такой протокол, как Юдиби, да и такой протокол, как аж степи, но комбинационных. Интерфейсов на лекции мы не разбирали, хотя на практике опять же. Я думаю, мы работали, да и в рамках проекта своего вы поработаете с несколькими коммуникационными интерферциями как минимум.
0:41 Прежде чем начнем разбирать, какие то конкретные стандарты, давайте определимся с терминологией, а именно чем все таки интерфейс отличается от протокола. А еще и от термина шина, потому что, когда мы говорим про взаимодействие, про. Взаимодействие посетили просто про передачу данных между 2 устройствами оказывается так, что. Мы используем и термин интерфейс, и термин протокол, и термин шина, будто бы они все очень близкие по значению. Название то разные, значит, есть и какие то разные понятия, которые. За ними кроются, ну действительно, если вдруг вам кто то задаст вопрос, чем отличается интерфейс от протокола. Да то вы можете сослаться на уже известную нам модельовый сайт, опыт. Системы Тарконекшн моду, которая в своем стандарте описывает не только уровни сетевого взаимодействия 2 узлов, начиная от физического прикладного, но и термины протокол и термин. Интерфейс соответственно в соответствии с моделью оясай протокол. Он у меня обозначен синей стрелочкой. Это взаимодействие горизонтальное, то есть одноименных уровней на разных узлах.
2:09 Определил это на примере, мы с вами разбирали протоколы, что теперь и как вы помните. Например, если мы хотим по протоколу, что теперь записать базу данных, какую то информацию не знаю, зарегистрировать нового пользователя, мы можем отправить пост с собой. На наш сервер с необходимыми данными. И Сервер потом в качестве ответа должен вернуть нам от 200. Вот то, что я описала, это есть маленькая часть протокола, которая описывает, как мы на прикладном уровне без учета всех остальных. У нас все интересует, что идет на транспортном, что происходит на Сити волны. Когда люди более на физическом, мы описали, что происходит, каким образом происходит взаимодействие четко на прикладном уровне 2 узлов. Это протокол, а интерфейс это сетевое, это просто взаимодействие между.
3:09 Разными уровнями от 2 зла, то то есть такие услуги, нам должен предоставить физический уровень канальным для того, чтобы извлечь данные для вот этого физического уровня на канале и выполнить уже функции, которые тоже выполнять канальный уровень. Все было хорошо, да если бы в реальности так термины использовались. Но особенно когда мы говорим про контроллеры и взаимодействие 2 устройств оказывается, что термин интерфейс и протокол чуть ли не взаимозаменяемый начнете вы. Гуглить, чтобы про стандарт КАН для взаимодействия устройств, обмена данными увидите, что кто то называет Кан протокол, кто то говорит Кан Интерфейс, кто то говорит Кан Шина. И все это в рамках 1 и того же рассказа про Канн Стандарт.
4:08 Более того. Даже те, кто работают в этой области, до каким специалисты в области там всего взаимодействия и просто работать с контроллерами, тоже эти термины часто взаимозаменяют. Нельзя сказать, что они полностью взаимозаменяемы, потому что все таки они отражают чаще всего, имеет некоторые оттенки интерфейс. Он зачастую больше связан с аппаратной. Частью протокола больше с оптовой частью про шину я ничего не сказала. Шина, ну опять же не всегда, но чаще всего, когда прямо обязательно указывают слово Шина, говорят, что.
4:51 Под шины имеется ввиду электрика электрическое соединение 1 устройства с другим. Да, то есть непосредственно сам проводник, провод вот это шина. Поэтому для дальнейшего обсуждения стандарта нам с вами надо договориться, что мы будем иметь ввиду под интерфейсом и под протоколом. И вы там, если у вас, когда мы теперь? же будут спрашивать различия, можете всегда ссылаться на моделью и сами, но обязательно подчеркнем, что вообще эти термины так или иначе бывают заменяют друг друга.
5:23 Итак, начнем с интерфейса аппаратный интерфейс. Почему аппарат чаще всего, когда подчеркнуто говорят про интерфейс до КН интерфейс про аппаратную часть, что в себя будет включать аппаратную часть? Ну конечно, распиновку то есть, если мы хотим подключить 1 устройство, а устройство, а к устройству б то. Сколько нам нужно задействовать пинов, что это за пины, за что они отвечают? Это указано в стандарте, должно быть дальше шины. То есть какой проводник используется, да каким образом они соединены, какой то пологией они? Соединяются устройства, да, может быть, не не 1 устройство с другим соединяем, не точка, точка. Да, а уже делом сеть устройств какой то пологий это будет сидеть звезда, кольцо или так далее, это все на уровне аппаратов. Обсуждается дальше, какие разъемы, но это реже, но тоже может быть указано в интерфейсе, на что используется какой то конкретный разъем дальше. Когда говорит про интерфейс и как это про аппаратный интерфейс не? Могу говорить какая то про чип, который напаен на вашей вкладочной плате, да и говорит. У нас есть на плате Кан интерфейс. Это значит, что там есть какая то чин, который отвечает с экраном, с водистой поршни Канда и.
6:37 Таким образом мы. Указываем именно на железку. Также аппарат интерфейс включает в себя и логику передачи данных, но это имя, логика передачи данных. Не на уровне самих данных, а на уровне того, какие у нас чуваки, промежутки времени. Мы должны считывать эти данные приемником, да или с какой скоростью мы должны передавать эти данные нибудь тайп слоты. Как в в стандарте Ванваер, да то есть сколько времени вы должны держать логическую единицу или за что отвечает на восходящий нисходящий фронт? То есть вот это будет отражено тоже в описании аппаратного? Интерфейса и в логике передачи по этому парад интерфейса сюда же могут идти ограничения, это задержки до какие необходимо. Это сколько нам нужно выдерживать эту логическую единицу, чтобы она должна была? Считана или сколько нам нужно подождать, прежде чем отправить эту логическую единицу уровне сигнала, что у нас будет отвечать за логическую единицу? И пусть опять вольфовическая единица земля, это 0.
7:46 Где же может быть указано количество максимально подключенных устройств, которое может быть по этому аппаратному интерфейсу и так далее? 2 Протокол здесь уже речь идет это. Резервный на данный, то есть мы осуществляем взаимодействие 1 узла с другим 1 устройства другим. И какой ситакси сообщение или какая структура? Пакета, структура пакета, то есть у нас есть пакет, пакет состоит из Байт. Или мы, например, говорим, что вот в 1 байте 1 2 вида означают.
8:23 Номер сообщения. И газификатор какой либо типа сообщения. Следующий Байт отвечает за временную метку Таймс. Т какой момент был пакет, да еще раз идет столько, то там полезных бит любая и тогда, то есть это структура пакетов. Структура Багет включает себя список полей. Да что за что они отвечают, какие они могут быть? Сколько у нас там этих типов сообщений? Может быть, какой тип, каким числом обозначается? Да куда это число записывается в нашей структуре пакетов? Какие могут быть операции за опять же, какое поле отвечает, за какую операцию?
9:05 Какие могут быть ошибки при взаимодействии, какой алгоритм отмена? Да, то есть, кстати, алгоритм обмена он и в аппаратном интерфейсе бывает в аппаратном интерфейсе. У нас может, например, что для того, чтобы передать данные, 1 должен там на какую то шину. Высокий уровень выставить мастер, но и здесь тоже алгоритм обмена, но здесь алгоритм обмена идет именно уже на уровне данных, то есть не. Если нам прислали какое то сообщение, то мы должны ответить там таким сообщением, с каким то статусом. Если другое, то другие или в начале, прежде чем принять сообщение, мы должны принять сообщение. Приветствие и на ответ этого сообщения приветствия тоже отправить сообщение приветствие. Вот чувствуете нюанс различия между протоколом, да и аппарат интерфейсом. Вот он есть, да и когда вы.
9:56 В речи или в какой то статье говорят либо про протоколы, про интерфейс. Именно нужно касаться тех самых нюансов, связано связано ли это с данными или ближе это к аппаратной части, да? Так ну а теперь переходим к конкретике, рассмотрим мы с вами сегодня на лекции 2 стандарта Юарт и Стандарт Эспиай. Начнем стандарты Юарт Юарт расшифровывается как универсальный асинхронный приемопередатчик. То есть Юниверсал Асинхрониз ресивер трансмиттер? Юарт используется и присутствует практически во всех контроллерах. Вот есть у нас микроконтроллер ЕСП, 32 в нем есть Арт, есть у нас Ардуинка на базе отмене какой нибудь там тоже есть Юарт в составе.
10:51 Практически во всех, которые он присутствует, значит, на примере здесь у меня распиновка для сп 30 23 микроконтроллера, да и вот пины. 28:27 Обозначенные зеленым кружочком они как раз отвечают за Юарт. Если вы посмотрите название у них, ну ее 0 да это типа, ну, Юарт.
11:11 Юарт, сокращенно, так сказать, и дальше, т. Икс. Эр Икс, это трансмиттер ресивер приемник, передатчик 2 пена. Кроме того, что это может быть в составе, да то есть на 1 кристалле с основным микроконтроллером. Это может быть отдельная микросхема, которая стоит, например, на. 1 Отладочной плате с микроконтроллером, но является отдельной микросхемой, разведенной на этой плате. Значит, значит, вот здесь такой пример есть, это ордынки Уна. Да и у них вот есть основной контроллер, вот он вот здесь вот находится или на этой ордынке. Вот здесь это типа, она ближе к оригинальной, другая ближе к китайской. Да, а край таким представлен как раз Чип Юар. То здесь это от Мега, а здесь сея, 440 на который мы так любим ставить драйвер, когда 1 раз подключаем Мордовику.
12:12 В данном случае у нас эти чипы выступают как мост Юсби сериал Юсби Юарт на самом деле, то есть мы. Когда с вами программировали сп 32 да, мы подключали их ЮСБ проводом к компьютеру. И каким то логическим образом, например, получали с него данные отладочные? Или могли что то отправить вот как раз благодаря этому чипу? Это конвертор ЮСБ ЮАР и внутри него, естественно, вот есть он сам собой является Юард.
12:46 Чипом. Вместе с этим, если мы посмотрим внимательно на надписи около пинов ордынки, мы увидим, что здесь есть, например, на нулевом и 1 пин Эр Икс и Т ИКС. Это непосредственно с контроллер уже напрямую разведены пины. Юарда сюда, на гребенку, да то есть еще 1 ЮАР здесь есть. Также Юард может быть не в составе какой нибудь ардуги с микроконтроллером как отдельное устройство, которое является конвертом. Да вы с 1 стороны вставляете это в компьютер. С другой стороны, у вас есть несколько пинов, которым вы можете уже подсоединиться к контроллеру с помощью провода. На вот эти, например, тейксерикс завести на гребенке блин.
13:38 Так что так? С тем, как это может выглядеть в реальности, мы посмотрели. Давайте посмотрим на электрическое соединение. Вот, допустим, у нас есть устройство, как он быть, а Сью Ар там 1 и устройство Бэта Сью Ар там, 2 да и для того, чтобы нам. Наладить как то обмен данными между ними мы должны подключить как минимум 2 провода и посмотрите, как они. Интересно, подключается, то есть у нас есть на устройстве, а с ее Артом 1 Пин т Икс. Это сокращение от Трансивер, да то есть.
14:14 Передатчик короче, да? И Эр Икс это ресивер соответственно, если мы хотим передавать от устройства, а с ЮАР там 1 данные к устройству в с юртом 2 мы должны. Пинта Икс подсоединить к пину Эр Икс 2 устройства до устройства Б. Если мы хотим с устройством, а принимать то, что нам присылает. Устройство б то мы должны к пину Эр Икс, устройство, а подсоединить ТЭ Икс вместе. Вместе с этим здесь есть еще 1 соединение внизу, я его не подписала. Ну, я думаю, вы уже догадались, что обязательно для того, чтобы вообще обмениваться данными, да и понимать, что Нолик это нолик и ничка единичка. У нас должна быть согласованность. Уровней для того, чтобы уровни согласовом все не было, нам нужно обязательно объединить земли 2 устройств, которые обмениваются данными по поэтому вот это. Вот внизу провод это Гэнды считается, что до земля, объединенная между 2 устройств.
15:15 Из логики такое подключение, мы с вами можем утверждать, что мы можем одновременно передавать. Данные и читать данные допуск у нас есть 2 канала Трансивер и и все это называется Дуплекс или полный дуплекс. Вообще бывает сиблекс, просто дуплекс и полудуплекс Сибэксперс вызывает то, что мы можем, когда соединяем 2 устройства, придавать только в 1. направлении данные полудуплекс обозначает, что мы можем в 1 момент времени передавать данные либо это устройство, а устройство б либо от устройства. Б устройства, но никогда одновременно полный дуплекс или просто дуплекс означает то, что мы можем одновременно от устройства, а передавать. Данные какие то свои устройства б, а с устройства Бэй передавать какие то свои данные устройства, а и интерфейс Йорк нам позволяет выполнять.
16:15 Взаимодействие по полному дуплексу. Теперь рассмотрим следующий момент, вот мы соединили с вами 2 устройства из нас устройства. По интерфейсу Юарт, да и устройство, а отправляет какие то данные отправляет Нолики единички. Ну 1 что нужно сказать, что по стандарту я у нас? Единичка, это логическая единичка, это высокий уровень и питания, схемы. Да, то есть для п 32 это будет 3 и 3 Вольта для ордыки, это будет 5 вольт Нолик. Соответственно, земля, и вот у нас устройство начинает передавать, что у нас тут 8 бит, которые чередуются единичкой Нолик, устройство б как устройство. Б должно понять, в какой момент вообще начать считывать эти данные, с какой каким периодом, с какой скоростью до как не допустить того, что.
17:16 Что он считает за 1 и тот же вид 2 раза вы скажете, но отчета сложного? Мы берем фронт, да и вот когда у нас, допустим, восходящий фронт мы считываем. Но в таком случае, да и в Нисходящих тоже считываем в таком случае, если у нас. Например, вы передавалась несколько единичек подряд, то мы бы их пропустили и считали вместо 5 единичек 1. Если бы руководствовались только фронтом, выходящим или исходящим, тут явно нужно действовать немножко по другому, так вот. Как это сделать для этого в стандарте Юарт? Предусмотрены метки синхронизации, вы скажете на как же на же ЮАР? Это асинхронный придатчик, откуда здесь синхронизация? Но дело в том, что, когда говорят про Асинхронность на самом деле. Имеется ввиду, что нет отдельного пина, который называется клок, на котором передается какой то тактовый сигнал, по которому происходит отдельная синхронизация. То есть нет отдельного вывода для этой синхронизации синхронизация?
18:20 В нашем случае на той. На той же ширине, на которой передаются данные на том же проводе. Но действительно, как это сделать для этого Стандартер предлагает нам использовать? 2 Метки синхронизации, это стартовый вид и стоповый вид. Как происходит тогда в этом случае взаимодействие, мы хотим передать 8 бит 1. 1 0 1 0 1 0 Которые, да? Когда контроллер включается изначальная? Привод передачи Кьюар находится в состоянии Айдл, то есть состояние простое.
19:04 Простой в смысле, как у стока простой. И По стандарту состояние простое, это логическая единица. 5 Вот там или 3 3 если про сп говорим после того, как не знаю. Вы у себя в прошивке, где то решаете отправить данные, да и пишите там, в Серил, что то какие то данные полезные. У нас в начале вместо полезных данных отправляется стартовый вид, стартовый вид всегда нулевой. Да вот он здесь представлен на временной диаграмме. Отправляется стартовый вид, после чего уже отправляются наши полезные данные. Это могут быть и нолики, единички подряд, идущие или чередующиеся. Да ну в зависимости от того, что вы там передаем. Передача всегда по стандарту Юард осуществляется С.
19:57 Как это сказать с младшего бита, да вот здесь написано ЛСБИ, это? Лист сильнификон Пит, то есть наименьший зачище бит, то есть младший, бить в нашем случае, а заканчивается соответственно старшим. После того как мы передали полезные данные, у нас обязательно в конце идет стоп, выбит стоп, выбит это уже в отличии. Стартового вида единичный, да они нулевой, то есть это логическая единица. После чего мы либо продолжаем передачу данных следующего пакета до следующий байт, либо переходим снова в режим простоя и другие, в котором мы просто держим значение ношения.
20:37 Логической единицы. И, кажется, да вроде бы все просто. Мы с вами благодаря стартов и стоп в Битом можем детектировать начало и конец нашего пакета до обычно в ярки передается. По байкам, да то есть начало передачи Байты, конец передачи Байта, но это все еще не решает полностью проблему. Да, мы редактировали с нами начало и. Конец, но как правильно детектировать единички нолики? Да, то есть, чтобы сделать это в 1 момент времени, они так, чтобы 2 раза считать 1 и ту же единичку. И но действительно в стандарте есть еще 1 пункт, который говорит о том, что на приемнике или передатчики должна быть настроена 1 скорость от именно.
21:26 И благодаря этой скорости мы уже будем знать период, с которым надо считывать. Биты, после того как вы редактировали начало передачи посылки. Есть целый ряд стандартных скоростей, мы с вами наверняка помните, использовали обычно на скорость 9600 еще популярное. 115200 Но есть и другие из этого ряда, значит. Таким образом, мы с вами детектировали здесь на картинке. Давайте посмотрим, у нас был контроль в режиме простоя, потом мы решили, что то отправлять 1 нас отправился. Стартовый бит наш считыватель заметил, что наш пришел стартовый вид и после. Того, что стартовый вид он через период, т. Почему ты, откуда он знает, у него настроено, что 9600 и у этого начинает считывать бит? 1 Битва бит, 3 би 4 бит, 5 Джи, 7 8 и каждый раз попадает в нужный вид. Они считывают 1 и тот же несколько раз.
22:32 Ну, здесь еще кроме. Самой логики передачи и считывания данных нужно сказать, что скорость обозначается в Юарте в водах. И как то я в прошлый раз к на лабораториях не застряла. Что ж такое, Бот, давайте. Рассмотрим это подробнее во 1. Бит в секунду, да это. Можно сказать, что 9600 будет это то же самое, что 9600 бить в секунду. Но нужно понимать, что речь идет о всех битах, а не только о битых полезных данных, то есть. 9600 И бить в секунду, включать в себя стартовые и стоповые биты отсюда и название МОД. Это количество изменений информационного параметра в секунду и информационный параметр. Это вот наш лояль, единица, логический, 0 и мы его меняем, а то, что 1 часть это меткие. Синхронизации другая, это все таки те полезные данные, которые мы хотим передать. Да, это в этой скорости не учитывается таким образом, да? Давайте поупражняемся, давайте представим, что у нас есть задание. За какое время должна передаться строка мяу на скорости 9600 в год?
23:48 Для этого нам нужно сделать совсем простые вычисления. Как мы уже выяснили, с вами период будет тогда 1 деленное на скорость в водах. Это на улице выходная Миллисекунда в строке мяу. У нас 1 2 3 4 символа, то есть полезных данных 4. 1 Всего это 1 Байт, тоже известный факт того. Мы хотим передать 4 Байта полезных данных и на каждый байт по стандарту ЮАР у нас. Приходится 1 стартовый бит и 1 стоповый бит, итого в целом 8 бит. Вот этих веток синхронизации 8 бит, это 1 Байт и того получаем 4 Байта. Полезных данных + еще 1 байт данных с ветками, синхронизации и того в сумме. Мы хотим передать 5 Байт соответственно, если мы хотим передать 5 Байт, мы умножаем на т, который мы учли и скорости в воду и получаем, что строчку мяу мы передадим за 0 она5 Миллисекунды.
24:55 Вот думаю, да из такой задачки должно уже быть понятно, чем под отличается от. Бит в секунду, а если вам скажут, за сколько отправится файл размером в? 10 Бит, то вы должны учитывать, что кроме этих 10 бит будет отправляться вот здесь. Бит Файн, конечно, страны здесь кило Пит. Давайте что, кроме этих 10 килобит, будет отправляться еще меткие сигнализации, которые должны быть учитывать в этой скорости. Учтены так, ну и последнее то, что касается юрта, это еще вид отчетности он не обязателен. Да, то есть, если старту стоп выбита не обязательно, должны быть в посылке. То печатности можете использоваться в таком случае, когда вы настраиваете взаимодействие? Вы должны указать, что, пожалуйста, использует такую то скорость и.
25:58 Вид четности тоже использую или не использую по умолчанию, там не используется мечетности. А если вы хотите, чтобы он использовался, то нужно это к параметрам указать. И на приемнике, и на передатчике. Тогда у нас в посылке появляется еще 1 не полезный с точки зрения полезностных данных. Вид, который обозначается ПБ или паритебит.
26:22 Для чего он нужен нужен, он для следующей ситуации, для того чтобы детектировать, что сообщение пришлось искажением. Не знаю, была какая то помеха, не знаю, где то у нас там провод отошел и вместо. 1 Посылки, которые вы хотели продавать, пришла немножко другая. Вот мы в примере в данном на этом слайде отправляем буковку д букву Демы в соответствии с таблицей Аске символов перевели в биты.
26:50 Сформировали вот здесь, вот из меня временная диаграмма, и, как вы помните, в начале отправляем младший по значимости бит до 0. Потом следующий следующий в конце у нас будет старший бит, вот этот 0 единичка уже. 0 0 1 А ну и здесь еще 11234-56-78. Отправляем эти данные и. Устройство, которое отправляет, должно заполнить еще обид, который связан с четностью. Он может поставить туда либо Нолик, либо единичку, как он понимает, что его поставить, он берет полезные. Данные и смотрит, сколько у него единичек у этих полезных данных в битах. В данном случае у нас здесь с вами 2 единички 1,+, 1 грамм. 2 2 Это четное число, поэтому в бит четности мы ставим 0.
27:49 И это сообщение радостно уходит на устройство б, устройство б считывает сообщение. Но поскольку сообщение было искажено во время передачи по неизвестным нам причинам, у нас 1 из видов вместо нулевого оказался единичкой, вот у меня представлен красный. И устройство б может это заметить, каким образом, получив это сообщение, он тоже рассчитывает бельчонности до вычисляет. Понимает, что у него 1 2 3 единички все это вместе является тройкой тройка. Это нечетное число, значит, бить четности должен быть единицы. Он считывает, какой же печатности прислала ему устройство. А понимаешь, что там было 0 0 нас не? Ранее единицы, и, значит, посылка была искажена, ну и тут уже может быть разное поведение. Ее можно откинуть, ну или запросить повторную отправку, но это уже не в стандарте. Юрт повторную отправку не запрашивают, его просто откидывают.
28:48 Ну либо есть опять же некоторые стандарты, в котором отправляется не 1 без четности, а много. Да, то есть там несколько печатать, и тогда можно попробовать по определенному алгоритму. Вычислить, какой вид был искажен и его поправить. То есть такой способ восстановления сообщения искаженного, опять же, в Ярде это используется, используется он именно для того, чтобы определить искажение сообщения. Причем тут надо обратить внимание, да? Что он определяет только однобитное искажение, ну или искажение нечетного количества бит? Если у нас вдруг исказится не только 1 единичка, еще в каком то месте будет искажение, то окажется, что сообщение как будто бы правильное, хотя оно было искаженным.
29:37 Ну, никто, скажем так, в стандарте не говорит, что сообщение обязано прийти и детектировать, если оно было искажено. Это только лишь случай возможность откинуть несколько нехороших сообщений, опять же, но не все.
29:58 Так что так? Так вот, бесчетности может быть работать в 2 режимах. Я здесь пролистала, а у нас может быть 2 режима. Опять же настроены, когда мы настраиваем передачу по Юарту? Либо от, либо Ивен и Ивен четность или нечетность. Если у нас стоит режим ивы, то тогда будет работать, как я сказала. А если от то ровно наоборот, то есть, когда у нас будет в табличке здесь, когда у нас будет четные число. Единичек, когда у нас будет 1 в год и сейчас будет нечетное число единичек, то тогда бить четности будет. Да, ПБ будет, 0 если опять раз 2 или 4 четное количество единичек, то единичка, а в режиме видите здесь инверсия наоборот.
30:58 Ну опять же, какой то логической операции можно сделать? Если вы написали программу, которая это выполняет обычным ксорам. Исключающим или Так что так? В общем, то на этом с ее Артом все это достаточно простой способ обмена данными между 2 устройствами. Мы с вами его использовали, да когда даже я здесь не стала писать какой, то пример. Прошивки, потому что вы с вами уже 10 раз его написали. Пишем серию Точка бегим, указыв 9600 на самом деле. Кроме 9600, там можно указать еще параметры, связанные с видом четности.
31:41 Со стартовым стоповым видом. Например, в. Стандарте Юарт еще есть такой момент, что может использоваться не 1 стоповый Пит, а 2 ну обычно используется 1 и печатности тоже не. Используется, поскольку, как вы поняли, он не такой полезный, то есть он не сможет корректировать все искажения лишь только их небольшую часть.
32:06 Так ну и перейдем тогда к следующему интерфейсу. Это интерфейс Эспиаль, последовательный периферийный интерфейс интерфейс. Он тоже очень популярен среди тех, кто программирует микроконтроллеры и обеспечивает какой то обмен данными между устройствами, в том числе периферийными. Он тоже есть зачастую на всех микроконтроллерах. Непосредственно, так сказать, на 1 кристалле и совсем остальные. И вот здесь, на примере, есть по 30 23 тоже. Можете видеть, что на пинах 24 23 22 и 21 у нас присутствует пины, связанные с интерфейсом, с пи ай.
32:55 Чаще всего спи ай используется для подключения периферии, но это следует кстати с названием. Например, подключение всяких экранчиков до разных датчиков, датчиков температуры, влажности, давления, также подключаются и сервер драйвера, поиск пи ай и сами. Серво машинки тоже подключается по спейс к контроллеру. Например, у нас была лабораторная работа с роботом Патриком, да и там много, много сервомашинок. Они все подключены, если там не Ардуинка, не сп, а разбери пи, но у разбери пи тоже есть сп интерфейс.
33:34 И к этому интерфейсу подключены сервера и а сервера уже подключены все сервер машинки. В общем устройств очень много по интерфейсу спире, которые работают, поэтому рассмотрим. Что же все таки вся включает этот интерфейс? Начнем с электрического соединения и, как видите, используется уже побольше. Шин, чем в Юарте здесь используются? Шины клок, клок, мочи, Мисы и СС. Название странные могут показаться на самом деле странного. Ничего в них нет, склок, это тактовый сигнал от слоглог. Часы, которые тикают до Моси, это сокращение от мастер Аут Слэйф, инпут, то есть мастер, пишет Слейд, считывает.
34:38 Мясо это мастер Ин Слейф Аут, ну или мастер Импульс Слейфауда. То есть это мастер читает Слейф, пишет, и с с это Слейф Селект или еще бывает обозначает си Эс типа Чип Селект. Это выбор Слейва, то. Есть, когда мы разрешаем обмен с этим устройством. Если он соответственно не разрешен, то там будет там логический по моему логической единицы, если не разрешен и логический, 0 если разрешен обмен.
35:08 Ну и нельзя, конечно, проигнорировать то, что устройства. Работают в соответствии с ролями, мастер Слейв. С лабораторной вы помните, когда мы подключали датчик д. 18 б 20 до что Слэев не может писать, пока не разрешит мастер, так и здесь у нас ведущим устройством. Является мастер, а видовым устройством, который может только что то писать в том случае, когда мастер разрешил. Да или считывать, только когда мастер разрешил.
35:41 Разрешим устройство по интерфейсу спи. Ай могут выключаться не только в режиме точка, точка, но и в режиме несколько устройств, подключенных к мастеру. То есть по топологии звезда? Вот здесь представлены на картинке, как происходит подключение здесь. На самом деле ничего сложного, то есть все так же, как на предыдущей консикой клок. Подключен к клоку 1 Слейва, Клок подключен к клоку 2 Слейва и 3 Слоя. Да, то есть сигнал клок от мастера дублируется на всех дочерних устройствах, тоже самое с.
36:22 Сигналом Моси до Спинном он тоже дублируется на Мосе 1 Слоева на Мосе 2 Слейва, да, Моси, 3 слоя. Ну и тоже касается Виса, да Виса тоже каждого из слейфов подключается к мастеру. Но в отличие от предыдущего случая у нас появляются дополнительные разрешающие.
36:59 Пины, то есть у нас для каждого отдельного слейва будет свой разрешающий пин СС 1 для 1 слоя СС 2 для 2 сестры и для 3 и, соответственно, единовременно мы должны включать. Либо 1, либо 2, либо 3 слой все одновременно мы включить не можем. В противном случае они все попытаются записать, что то на 1 шину. Ну и ничего хорошего из этого не выйдет.
37:26 Минусом является то, что для того, чтобы отключить много устройств. Каспи Ай, нам нужно увеличить количество проводов на количество подключений, потому что для каждого из Сэйвов потребуется дополнительный вот слейф селект. Тут же у меня еще на слайде обозначено, что у. Не забудьте вы подключать, к какому нибудь устройство, и увидите там не Мисса Моси и Склок. А например, Соми Сима и Склок примерно также СК. Просто это все то же самое, но применяются, бывают разные обозначения в разных производителей. Где то в д. о. д. и где то сду Сти? Вот все варианты у меня здесь описаны какие. Могут быть обозначения независимо от того, как называется Миса сдо или Соми, или до. Это все 1 и тот же Пин, на это же шины, назначение которой определено стандартом с 5.
38:26 5 Есть также еще 1 Значит, топология, с помощью которой можно подключить к мастеру несколько устройств, называется кольцо. Ну, тут тоже разница. Присутствует небольшая склок, заводится опять же на все. Слейвы из клуб Мастера приходит и на Слейф, 1 и на Слейф, 2 и на Слейф. 3 А вот Моси подключается более интересно, Моси Мастера. Подключается к Моси 1 слоя, а вот уже Мисса 1 слоя подключается к Мосе 2 слоя. Они и со 2 слоя получается к Моси 3 слоя и таким образом. У нас соединение как бы происходит в виде кольца по вот этим 2 шинам Моси и Миса, и данные таким образом проходят последовательно. Вначале от мастера, потом к своему 1 потом, к своему 2 потом, к своему 3 и потом, возможно, обратно к мастеру, если это необходимо.
39:29 этом используется только 1 Слейф Селект. В том случае, если у нас Нолик, у нас разрешена работа в кольце, передача данных. Если единичка, то передача данных запрещена. Вот 1 из примеров, когда подключают по кольцу какие то устройства это серво машинки. Да, они выключаются 1 к другой 2 к 3 3 к 4 потом, к драйверу и драйвер, потом вот здесь правда нету. Контроллера дальше да идет драйвер и все, и батарейка впитали просто. Да, а контроль, а потом уже подключала, а Драйвер уже потом подключается к контроллеру, таким образом мы получаем.
40:11 Взаимодействия до по кольцу, где здесь кольцо имеется ввиду, что видите, здесь их уйдет несколько проводов. Понятно, идет земля для того, чтобы была согласованность уровня. У меня здесь нигде земля не обозначена, но мы. Понимаем, чтобы согласовывать с уровнем, была она должна присутствовать и, соответственно, мясо Мосина. И таким образом у нас данные, откуда то с контроллером приходят на драйвер, идут к 1 по 2 к 3 4 серверу и обратно на.
40:40 На драйве, да? Да так. Продолжаем рассматривать логику взаимодействия теперь. Интерфейсе спяль. Внутри интерфейс можно даже не можно представить, а там на самом деле присутствует сдвиговый регистр. Да не знаю, была ли у вас схема техника и что такое сдвиговый регистр. По логике, да мы можем представить, как некоторые черный ящик, который, когда получает сигнал клок. Да, он сдвигает данные в своем регистре на 1 бит вперед на 1 ячейку вперед.
41:24 Если добавить чуть подробнее, то у меня тут есть в. Браузере открыта вкладочка, что такое сдвиговый регистр да с точки зрения техники. Ну, в простейшем виде это будет выглядеть вот таким вот образом это. Несколько детригеров, соединенных друг с другом, что такое Детригер. Да, наверное, тоже нужно сказать, если с его техники не было, то будет тяжело понять.
41:51 Ну да, 3 это вообще вещь очень простая. Здесь схемотехнику изучать не надо, чтобы понять, как он работает. Представим, что это черный ящик, у него есть вход д и вход с, а также выход, т вот. Этот 2 выход, это просто инвертированный выхода. Мы должны его смотреть просто выход, т. соответственно ц. Это клок, и когда у нас приходит сигнал клок, то есть разрешающий сигнал, он говорит.
42:19 Делай то, что ты умеешь делать наша коробочка, эта коробочка, что умею делать всего лишь 1 функцию. Она то, что у него на входе д помещает на вход, т. Да и и, таким образом подавая на клок импульсы, мы копируем то, что находится на входе д на вход, т друг за другом.
42:39 Если мы соединим это в цепочку, то окажется так, что, когда вот у нас есть ц, это клок у нас приходит 1 клок на все триггеры. После этого 1 Триггер рассчитывает то, что у него было на Деноль и помещает это то, что у него находится.
42:59 Куда он помещает на т 1 да, а тут? Подождите, это не сдвиговый регистр, вот сдвиговый регистр. Я думаю, не то смотрю, рассказываю, 1 а на городские другой. То, что у нас, да у нас опять же все правильно за 1 клок, общий на все. Вот они 1 2 3 у нас есть д 0 и когда приходит сигнал клок до. Клок, она обычный Виандер, обычный квадратный сигнал, и, допустим, мы будем считать в качестве команды выполнить действие восходящий фронт. Когда у нас появляется восходящий фронт, редактируется мы то, что находится на входе Деноль, копируем на выход, т. Этот выход т соединен с входом Деноль, 2 Триггера, входом Д и 2 Триггера. И он, в свою очередь, копировать то, что было у него до этого сюда. Это то, что было у него до этого копировать сюда и так далее. Таким образом, мы кого сдвигаем на каждый блок, мы то. Что было в предыдущем триггеры, копируем в следующий триггер то, что было в следующем триггером, копируем еще в следующий триггер. Включаем сдвиговый регистр и в основе спиай находится, сдвигали мистер и мистер в мастере и сдвигали регистр в Слейве.
44:24 Соответственно, когда начинается передача данных, мы разрешаем эту передачу данных, у нас начинает данные из регистра мастера, копируется в. Регистр Слэу, а данные из Регистра Слэу. Если он тоже что то хочет передать, копируется в регистр мастера таким образом, если мы хотим передать 1. Байт, если у нас регистр размером 1 байт, то нам будет достаточно 8 тактов для того, чтобы поменять местами регистр мастера со Слоевым и тогда. То, что хотел передать, мастер окажется в Регистре Слэва, а тоже хотел передать в Регистре. Что ж, хотел передать Слэф окажется в регистре, мастер.
45:03 Единственное, в отличие от Юарда, да у. Нас передача осуществляется начиная со старшего бита в Ярте с пола с младшего, а здесь со старшего, хотя опять же, в зависимости от разных производителей. Они могут это чуть чуть поварьировать и бывает, что меняют. И тоже с младшего начинает, но по стандарту от старшего к младшему не теперь дается.
45:30 Так давайте вернемся обратно в полный размер. Ну и последнее на самом деле опять же спя не очень сложный интерфейс, да и не очень сложно. Там протокол взаимодействия осталось только понять. В какие моменты времени нам считывать и передавать данные вообще есть зачастую 2 настроечных параметра? Вот такого интерфейса это сипол. И Сипия, чей Сипол означает, какое у нас в в самом начальном состоянии уровень синхронизации? Да, например, если Сипол правильно, 0 то тогда.
46:16 Базовое состояние синхронизации является низкий уровень. То есть тогда у меня будет здесь было изначально, пока мы ничего не передаем, пока мы ничего не синхронизируем у нас? 0 Логический 0 на склоке находится, если же у меня стоит параметр си пол. 1 То тогда наоборот, тогда, если я еще даже не начала синхронизацию, чего передавать? У меня на склоке находится высокий уровень. Таким образом, это все мы посмотрим на картинку справа, то сейчас у меня.
46:51 Эсклок в состоянии простоя и Айдл находится в высоком уровне, значит, Сипол стоит в режиме 1. 2 Параметр, да это си пи эйч ар, он отвечает за то, в какой момент мы должны производить считывание данных. Если Си пи чай стоит, 0 то тогда по переднему фронту. В любом случае по фронту только нужно паять по переднему или по заднему. Если Сипеич соответственно, 1 то считывание происходит по заднему фронту, а? При этом. Запись, наоборот, нашем случае, да если мы предположим. Да вот, у нас есть шина Моси, мастер Аутку, то есть мастер у нас пишет, какие то данные 1 1 0 0 он это делают, когда он уровень. С низкого меняется на высокий, это у нас восходящий фронт, но тут надо, конечно, восходящий фронт, это не передний фронт передний фронт. Это означает, что мы переключаемся из. Основного в противоположный, а основной у нас режим. Это логическая единица с основной логической единицы и не со мной, соответственно, 0 соответственно, передний фронт это когда. Мы из логической единицы попадаем в 0, а задний фронт, когда из 0 попадаем в логическую единицу. В нашем случае мы попадаем из 0 в логическую единицу, это задний фронт, то есть мы.
48:37 Запись производим по Детектированию заднего фронта. Тогда это означает то, что у нас все печь, а стоит в режиме. 0 Да, запись происходит по заднему фронту считывания, происходит по переднему фронту. Просто подтвердим то, что мы решили. Да вот здесь у нас есть шинами со то есть, когда у нас есть. Мастер считывает мастер, у нас должен считывать по в режиме 0. По переднему фронту передний фронт это, когда мы из своего базового состояния основного переходим в противоположные базовый, у нас единицы противоположный. 0 То есть в таком случае передний фронт это нисходящий фронт и действительно в рот? И действительно, мы в данном случае считываем по нисходящему фронту. Считывать мы будем по не ходящему, но здесь нарисовано, что Слейф пишет до Слейф, пишет все также по восходящему. Мастер будет считывать по не сводящему фронту.
49:53 Ну и Слейф селект по стандарту, когда он единица. Мы не разрешаем обмен данными, когда он нолик логический, то обмен данными разрешен, ну и в. Ну и в завершении скажу что. Зачастую поверхность пи ай реализован еще какой нибудь протокол взаимодействия. Когда вы покупаете какой нибудь драйвер, к нему уже есть какая нибудь библиотека в Ардуине, в которой? Уже реализована вся работа ПСП и, напрямую поспевая, работать вам не нужно. Но если очень захочется, то в Фреймворке Ардуино есть библиотека Спей, и она очень простая работает. Практически так же, как и серию, то есть там пишется спи. Ай, точка Бегин в Бегин, можно передать, какие то параметры. Кстати, обратите внимание, что стандарты Спиай никак не регламентирует. Во 1 уровень сигнала, то есть я сказала там, что 5 вольт, но вообще в самом стандарте не написано. Я знаю, что если это спяй на ардуинке, это будет 5 вот если на испышки, то ты и ты.
51:02 + СП также не регламентирует какую то скорость передач на эту частоту, с которой мы передаем наши данные, в том числе частоту клока. Это уже зависит, опять же, от конкретного производителя, какие они выберут скорость и частоту. Ее уровня сигнала. Ну и на этом тогда все, да? Можно, конечно, еще, наверное, не заглянуть. Арбумина. 5 В. Вайбере, да? Подтвердить то, что я сказала про то, что. В общем, СП и программка очень простая. У нас есть метод бегин, мы туда можем передать соответственно фины, на которых у нас будет испиай. Ну или они будут по умолчанию? Которые у нас есть и дальше есть методы. Большинство из этих может вообще пропустить настроечных методов. Есть Спейс Сеттингс, в которых мы можем указать частоту. Режим и что то еще порядок, вот мы можем менять порядок обычно по умолчанию. Если мы ничего не указываем, то у нас передается старший бить в начале, но можно. Поменять вот в приборе разрешили это делать, и потом можно передавать данные с помощью метода трансфер трансфер и начали передавать какие то наши бинарные данные.
52:44 Ничего сложного в этом нет, ну все тогда на сегодня. На на этом заканчиваем на следующей лекции. Мы рассмотрим еще парочку каких нибудь коммуникационных интерфейсов. И на этом уже все.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.
Внимание! В задачке с бодами допущена ошибка. Байты нужно обязательно перевести в биты. 5 байт = 40 бит. Итоговое время 40 * 0.1 = 4 мс.