Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Сетевой уровень SMBus
В шине SMBus введено понятия «хоста» (host) — абонента шины, выполняющего координирующие и конфигурирующие функции. Хост является ведущим устройством шины, при этом должен выполнять ряд функций ведомого устройства и отрабатывать сообщения уведомления. Каждое ведомое устройство имеет свой уникальный адрес; в диапазоне 7-битных значений адреса выделяются специальные значения (табл. 11.4), которых несколько больше, чем в PC. 10-битная адресация в текущей версии не рассматривается. Адреса устройств разделяются по типам. Для устройств однозначно понятного назначения SMBus WG выделяет специальные адреса (Purpose-assigned addresses). Например, батареи Smart Battery имеют адрес 0001 011, их зарядные устройства— 0001 001. Устройства с этими адресами обязаны соответствовать требованиям SMBus, предъявляемым к устройствам данного класса. Ряд систем с SMBus определяют и используют эти устройства, основываясь на их адресе. Другие системы могут и не доверять одному только адресу, а определять типы присутствующих устройств иным образом. Для устройств разнообразного назначения, а также устройств, не полностью отвечающих спецификациям SMBus для своего класса, производители назначают иные адреса, с которыми можно ознакомиться на сайте www.smbus.org. Адреса устройств-прототипов задействуются исключительно в экспериментально-отладочных целях и в коммерческих изделиях использоваться не должны. В спецификации SMBus 2.0 появилась возможность автоматического динамического назначения адресов устройств, которая будет рассмотрена ниже. Таблица 11.4. Специальные адреса SMBus Биты [7: 1] Бит 0 (RW) Назначение
General call address — адрес общего вызова Start — начало активного обмена Адрес устройства шины CBUS (для совместимости) Адрес для устройств иных шин , Зарезервировано Зарезервировано Хост шины ACCESS.bus «Дежурный» адрес ACCESS.bus Признак 10-битной адресации Зарезервировано Хост шины SMBus Адрес ответа на сигнальные сообщения SMBus «Дежурный» адрес SMBus Адрес устройств-прототипов 436__________ Глава 11. Вспомогательные последовательные интерфейсы и шины Типичное устройство SMBus поддерживает определенный набор команд, с помощью которых выполняется обмен данными. Команда кодируется одним байтом, передаваемым в транзакции вслед за адресным байтом. Команды могут использовать один из 11 протоколов, определенных в SMBus. В версии 1.1 спецификации SMBus введена возможность контроля ошибок пакета PEC (Packet error checking). Механизм PEC основан на добавлении в конец каждого передаваемого пакета байта CRC-кода, вычисляемого по всем предыдущим байтам пакета, начиная с адресного. Почти все протоколы могут иметь два варианта — без РЕС и с РЕС; на одной шине могут присутствовать устройства и с поддержкой РЕС, и без. На байт РЕС приемник отвечает подтверждением, но трактовка ответа неоднозначна. Если передатчик в ответ на РЕС получил ответ NACK, это означает, что приемник не подтвердил корректный прием пакета. Однако ответ АС К не является подтверждением достоверности приема: приемник может «не понимать» РЕС и отвечать на него как на обычный байт данных; приемник может и не выполнять контроль в реальном времени приема потока данных. Более «достоверный контроль достоверности» могут обеспечить лишь протоколы высших уровней. Так, например, для контроля достоверности записи в устройство можно использовать последующее чтение тех же данных с РЕС, и по анализу всего принятого пакета ведущее устройство сделает вывод об успешности или ошибке операции записи. Шинные протоколы SMBus основаны на транзакциях PC с 7-битной адресацией. ♦ Quick Command, короткая команда, — посылка адресного байта; действие команды определяется битом RW адресного байта. ♦ Send Byte, посылка байта, — передача ведущим устройством вслед за адресным байтом (RW=0) одного байта данных. В варианте с РЕС передаются два байта, последний — РЕС. ♦ Receive Byte, прием байта, — прием ведущим устройством вслед за адресным байтом (RW=1) одного байта данных. В варианте с РЕС принимаются два байта, последний — РЕС. ♦ Write Byte, Write Word, запись байта/слова, — передача ведущим устройством вслед за адресным байтом (RW=0) одного байта команды, за которым следует 1 или 2 байта (младший, а затем старший) данных. В варианте с РЕС в конец добавляется контрольный байт. ♦ Read Byte, Read Word, чтение байта/слова, — комбинированные транзакции: ♦ Block Write, запись блока, — передача ведущим устройством вслед за адресным байтом (RW=0) одного байта команды, за которым следует байт-указатель длины (количество последующих байт) и собственно байты данных. В варианте с РЕС в конец добавляется контрольный байт. Указатель длины не учитывает байт РЕС; он не может быть нулевым; одной блочной командой можно пересылать до 32 байт данных. 11.1. Последовательные шины на базе PC________________________________ 437 ♦ Block Read, чтени блока, — комбинированная транзакция: сначала посылается адресный байт (RW=0), за которым передается код команды. Далее, через условие S посылается адресный байт с тем же адресом устройства, но RW=1, после которого принимается байт-указатель длины, а за ним и собственно байты данных. В варианте с РЕС в конце ожидается прием дополнительного (контрольного) байта. Указатель длины — аналогично блочной записи. ♦ Process Call, вызов процесса, — комбинация команды Write Word с приемом слова (двух байт) от устройства с тем же адресом. Команда называется вызовом процесса, поскольку ожидает данных, зависящих от посланного кода команды и слова данных. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных. ♦ Block Write-Block Read Process Call — комбинация записи блока с последующим чтением блока по тому же адресу устройства. В варианте с РЕС контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных. В случае, когда ведущим устройством шины собирается выступать рядовое устройство (не хост), оно должно использовать протокол уведомления хоста (SMBus host notify protocol): устройство на адрес хоста с RW=0 (он известен) посылает байт с собственным адресом, за которым следует слово (два байта) собственно уведомления. Хост обязан понимать эти уведомления; дополнительно может использоваться и необязательный сигнал внимания SMBALERT* (см. ниже).
|