Преобразование логических уровней



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

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

Наиболее типичный метод преобразования логических уровней состоит в том, чтобы привести в соответствие пороги переключения обоих устройств. Как показано на рис………, нижний потенциал напряжения питания для КМОП - микроконтроллера сдвигается ниже потенциала «земли» таким образом, чтобы его порог переключения стал соответствовать порогу переключения микросхем ЭСЛ. Резистор с номиналом от 1 Ком до 10 Ком используется для ограничения тока, который протекает из-за разного значения логических уровней используемых микросхем.

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

 

Занятие 42(46)

Протоколы связи микроконтроллеров: Microwire , SPI , I 2 C , CAN

Сети

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

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

В таких сетях имеются

- “ведущий” ("master") – интеллектуальное устройство, которое может инициировать передачу данных.

- «ведомые» ("slaves") слэйв - устройства, которые отвечают на запросы, но не могут их инициировать.

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

Обычно в микроконтроллерной сети передается относительно мало данных, поэтому требуемая для них пропускная способность весьма скромна. Часто микроконтроллерная сеть имеет пропускную способность порядка нескольких байт в секунду.

Далее будут описаны два наиболее популярных вида сетей для микроконтроллеров.

 Протокол I2C

Наиболее популярный протокол для сети микроконтроллеров – I2C, который предназначен для связи устройств в многопроцессорных системах.. Протокол I2C позволяет разделять сетевые ресурсы между несколькими ведущими процессорами ("multimastering").

Шина I2C содержит две линии: линия SDA, которая служит для передачи данных, и линия SCL, по которой передается синхросигнал, используемый для стробирования данных. Обе линии подключены через резисторы к шине питания («подтянуты» к высокому уровню потенциала), что позволяет нескольким устройствам управлять их состоянием путем соединения по схеме «монтажное И».

. Двухпроводная линия используется для определения начала передачи данных, а также для передачи самих данных. Чтобы начать передачу данных, шина переводится в стартовое состояние. При отсутствии передаваемых данных шина находится в ждущем (пассивном) состоянии ("idle"). При этом на обе линии сигналы не поступают, и на них установлен высокий уровень сигнала (потенциал Vcc). Чтобы инициировать передачу данных, ведущее устройство, которое запрашивает управление шиной, устанавливает низкий уровень сначала на линии SDA, а затем на линии SCL (стартовое состояние). В процессе пересылки данных такое состояние шины является нерабочим, так как прием передаваемых данных производится только при высоком (активном) уровне синхросигнала на линии SCL. Чтобы закончить передачу данных выполняются обратные действия: на линии SCL устанавливается высокий уровень сигнала, а затем в такое же состояние переводится линия данных SDA (рис. 2.39).

Данные передаются синхронным способом, причем первым посылается старший бит. После передачи 8 бит ведущее устройство переводит линию данных в “плавающее” состояние, ожидая подтверждения приема данных от ведомого устройства. Таким подтверждением является установка ведомым устройством низкого уровня сигнала на линии SDA. После бита подтверждения на обех линиях устанавливается низкий уровень. Затем производится пересылка следующего байта, или шина переводится в состояние конца передачи. Это означает, что передача завершена, и приемник может готовиться к следующему запросу данных.

Существует две максимальные скорости передачи данных по шине I2C: “стандартный режим” – до 100 Кбит/ с и «быстрый режим» – до 400 Кбит/с (рис. 2.41)

Формат команды, поступающей от ведущего устройства к ведомому, показан на рисунке. Адрес получателя содержит 7 бит. Существует неутвержденный («свободный») стандарт, согласно которому четыре старших бита используются для указания типа устройства, а следующие три бита используются для выбора одного из восьми устройств этого типа или служат для более точного определения типа устройства. Существует также 10-разрядный стандарт для передачи адреса, в котором первые 4 бита содержат 1, следующий бит имеет значение 0, последние 2 бита являются старшими битами адреса, а завершающие 8 бит адреса передаются в следующем байте. Все это означает, что очень важно распределить адреса между устройствами, подключенными к шине.

Первые четыре бита адреса обычно служат для определения типа выбираемых устройств в соответствии со следующим соглашением:

0000 – Зарезервированный адрес

0010 – Синтезатор голоса

0011 – Аудио - интерфейс

0100 – Звуковой генератор

0111 – Жидкокристаллический или светодиодный дисплей

1000 – Видео - интерфейс

1001 – аналого-цировой и цифро-аналоговый интерфейсы

1010 – Последовательная память

1100 – Управление радиоприемником

1101 – Часы/календарь

1111 – Зарезервировано для использования 10-разрядного адреса

Протокол CAN

Протокол CAN (Controller Area Network) был разработан компанией Bosch несколько лет назад как сетевое решение для связи компьютерных систем, применяемых в автомобилях.

Протокол CAN реализуется с использованием операции «монтажное И», которая используется также шиной I2C. Передача данных на физическом электрическом уровне реализуется с помощью драйверов, соответствующих стандарту RS-485, которые обеспечивают выдачу на линию связи дифференциального напряжения. Такая сеть будет работать, даже если один из двух проводников закорочен или оборван, что особенно важно для обеспечения надежности автомобильного оборудования. Использование соединения, реализующего «монтажное “И», позволяет выполнять арбитраж между различными ведущими устройствами: когда выходные драйверы устройства активны, то шина CAN переводится в низкое состояние, аналогично I2C.

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

Каждое сообщение представляет собой отдельный кадр в потоке пересылаемых данных. Кадр передается как фрагмент этого асинхронного последовательного потока, в котором пересылка данных не сопровождается посылкой синхросигнала. При этом приемник и передатчик должны работать на одной частоте: обычно скорость обмена устанавливается в пределах от 200 Кбит/с до 1 Мбит/с. При использовании протокола CAN нулевое значение бита называется «доминантным», а единичное значение - «рецессивным» (по аналогии с генами в биологии).

Различные поля кадра имеют следующее назначение:

SOF (Start Of Frame) – начало кадра, единичный доминантный бит.

Идентификатор – 11-и или 19-битный идентификатор сообщения.

RTR – Бит, указывающий, что ведущее устройство является передатчиком (при RTR=1) или приемником (при RTR=0) данных.

rl/r0 - Зарезервированные биты, которые должны быть доминантными.

DLC – 4 бита, которые указывают количество передаваемых байт.

Data - от 0 до 8 передаваемых байтв данных, где старший бит идет первым.

CRC – 15 битный код контрольной суммы, за которым следует рецессивный бит.

Ack – 2-битное поле подтверждения готовности (содержит доминантные и рецессивные биты).

EOF (End Of Frame) – конец кадра (поле, содержащее не менее 7 рецессивных бит).

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

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

Занятие 43(47)


Дата добавления: 2022-01-22; просмотров: 24; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!