
- •Организация микропроцессора
- •Организация входов-выходов
- •Регистры входов-выходов
- •Приборный интерфейс i2c
- •Состояние линии
- •Синхронизация
- •Форматы и режимы
- •Арбитраж
- •Организация контроллера
- •Тактовое питание
- •Регистры i2c
- •Векторы прерываний
- •Регистры адреса и масок
- •Регистры статусов
- •Регистры приема-передачи
- •Регистры режима
- •Режим цифровой петли
- •Другие регистры
- •Регистры идентификации
- •Аппаратурный сброс
- •Инициализация ведущего
- •Инициализация ведомого
Состояние линии
При передаче данных предполагается, что все изменения данных происходят при низком тактовом сигнале (см. рис.7). Когда тактовый сигнал имеет высокий уровень изменений сигнала на линии данных, не допускается. Иначе это будет старт или стоп.
Рис.7. – Состояние линии
Ещё показана та последовательность состояний, которая характерна для любого обмена данными (см. рис.8). Смена состояний – когда на тактовой линии низкий уровень. При высоком уровне тактовой линии – данные считываются.
Рис.8. - Последовательность состояний
Синхронизация
Может оказаться, что различные устройства работаю с разной скоростью. Есть протокол согласование скоростей (см. рис 9). Схема имеет нагрузочный резистор. Каждое из устройств по схеме открытого коллектора управляет линией, оно ещё считывает состояние линии. Самое медленное устройство притормаживает быстрое, это и есть синхронизация этих устройств.
Рис.9. – Схема согласования скоростей приема данных
Рис.10. – Синхронизация
Предположим, есть два устройства, причем устройство два медленное, потому что период тактового сигнала больше (см. рис.10). На проводнике шины отражается суммарное действие двух устройств на интерфейсе. Если устройство удерживает низкий сигнал в линии, то это устройство перекрывает удержание высокого сигнала другим устройством. Удержание высокого уровня, по сути, отключение от линии. И такое устройство слушает линию, и ожидает, пока его действие по переводу линии в низкое состояние подтвердит другое устройство. В конечном итоге, тактовый сигнал для этих двух устройств будет соответствовать суммарному действию и будет меньше частоты. Если ведомое устройство удерживает низкий уровень тактового сигнала, остальные устройства переходят в состояние ожидания. Медленные ведомые устройства притормаживают быстрые ведущие устройства на время, достаточное для приема и сохранения данных (подготовки и передачи данных).
Может оказаться, что состояние ожидания будет различным, потому что некоторые устройства могут работать с переменной скоростью передачи данных.
Форматы и режимы
Интерфейс I2C поддерживает следующие форматы передачи данных (см. рис.11). Выше был рассмотрен формат с 7-битной адресацией, когда после стартового импульса передается семь бит адреса, после чего передается код операции чтения (1) или записи(0), после этого ожидается ответ от устройства, который бы этот адрес распознала. После этого идут данные, несколько порций, количество передаваемых порций (байт) определяется количеством тактовых сигналов деленых на восемь. После каждой порции данных принимающие устройство должно присылать подтверждение получения данных (ACK).
Рис.11. – Форматы
Если подтверждение не приходит, то надо начинать все сначала. Бит данных может быть разное количество от 2 до 8 бит. Устройства должны знать сколько бит передают друг другу.
Следующий формат 10-битной адресации: чтобы знать, какой на данный момент передается формат, часть адресов отдается под идентификатор этого формата. Поэтому здесь не 1024 число адресуемых устройств, как в начале, а 1008, так как два разряда в этом случае используется для заголовочной части (11110).
Свободный формат – формат, в котором адрес устройства не передается, а интерпретация порций данных осуществляется уже устройствами самостоятельно. Устройства должны уметь эти данные интерпретировать. Поэтому все посылки будут равны n, биту пакета данных, которые перемежаются подтверждением (ACK).
Формат повторения – имеется много сигналов СТАРТ и один сигнал СТОП, каждый сигнал старт формируется после передачи данных, и таким образом реализуется режим, когда мы можем выполнять быструю передачу данных от ведущего к множеству ведомых (веерная посылка).
Из вышесказанного можно сделать вывод, что у нас четыре режима работы:
ведомый приемник (slave-receiver mode);
ведомый передатчик (slave-transmitter mode);
ведущий приемник (master-receiver mode);
ведущий передатчик (master-transmitter mode).