Исследование драйвера ядра Linux для шины I2C

Автор работы: Пользователь скрыл имя, 17 Января 2012 в 14:29, курсовая работа

Краткое описание

В настоящее время только Philips производит более 150 наименований I2C-совместимых устройств, функционально предназначенных работы в электронном оборудовании различного назначения. В их числе ИС памяти, видеопроцессоров и модулей обработки аудио- и видео-сигналов, АЦП и ЦАП, драйверы ЖК-индикаторов, процессоры со встоенным аппаратным контроллером I2C шины и многое другое.

Содержание работы

Введение 5
1 Шина управления I2C 10
2 Исследование драйвера 14
Заключение 15
Список использованных источников 16

Содержимое работы - 1 файл

kyrsovik.doc

— 337.00 Кб (Скачать файл)

       На  уровне битов, устройство такое как микроконтроллер без встроенных аппаратных цепей I2C или с ограниченными цепями может замедлить частоту синхроимпульсов путем продления их НИЗКОГО периода. Таким образом скорость передачи любого ведущего адаптируется к скорости медленного устройства.

       Адресация в шине I2C

       Каждое  устройство, подключённое к шине, может  быть программно адресовано по уникальному  адресу.

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

       В обычном режиме используется 7-битная адресация.

       Процедура адресации на шине I2C заключается  в том, что первый байт после сигнала  СТАРТ определяет, какой ведомый  адресуется ведущим для проведения цикла обмена. Исключение составляет адрес "Общего вызова", который адресует все устройства на шине. Когда используется этот адрес, все устройства в теории должны послать сигнал подтверждения. Однако, устройства могут обрабатывать "общий вызов" на практике встречаются редко.

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

       После того, как адрес послан, каждое устройство в системе сравнивает первые семь бит после сигнала СТАРТ со своим адресом. При совпадении устройство полагает себя выбранным как ведомый-приёмник или как ведомый-передатчик, в  зависимости от бита направления.

       Адрес ведомого может состоять из фиксированной  и программируемой части.

       Часто случается, что в системе будет  несколько однотипных устройств (к  примеру ИМС памяти, или драйверов LED-индикаторов), поэтому при помощи программируемой части адреса становится возможным подключить к шине максимально возможное количество таких устройств. Количество программируемых бит в адресе зависит от количества свободных выводов микросхемы. Иногда используется один вывод с аналоговой установкой программируемого диапазона адресов, как это, к примеру, реализовано в ИМС SAA1064. При этом в зависимости от потенциала на этом адресном выводе ИМС, возможно смещение адресного пространства драйвера так, чтобы однотипные ИМС не конфликтовали между собой на общей шине.

       Все ИМС, поддерживающие работу в стандарте  шины I2C, имеют набор фиксированых адресов, перечень которых указан производителем в описаниях контроллеров.

       Комбинация  бит 11110ХХ адреса зарезервирована для 10-битной адресации.

       В общем виде процесс обмена по шине от момента формирования состояния СТАРТ до состояния СТОП можно проиллюстрировать следующим рисунком : 

       Как следует из спецификации шины, допускаются как простые форматы обмена, так и комбинированные, когда в промежутке от состояния СТАРТ до состояния СТОП ведущий и ведомый могут выступать и как приемник и как передатчик данных. Комбинированные форматы могут быть использованы, например, для управления последовательной памятью.  
Во время первого байта данных можно передавать адрес в памяти, который записывается во внутренний регистр-защелку. После повторения сигнала СТАРТа и адреса ведомого выдаются данные из памяти. Все решения об авто-инкременте или декременте адреса, к которому произошел предыдущий доступ, принимаются конструктором конкретного устройства. Поэтому, в любом случае лучший способ избежать неконтролируемой ситуации на шине перед использованием новой (или ранее не используемой) ИМС следует тщательно изучить ее описание (datasheet), получив его с сайта производителя. Более того, производители часто размещают рядом более подробные инструкции по применению.

       В любом случае, по спецификации шины все разрабатываемые устройства должны сбрасывать логику шины при получении сигнала СТАРТ или повторный СТАРТ и подготавливаться к приему адреса.

       Тем не менее основные проблемы с использованием I2C шины возникают именно из-за того, что разработчики, "начинающие" работать с I2C шиной не учитывают того факта, что ведущий (часто - микропроцессор) не имеет монопольного права ни на одну из линий шины.

       Расширение I2C

       Стандартная шина I2C со скоростью передачи данных 100 кбит/с и 7-битным адресом существует уже на протяжении более 10 лет в неизменном виде. Стандартная шина I2C принята повсеместно как стандарт для сотен типов микросхем, выпускаемых фирмой Philips и другими поставщиками. В настоящее время спецификация шины I2C расширена в двух направлениях : увеличение быстродействия и расширение адресного пространства для расширения номенклатуры вновь разрабатываемых устройств.

       Введение  спецификации "быстрого" режима, позволяющего в четыре раза увеличить  скорость передачи данных до 400кБит\сек. Необходимость в этом "расширении" стандарта потребовалось из-за необходимости пересылки больших объемов информации, и, как следствие, необходимость увеличения пропускной способности канала.

       Введение  спецификации "10-битной адресации", позволяющая использовать 1024 дополнительных адресов, т.к. большинство из 112 адресов, допустимых при 7-битной адресации, уже были использованы более чем один раз. Для предотвращения проблем с размещением адресов новых устройств, желательно иметь большее количество адресных комбинаций. Примерно десятикратное увеличение количества доступных адресов получено при использовании новой 10-битной адресации.

       Все новые устройства с I2C интерфейсом  работают в быстром режиме. Предпочтительно, они должны уметь принимать и/или  передавать данные на скорости 400 кбит/с. Как минимум они должны быть способны входить в синхронизацию в быстром режиме, с тем чтобы снизить скорость передачи (путем удлиннения НИЗКОГО периода SCL) до допустимой величины.

       Быстрые устройства как правило совместимы снизу-вверх, что означает их способность  работать со стандартными устройствами по медленной шине. Очевидно, что стандартные устройства не способны работать в быстрой шине, потому что они не могут синхронизироваться на высокой скорости и их состояние станет непредсказуемым. Ведомые быстрые устройства могут обладать как 7-битным, так и 10-битным адресом. Однако, 7-битный адрес более предпочтителен, так как его аппаратная реализация более проста и длина посылки меньше. Устройства с 7-битным и 10-битным адресами могут одновременно использоваться на одной шине, независимо от скорости передачи. Как существующие, так и будущие ведущие смогут генерировать и 7-битные, и 10-битные адреса.

       В быстром режиме протокол, формат, логические уровни и максимальная емкостная  нагрузка линий шины остается неизменными. Алгоритм синхронизации линий SDA и SCL не изменен. Однако, от "быстрых" устройствне требуется совместимости с CBUS-устройствами, так как они не могут работать на высоких скоростях. Входные цепи быстрых устройств должны иметь встроенное подавление выбросов и триггер Шмитта на обоих линиях Выходной буфер быстрых устройств должен иметь каскад с управлением временем заднего фронта линий SDA и SCL. Как правило при пропадании напряжения питания быстрых устройств выводы, подключенные к линиям I2C шины должны переходить в третье состояние . Претерпели изменения схемотехнические решения выходных каскадов для обеспечения времени нарастания переднего фронта (переход из НИЗКОГО состояния в ВЫСОКОЕ). Если для нагрузок шины до 200 пФ эту роль выполняют подтягивающие резисторы, то для нагрузок от 200 пФ до 400 пФ эту функцию выполняет источник тока или схема на переключаемых резисторах, обеспечивающая "форсированое" переключение линий I2C шины.

       10-битная  адресация также не изменяет  формат шины. Для этого используется  зарезервированная адресная комбинация 1111ХХХ первых семи бит первого байта. 10-битная адресация не влияет на существующую 7-битную адресацию. Устройства с 7-битной и 10-битной адресацией могут быть подключены к одной шине. Хотя имеются восемь возможных комбинаций последовательности 1111ХХХ, из них используются только четыре - 11110ХХ. Комбинации типа 11111ХХ зарезервированы для дальнейших улучшений шины. Назначение битов первых двух байтов 10-битный адрес формируется из первых двух байтов. Первые семь бит первого байта являются комбинацией вида 11110ХХ, где два младших бита (ХХ) являются двумя старшими (9 и 8) битами 10-битного адреса; восьмой бит первого байта - бит направления.  
"Ноль" в этом бите означает, что ведущий собирается записывать информацию в ведомого, а "единица" - что ведущий будет считывать информацию из ведомого. Если бит направления равен "нулю", то второй байт содержит оставшиеся 8 бит 10-битного адреса. Если бит направления равен "единице", то следующий байт содержит данные, переданные с ведомого ведущему.

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

       Об  этом, и о других, более специфических особенностях применения I2C шины, ее реализации и использовании, можно ознакомиться непосредсвенно на сайте Philips .

       1 Шина управления I2C

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

       Протокол  передачи данных разработан таким образом, чтобы гарантировать надежный прием  передаваемых данных.

       При передаче данных одно устройство является «Master», которое инициирует передачу данных и формирует сигналы синхронизации. Другое устройство «Slave» - начинает передачу только по команде, пришедшей от «Master».

       В микроконтроллерах PIC16CXXX аппаратно  реализован режим «Slave» устройства в модуле SSP. Режим «Master» реализуется программно.

       Основные  термины, используемые при описании работы с шиной I2C:

       Передатчик – устройство, передающее данные по шине

       Приемник – устройство, получающее данные с шины

       «Master» - устройство, которое инициирует передачу и формирует тактовый сигнал

       «Slave» - устройство, к которому обращается «Master»

       Multi-«Master» - режим работы шины I2C с более чем одним «Master»

       Арбитраж – процедура, гарантирующая, что только один «Master» управляет шиной

       Синхронизация – процедура синхронизации тактового сигнала от двух или более устройств

       Выходные  каскады формирователей сигналов синхронизации (SCL) и данных (SDA) должны быть выполнены  по схемам с открытым коллектором (стоком) для объединения нескольких выходов  и через внешний резистор подключены к плюсу питания для того, чтобы на шине был уровень «1», когда ни одно устройство не формирует сигнал «0». Максимальная емкостная нагрузка ограничена емкостью 400 пФ.

       Инициализация и завершение передачи данных

       В то время, когда передача данных на шине отсутствует, сигналы  SCL и SDA имеют высокий уровень за счет внешнего резистора.

       Сигналы START и STOP формируются «Master» для  определения начала и окончания  передачи данных соответственно.

       Сигнал START формируется переходом сигнала SDA из высокого уровня в низкий при высоком уровне сигнала SCL. Сигнал STOP определяется как переход SDA из низкого уровня в высокий при высоком уровне SCL. Таким образом, при передаче данных сигнал SDA может изменяться только при низком уровне сигнала SCL. 

       Адресация устройств на шине I2C

       Для адресации устройств используется два формата адреса:

       Простой 7-разрядный формат с битом чтения/записи R/W; 

       и 10-разрядный формат – в первом байте передается два старших  бита адреса и бит записи/чтения, во втором байте передается младшая часть адреса. 

       Подтверждение приема

Информация о работе Исследование драйвера ядра Linux для шины I2C