- •1.0 Преимущества i2c
- •2.0 Введение в спецификацию шины i2c
- •3.0 Концепция шины i2c
- •4.0 Общие параметры
- •5.0 Пересылка бита
- •5.1 Валидность данных
- •5.2 Сигналы start и stop
- •6.1 Формат байта
- •7.1 Синхронизация
- •6.2 Подтверждение
- •7.2 Арбитраж
- •7.3 Использование механизма синхронизации как процедуры управления связью
- •8.0 Форматы с 7-битным адресом
- •9.1 Назначение битов первого байта
- •9.1.1. Адрес общего вызова
- •9.1.2 Байт старта
- •10.0 Электрические параметры устройств i2c
- •11.0 Дополнения к спецификации шины i2c
- •12.0 Быстрый режим
- •13.1 Назначение битов первых двух байтов
2.0 Введение в спецификацию шины i2c
Для приложений 8-битного управления, использующих микроконтроллеры, могут быть установлены определенные конструкторские критерии:
Полная система обычно состоит из по крайней мере одного микроконтроллера и других периферийных устройств, таких как память и порты ввода/вывода.
Стоимость соединения различных устройств в системе должна быть минимизирована.
Система, осуществляющая функции управления, не требует высокоскоростной передачи данных.
Общая эффективность зависит от выбранных устройств и природы соединяющей шины.
Для того, чтобы разработать систему, удовлетворяющую этим критериям, необходима последовательная шина. Хотя последовательные шины не имеют пропускной способности параллельных шин, они требуют меньше соединений и меньше контактов микросхем. Однако, шина состоит не только из соединяющих проводов, она также включает в себя все форматы и процедуры для связи внутри системы.
Устройства, связывающиеся по шине, должны обладать неким протоколом, который упреждает все возможности столкновений, потери данных и блокирования информации. Быстрые устройства должны быть в состоянии связаться с медленными устройствами. Система не должна быть зависима от устройств, подключенных к ней, иначе модификации и улучшения станут невозможными. Также должна быть разработана процедура, устанавливающая, какое устройство управляет шиной и когда. Кроме того, если различные устройства с разными тактовыми частотами подключены к шине, должен быть определен источник синхронизации шины. Всем этим критериям удовлетворяет шина I2C.
3.0 Концепция шины i2c
Шина I2C поддерживает любую технологию изготовления микросхем (НМОП, КМОП, биполярную). Две линии, данных (SDA) и синхронизации (SCL) служат для переноса информации. Каждое устройство распознается по уникальному адресу - будь то микроконтроллер, ЖКИ буфер, память или интерфейс клавиатуры - и может работать как передатчик или приёмник, в зависимости от назначения устройства. Обычно ЖКИ буфер - только приёмник, а память может как принимать, так и передавать данные. Кроме того, устройства могут быть классифицированы как ведущие и ведомые при передаче данных (см. Табл 1). Ведущий - это устройство, которое инициирует передачу данных и вырабатывает сигналы синхронизации. При этом любое адресуемое устройство считается ведомым по отношению к ведущему.
Термин (англ) |
Термин (рус) |
Описание |
Transmitter |
Передатчик |
Устройство, посылающее данные в шину |
Receiver |
Приемник |
Устройство, принимающее с шины |
Master |
Ведущий |
Начинает пересылку данных, вырабатывает синхроимпульсы, заканчивает пересылку данных |
Slave |
Ведомый |
Устройство, адресуемое ведущим |
Multi-master |
- |
Несколько ведущих могут пытаться захватить шину одновременно, без нарушения передаваемой информации |
Arbitration |
Арбитраж |
Процедура, обеспечивающая Multi-master |
Synchronization |
Синхр. |
Процедура синхронизации двух устройств |
Рисунок 3. Пример конфигурации шины I2C с двумя микроконтроллерами
Микроконтроллер А
Массив
ЖКИ драйвер
АЦП
Статическая ОЗУ или ППЗУ
Микроконтроллер B
Шина I2C допускает несколько ведущих. Это означает, что более чем одно устройство, способное управлять шиной, может быть подключено к ней. Поскольку в качестве ведущих обычно выступают микроконтроллеры, давайте рассмотрим пример пересылки данных между двумя микроконтроллерами, подключенными к шине (рис 3). Пример покажет взаимоотношения передатчик-приемник и ведущий-ведомый, существующие в шине I2C. Необходимо заметить, что эти отношения не постоянны, а зависят только от направления пересылки данных в данный момент времени. Пересылка данных будет происходить следующим образом:
Пусть микроконтроллер А желает послать информацию в микроконтроллер В:
микроконтроллер А (ведущий) адресует микроконтроллер В (ведомый)
микроконтроллер А (ведущий-передатчик) посылает данные микроконтроллеру В (ведомый-приёмник)
микроконтроллер А заканчивает пересылку
Пусть микроконтроллер А желает принять информацию от микроконтроллера В:
микроконтроллер А (ведущий) адресует микроконтроллер В (ведомый)
микроконтроллер А (ведущий-приемник) принимает данные от микроконтроллера В (ведомый-передатчик)
микроконтроллер А заканчивает пересылку
В обоих случаях ведущий (микроконтроллер А) генерирует синхроимпульсы и заканчивает пересылку.
Возможность подключения более одного микроконтроллера к шине означает, что более чем один ведущий может попытаться начать пересылку в один и тот же момент времени. Для устранения хаоса, который может возникнуть в данном случае, разработана процедура арбитража. Эта процедура основана на том, что все I2C-устройства подключаются к шине по правилу монтажного И. Подробнее об арбитраже см. Раздел 7.0.
Генерация синхросигнала - это всегда обязанность ведущего; каждый ведущий генерирует свой собственный сигнал синхронизации при пересылке данных по шине. Сигнал синхронизации может быть изменен только если он “вытягивается” медленным ведомым устройством (путем удержания линии в низком состоянии), или другим ведущим, если происходит столкновение.
