Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек8.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2.66 Mб
Скачать

Протокол spi

Протокол SPI похож на протокол Microwire, но имеет несколько отличий.

  1. Рис. 9. Запись данных в протоколе SPI.

    SPI способен передавать данные со скоростью до 3 Мбит и секунду.

  2. Разрядность данных в SP1 пакете равна 8 бит.

  3. Передатчик в SPI имеет возможность приостановить передачу данных.

  4. Данные в SP1 могут передаваться в виде множества байтов, которые называются "блок" или "страница".

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

Рис. 10. Подключение входа "D1" и выхода –"DO" к одной пинии.

При реализации протоколов Microwire или SPI можно упростить схему соединения, если подключить вход Din и выход Dout к одной линии (рис. 10). При таком способе соединения микроконтроллер должен отключить свой выходной драйвер, когда закончит последовательную передачу данных. После того он может принимать данные, поступающие от другого устройства. Резистор между выводами данных служит для ограничения тока в тех случаях, когда и микроконтроллер, и периферийное устройство выдают данные на линию связи.

Сети

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

В таких сетях имеется «ведущий» («master») — интеллектуальное устройство, которое может инициировать передачу данных. Устройства, которые отвечают на запросы, но не могут их инициировать, называются «ведомые» («slaves»). Микроконтроллерная сеть может иметь несколько «ведущих» устройств, В этом случае сетевой протокол требует включения схемы арбитража, которая позволит различным «ведущим» устройствам передавать данные, не нарушая других сообщений.

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

Протокол i2c

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

Рис. 11. Пример I2C сети.

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

Шина 12С для управления стереосистемой может иметь вид, показанный на рис 11.

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

Рис. 12. Форма сигналов на шине I2C.

Рис.13. Передача байта по шине I2C

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

Существует две максимальные скорости передачи данных по типе I2C: "стандартный режим" - до 100 Кбит/ с и "быстрым режим" - до 400 Кбит/с (рис. 14)

Указана минимальная длительность интервалов времени в микросекундах.

Рис. 14. Временная диаграмма сигналов на шине I2C

Формат команды, поступающей от ведущего устройства к ведомому, показан на рис. 15. Адрес получателя содержит 7 бит. Существует неутвержденный ("свободный") стандарт, согласно которому четыре старших бита используются для указания типа устройства, а следующие три бита используются для выбора одного из восьми устройств этого типа или служат для более точного определения типа устройства. Так как этот стандарт не является обязательным, то некоторые устройства требуют указания в качестве трех последних адресных бит определенных кодов, тогда как другие, например микросхемы памяти EEPROM с последовательной выборкой, используют эти биты для выбора адресата внутри устройства.

R/W - Вид обмена (прием или передача)

Ack - Бит подтверждения

Рис. 15. Формат передачи данных по шине I2C

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

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

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

0011- Аудио - интерфейс 0100 - Звуковой генератор

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

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

1001— аналого-цифровой и цифро-аналоговый интерфейсы 1010 — Последовательная память

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

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

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

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

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

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

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]