Общие положения и введение в логику работы шины I2C
Шина I2C
Отличительные особенности
- Двунаправленный обмен по двум линиям
- Высокая скорость обмена - до 100 кбит и выше
- Возможность адресации до 128 устройств
- Простота программной реализации "Master"-абонента
- Временная независимость процесса передачи
Данное введение является формальным описанием шины I2C и предназначено только для достаточно подробного ознакомления с целью самостоятельной реализации частных алгоритмов связи. Для получения более полной информации обращайтесь к соответствующей литературе фирмы Philips.
Разработанная фирмой Philips шина I2C ("Inter-Integrated Circuit"), - это двунаправленная асинхронная шина с последовательной передачей данных и возможностью адресации до 128 устройств. Физически шина I2C содержит две сигнальные линии, одна из которых (SCL) предназначена для передачи тактового сигнала, вторая (SDA) для обмена данными. Для управления линиями применяются выходные каскады с открытым коллектором, поэтому линии шины должны быть подтянуты к источнику питания +5 В через резисторы сопротивлением 1...10 кОм, в зависимости от физической длины линий и скорости передачи данных. Длина соединительных линий в стандартном режиме может достигать 2-х метров, скорость передачи - до 100 кбит/с. Суммарная емкость линий должна быть не больше 400 пФ, входная емкость на каждую ИС должна быть в пределах 5...10 пФ.
Все абоненты шины делятся на два класса - "Master" и "Slave". Устройство "Master" генерирует тактовый сигнал (SCL) и, как следствие, является ведущим. Оно может самостоятельно выходить на шину и адресовать любое "Slave" - устройство с целью передачи или приема информации. Все "Slave"-устройства "слушают" шину на предмет обнпружения собственного адреса и, распознав его, выполняют предписываемую операцию. Кроме того, возможен так называемый "Multi Master" - режим когда на шине установлено несколько "Master"-абонентов, которые либо совместно разделяют общие "Slave"-устройства, либо попеременно являются то "Master"-устройствами, когда сами инициируют обмен информацией, то "Slave", когда находятся в режиме ожидания обращения от другого "Master"-устройства. Режим "Multi Master" требует арбитража и распознавания конфликтов. Естественно, он сложнее в реализации (имеется ввиду программная реализаци) и, как следствие, реже используется в реальных изделиях.
В начальный момент времени - в режиме ожидания - обе линии SCL и SDA находятся в состоянии логической единицы (транзистор выходного каскада с ОК закрыт). В режиме передачи (рис. 1) бит данных SDA стробируется положительным импульсом SCL. Смена информации на линии SDA производится при нулевом состоянии линии SCL. "Slave"-устройство может "придерживать" линию SCL в нулевом состоянии, например, на время обработки очередного принятого байта, при этом "Master"-устройство обязано дождаться освобождения линии SCL, прежде чем продолжить передачу информации.
Рис. 1. Диаграмма процесса передачи данных по шине I2C
Для синхронизации пакетов шины I2C различают два условия - "Start" и "Stop", ограничивающие начало и конец информационного пакета (рис. 2). Для кодирования этих условий используется изменение состояния линии SCL, что недопустимо при передаче данных. "Start"-условие образуется при отрицательном перепаде линии SDA, когда линия SCL находится в единичном состоянии, и наоборот, 'Stop"-условие образуется при положительном перепаде линии SDA при единичном состоянии линии SCL.
Рис. 2. Диаграмма "Старт"/"Стоп" условия шины I2C
Рис. 3. Диаграмма подтверждения приема байта по шине I2C
Передача данных начинается по первому положительному импульсу на линии SCL (рис. 3), которым стробируется старший бит первого информационного байта. Каждый информационный байт (8 битов) содержит 9 тактовых периодов линии SCL. В девятом такте устройство-получатель выдает подтверждение (ACK) - отрицательный импульс, свидетельствующий о "взаимопонимании" передатчика и получателя. Сразу отметим, что любой абонент шины, как "Master", так и "Slave" может в разные моменты времени быть как передатчиком, так и получателем и в соответствии с режимом обязан либо принимать, либо выдавать сигнал ACK, отсутствие которого интерпритируется как ошибка.
Рис. 4. Временная диаграмма работы шины I2C
Временная диаграмма сигналов SCL и SDA шины I2C приведена на рис. 4. Здесь S обозначает "Start"-условие, Р - "Stop"-условие. Значения временных характеристик приведены в табл. 1.
Таблица 1. Значения временных характеристик шины I2C
Параметр |
Обозначение |
Мин. |
Макс. |
Един. |
Частота сигнала SCL |
fSCL |
0 |
100 |
кГц |
Свободная шина |
tBUF |
4.7 |
-- |
мкс |
Фиксация "Start"-условия |
tHD;STA |
4.0 |
-- |
мкс |
Длительность "LOW" полупериода SCL |
tLOW |
4.7 |
-- |
мкс |
Длительность "HIGH" полупериода SCL |
tHIGH |
4.0 |
-- |
мкс |
Готовность повторного "Start"-условия |
tSU;STA |
4.7 |
-- |
мкс |
Удержание данных |
tHD;DAT |
0 |
-- |
мкс |
Готовность данных |
tsu;dat |
250 |
-- |
нс |
Фронт сигналов SCL и SDA |
tr |
-- |
1000 |
нс |
Спад сигналов SCL и SDA |
tf |
-- |
300 |
нс |
Готовность "STOP"-условия |
tSU;STO |
4.0 |
-- |
мкс |
Чтобы начать операцию обмена устройство "Master" выдает на шину "Start"-условие, за которым следует байт с адресом "Slave"-устройства (рис. 5), состоящий из семибитового адреса устройства (занимает биты 1...7) и однобитового флага операции - "R/W" (бит 0) определяющего направление обмена, причем 0 означает передачу от "Master" к "Slave" (рис. 5 а), а 1 - чтение из "Slave" (рис. 5б). Все биты передаются по шине I2C в порядке старший-младший, то есть первым передается 7-ой бит, последним 0-ой. За адресои могут следовать один или более информационных байтов (в направлении, определенном флагом R/W), биты которых стробируются сигналом SCL из "Master"-устройства.
При совершении операции чтения "Master"-абонент должен сопровождать прочитанный байт сигналом ACK, если необходимо прочитать следующий байт, и не выдавать сигнала ACK, если собирается закончить чтение пакета (рис. 5б).
Допускается многократное возобновление "Slave"-адреса в одном цикле передачи, то есть передача повторного "Start"-условия без предварительного "Stop"-условия. Такой принцип широко применяется в управлении I2C абонентами, когда выдача нового "Start"-условия служит для синхронизации начала нового пакета данных, сопровождаемого, например, новым управляющим словом, уточняющим адресацию пакета. Логическая реализация протоколов на шине I2C не нормируется документами фирмы Philips, содержащими формальные описания шины, и может быть произвольной для каждой конкретной ИС.
gaw.ru рекомендует: офисные и квартирные переезды
|