Выбрать главу

♦ Байт Start предназначен для облегчения программной реализации протокола I²C (для функций ведомых устройств, не имеющих полной аппаратной реализации протокола). На байт Start не должно отвечать ни одно устройство. Формируемый сигнал SDA (рис. 11.2) может быть использован как запрос аппаратного прерывания, по которому процессор «вплотную» займется обработкой сигналов I²C. До получения этого байта процессор (микроконтроллер) может не отвлекаться на слежение за сигналами интерфейса.

♦ На адреса шины CBUS (трехпроводный «родственник» шины I²C) и иных шин устройства I²C отвечать не должны.

♦ При использовании 10-битной адресации биты [2:1] содержат старшую часть адреса, форматы 10-адресных посылок рассмотрены ниже.

Рис. 11.2. Временна́я диаграмма байта Start

Посылка общего вызова используется для одной из двух целей, определяемых вторым байтом, младший бит которого называется В. При В=0 устройства, принявшие общий вызов, должны считать программируемую часть своего аппаратного адреса, выполнив (второй байт 00000110b) или не выполнив (000000100b) внутреннюю процедуру сброса. Другие значения байта устройства должны игнорировать. Каким образом программируется адрес, зависит от устройства (указывается в его описании). При В=1 общий вызов используется для широковещательной передачи данных. В этом случае ведущее устройство в старших 7 битах второго байта сообщает свой адрес (тот же, на который оно отзывается в роли ведомого), а далее посылает требуемое количество байт данных, которые оно желает донести до неизвестного ему приемника. Приемник (как правило, это интеллектуальное устройство) должен отвечать подтверждением на каждый принятый байт начиная с первого (общий вызов), затем на адрес ведущего устройства и последующие байты данных.

Широковещательная передача может использоваться, например, аппаратным контроллером клавиатуры, не знающим, на какой адрес посылать свои асинхронно возникающие сообщения. Вместо этого возможна и иная схема: по включении (и сбросу) это устройство становится ведомым приемником, которому ведущее устройство (системный контроллер) сообщит адрес потребителя информации для дальнейших «узконаправленных» передач, в которых это устройство будет уже ведущим.

Введение 10-битной адресации стало решением проблемы дефицита адресов: при 7-битной адресации с учетом зарезервированных комбинаций остается только 112 адресов, при 10-битной доступны еще 1024 адреса. Передача данных ведущим устройством с 10-битной адресацией выглядит просто: в первом байте после S (Sr) биты 2:1 несут старшие биты адреса, бит 0 — признак RW=0; второй байт несет младшие 8 бит адреса, а последующие байты — передаваемые данные. Приемник дает подтверждения обычным способом. Прием данных ведущим устройством несколько сложнее, поскольку признак RW является явным указателем на смену направления передачи и младшую часть адреса ведущее устройство передать уже не может. Прием по 10-битному адресу ведущее устройство начинает как фиктивную передачу: в первом байте посылает признак 10-битной записи и 2 бита адреса, во втором байте — остаток адреса. Далее ведущее устройство выполняет условие Sr и посылает признак 10-битного чтения (RW=1) с двумя старшими битами того же адреса. Ведомый передатчик, получив те же 2 старшие бита адреса, что и до Sr, отвечает подтверждением и начинает передавать данные ведущему устройству. Этот процесс продолжается и завершается так же, как и с 7-битной адресацией. Возможны и комбинированные обмены: реальная передача ведущего устройства 10-битному устройству, за которой после Sr следует чтение того же устройства. Также возможно комбинирование (через Sr) 7- и 10-битных обращений к разным устройствам. Широковещание с 10-битной адресацией выглядит так же, как и с 7-битной, но адрес ведущего устройства передается уже двумя байтами (младшие 8 бит адреса передаются на месте первого байта данных).

Высокоскоростной режим (Hs) позволяет обмениваться данными со скоростью до 3,4 Мбит/с, причем обеспечивается обратная совместимость устройств Hs с быстрыми и стандартными (F/S). Для обеспечения возможности обмена на столь высокой скорости выходные и входные буферы микросхем должны переключаться в специальный режим работы, отличающийся параметрами формируемых и принимаемых импульсов. Сигналы высокоскоростных устройств обозначаются как SDAH и SCLH; в смешанных системах для работы в Hs они должны отделяться от линий SDA и SCL обычных устройств специальными мостами (поведение устройств F/S на таких частотах непредсказуемо). В режиме Hs уже нет речи о разрешении конфликтов — арбитраж выполняется на скоростях F/S; также здесь нет возможности синхронизации по каждому биту (замедления передачи ведомым устройством), а ведущим устройством устанавливаются жесткие соотношения длительности низкого и высокого уровней сигнала SCLH (2:1). Ведомое устройство может притормаживать обмен только после выдачи бит подтверждений. Для перехода в режим Hs ведущее устройство в первом байте (после S) использует зарезервированное значение 00001ххх, в котором xxx несет код ведущего устройства. Во время передачи этого байта (на скорости F/S) выполняется арбитраж — если обмен одновременно пытаются начать несколько устройств, продолжать его может только выигравшее ведущее устройство. Код ведущего устройства в режиме Hs назначается при конфигурировании, а все ведущие устройства на шине в режиме Hs должны иметь различные коды (код 000 зарезервирован), чем и обеспечивается завершение арбитража за время передачи первого байта. Ведущее устройство может переключиться в режим Hs, только если оно выиграло арбитраж и получило единичный бит подтверждения. В этом случае он перестраивает свои выходные и входные буферы на параметры Hs и формирует повторный старт (Sr). Далее обмен логически выполняется точно так же, как и в режиме F/S, но уже на высокой скорости. Режим Hs может распространяться на несколько последующих передач, разделенных условиями Sr, и завершится работа в режиме Hs по условию P, по которому буферные схемы снова вернутся к параметрам F/S.

11.1.2. Шина ACCESS.Bus

Последовательная шина ACCESS.Bus (Accessory Bus) разрабатывалась фирмой DEC как унифицированный недорогой интерфейс взаимодействия компьютера с внешними устройствами — клавиатурой, координатными устройствами, текстовыми устройствами (принтеры, считыватели штрих-кодов), мониторами (в плане обмена управляющей и конфигурационной информацией по каналу VESA DDC). История ACCESS.Bus начинается с 1991 г.; несколько позже в шину вели дополнительную спецификацию для взаимодействия с внутренними устройствами, например, интеллектуальными источниками питания (Smart Battery) и т. п. К внутренним относятся устройства системного управления SM (System Management), и в спецификации имеются точки соприкосновения с шиной SMBus, основанной на том же интерфейсе I²C. Формально шина позволяет обмениваться сообщениями устройствам числом до 125 (предел принятой системы адресации). Над аппаратным протоколом I²C в шине ACCESS.Bus имеется базовый программный протокол, с которым взаимодействуют протоколы конкретных подключенных устройств. Протоколы обеспечивают подключение/отключение устройств без перезагрузки ОС и автоматическое динамическое назначение адресов. Последняя доступная версия ACCESS.bus Specifications Version 3.0 опубликована ACCESS.bus Industry Group в 1995 г., дальнейшее описание сделано на ее основе.