- •Раздел I. Общие сведения о микроконтроллерах. Тема 1.1. Понятие микроконтроллера.
- •Тема 1.2. Типы микроконтроллеров.
- •Встраиваемые микроконтроллеры.
- •16-И 32-разрядные микроконтроллеры (микроконтроллеры с внешней памятью).
- •Цифровые сигнальные процессоры.
- •Тема 1.3. Архитектура процессоров. Cisc и risc процессоры.
- •Гарвард против принстона.
- •Тема 1.4. Типы памяти микроконтроллеров
- •Память программ
- •Память данных
- •Тема 1.5. Регистры микроконтроллера. Пространство ввода-вывода
- •Внешняя память
- •Раздел II. Аппаратные средства микроконтроллеров Тема 2.1. Корпуса устройств
- •Тема 2.2. Питание микроконтроллеров.
- •Потребляемая мощность.
- •Подключение питания.
- •Тема 2.3. Запуск микроконтроллера (сброс в начальное состояние). Тактирование системы.
- •Тактирование системы
- •Тема 2.4. Командные циклы. Программный счетчик. Алу. Командные циклы.
- •Программный счетчик.
- •Арифметико-логическое устройство
- •Тема 2.5. Сторожевые таймеры. Прерывания. Сторожевые таймеры.
- •Прерывания.
- •Раздел III. Средства обмена в микроконтроллерах. Тема 3.1. Таймеры.
- •Тема 3.2. Параллельный ввод-вывод данных. Преобразование логических уровней. Параллельный ввод-вывод данных
- •Преобразование логических уровней.
- •Тема 3.3. Последовательный ввод-вывод данных.
- •Асинхронный последовательный обмен.
- •Синхронный последовательный обмен.
- •Тема 3.4. Протоколы передачи данных. Протокол microwire.
- •Протокол spi.
- •Протокол i2с
- •Раздел IV. Микроконтроллеры семействаMcs-51 Тема 4.1. Фирмы-производители микроконтроллеров. Типовые характеристики семейства mcs-51.
- •Тема 4.2. Структура микроконтроллеров mcs-51 и функции выводов
- •Тема 4.3. Организация памяти и программно доступные ресурсы.
- •Тема 4.4. Синхронизация, магистральные циклы.
- •Тема 4.5. Методы адресации и система команд.
- •Методы адресации
- •Регистровая адресация.
- •Прямая адресация.
- •Косвенно-регистровая адресация.
- •Непосредственная адресация.
- •Система команд семейства mcs-51
- •Арифметические команды.
- •Логические команды.
- •Команды пересылки данных.
- •Команды работы с битами.
- •Команды передачи управления.
- •Тема 4.6. Система прерываний
- •Особенности запросов внешних прерываний.
- •Тема 4.7. Параллельные порты
- •Обновление данных в портах
- •Операции типа «чтение-модификация-запись»
- •Тема 4.8. Таймеры-счетчики
- •Тема 4.9. Последовательный порт
- •Синхронный обмен (режим 0)
- •Асинхронный обмен (режимы 1, 2, 3)
- •Обмен в многопроцессорных системах
Протокол i2с
Наиболее популярный протокол для сети микроконтроллеров - I2C, который предназначен для связи устройств в многопроцессорных системах. Этот стандарт был разработан компанией Philips в конце 70-х годов как метод реализации интерфейса между микропроцессорами и периферийными устройствами, который не требует прокладки многочисленных линий для передачи между устройствами всех разрядов адреса, данных и сигналов управления. Протокол I2C позволяет разделять сетевые ресурсы между несколькими ведущими процессорами («multimastering»).
Шина I2C содержит две линии: линия SDA, которая служит для передачи данных, и линия SCL, по которой передается синхросигнал, используемый для стробирования данных. Обе линии подключены через резисторы к шине питания («подтянуты» к высокому уровню потенциала), что позволяет нескольким устройствам управлять их состоянием путем соединения по схеме «монтажное И».
Шина I2C для управления стереосистемой может иметь вид, показанный на рис. 3.19.
Рис. 3.20 - Пример I2C сети.
Двухпроводная линия используется для определения начала передачи данных, а также для передачи самих данных. Чтобы начать передачу данных, шина переводится в стартовое состояние. При отсутствии передаваемых данных шина находится в ждущем (пассивном) состоянии («idle»). При этом на обе линии сигналы не поступают, и на них установлен высокий уровень сигнала (потенциал Vdd). Чтобы инициировать передачу данных, ведущее устройство, которое запрашивает управление шиной, устанавливает низкий уровень сначала на линии SDA, а затем на линии SCL (стартовое состояние). В процессе пересылки данных такое состояние шины является нерабочим, так как прием передаваемых данных производится только при высоком (активном) уровне синхросигнала на линии SCL. Чтобы закончить передачу данных выполняются обратные действия: на линии SCL устанавливается высокий уровень сигнала, а затем в такое же состояние переводится линия данных SDA (рис. 3.21).
Рис. 3.21 - Форма сигналов на шине I2С.
Данные передаются синхронным способом, причем первым посылается старший бит (рис. 3.22). После передачи 8 бит ведущее устройство переводит линию данных в «плавающее» состояние, ожидая подтверждения приема данных от ведомого устройства. Таким подтверждением является установка ведомым устройством низкого уровня сигнала на линии SDA. После бита подтверждения на обеих линиях устанавливается низкий уровень. Затем производится пересылка следующего байта, или шина переводится в состояние конца передачи. Это означает, что передача завершена, и приемник может готовиться к следующему запросу данных.
Рис.3.22 - Передача байта по шине I2С .
Существует две максимальные скорости передачи данных по шине I2С: «стандартный режим» - до 100 Кбит/с и «быстрый режим» - до 400 Кбит/с (рис. 3.23).
Рис. 3.23 - Временная диаграмма сигналов на шине I2С.
Формат команды, поступающей от ведущего устройства к ведомому, показан на рис. 3.24. Адрес получателя содержит 7 бит. Существует неутвержденный («свободный»») стандарт, согласно которому четыре старших бита используются для указания типа устройства, а следующие три бита используются для выбора одного из восьми устройств этого типа или служат для более точного определения типа устройства. Так как этот стандарт не является обязательным, то некоторые устройства требуют указания в качестве трех последних адресных бит определенных кодов, тогда как другие, например микросхемы памяти EEPROM с последовательной выборкой, используют эти биты для выбора адресата внутри устройства. Существует также 10-разрядный стандарт для передачи адреса, в котором первые 4 бита содержат 1, следующий бит имеет значение 0. последние 2 бита являются старшими битами адреса, а завершающие 8 бит адреса передаются в следующем байте. Все это означает, что очень важно распределить адреса между устройствами, подключенными к шине.
Первые четыре бита адреса обычно служат для определения типа выбираемых устройств в соответствии со следующим соглашением:
0000 - Зарезервированный адрес
0010 - Синтезатор голоса
0011 - Аудио - интерфейс
0100 - Звуковой генератор
0111 - Жидкокристаллический или светодиодный дисплей
1000 - Видео - интерфейс
1001 - Аналого-цифровой и цифро-аналоговый интерфейсы
1010 - Последовательная память
1100 - Управление радиоприемником
1101 - Часы/календарь
1111 - Зарезервировано для использования 10-разрядного адреса
R/W - Вид обмена (прием или передача)
Ack - Бит подтверждения
Рис. 3.24 - Формат передачи данных по шине I2С
Прежде, чем закончить обсуждение протокола I2C, следует обратить внимание на следующие обстоятельства. В некоторых устройствах требуется повторная посылка стартового бита, чтобы сбросить принимающее устройство в исходное состояние для приема следующей команды. Например, при чтении из EEPROM-памяти с последовательной выборкой первая команда посылает адрес ячейки, из которой производится считывание, а вторая команда выполняет чтение данных по этому адресу.
Следует также обратить внимание на возможность инициирования процесса передачи данных несколькими ведущими микроконтроллерами («multimastering»). Это может привести к возникновению коллизий, когда два устройства пытаются управлять шиной одновременно. Если один микроконтроллер взял управление шиной, то есть установил стартовое состояние, до того, как другой попытается сделать тоже самое, то это не вызывает проблем. Проблема возникает, когда несколько устройств инициируют стартовое состояние одновременно, и требуется произвести арбитраж их запросов.
На практике осуществить арбитраж в этом случае достаточно просто. Во время передачи данных оба передатчика точно синхронизируют тактовые импульсы. Если при передаче адреса бит, который должен иметь значение 1, на самом деле принимает значение 0, то это указывает на то что шина занята другим устройством. В этом случае ведущее устройство отключается от шины и ждет, когда наступит состояние «конец передачи», после которого повторяет запрос.
Протокол I2C может быть легко реализован программным путем. Но при этом быстрый режим не может быть реализован из-за перегрузки процессора, даже стандартный режим 100 Кбит/с может оказаться слишком быстрым для некоторых микроконтроллеров. Программная реализация наилучшим образом подходит тогда, когда в сети имеется только одно ведущее устройство. В этом случае нет необходимости синхронизироваться с другими устройствами или принимать сообщения от других ведущих устройств, работающих со слишком большой скоростью, которая не обеспечивается при программной реализации.
Лекция № 2.