Каждое ведомое устройство имеет свой уникальный адрес; в диапазоне 7-битных значений адреса выделяются специальные значения (табл. 11.4), которых несколько больше, чем в I²C. 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) | Назначение |
---|---|---|
0000 000 | 0 | General call address — адрес общего вызова |
0000 000 | 1 | Start — начало активного обмена |
0000 001 | X | Адрес устройства шины CBUS (для совместимости) |
0000 010 | X | Адрес для устройств иных шин |
0000 011 | X | ,Зарезервировано |
0000 1XX | X | Зарезервировано |
0101 000 | X | Хост шины ACCESS.bus |
0110 111 | X | «Дежурный» адрес ACCESS.bus |
1111 0XX | Х | Признак 10-битной адресации |
1111 1XX | X | Зарезервировано |
0001 000 | X | Хост шины SMBus |
0001 100 | X | Адрес ответа на сигнальные сообщения SMBus |
1100 001 | X | «Дежурный» адрес SMBus |
1001 0XX | Х | Адрес устройств-прототипов |
Типичное устройство SMBus поддерживает определенный набор команд, с помощью которых выполняется обмен данными.
В версии 1.1 спецификации SMBus введена возможность контроля ошибок пакета PEC (Packet error checking). Механизм PEC основан на добавлении в конец каждого передаваемого пакета байта CRC-кода, вычисляемого по всем предыдущим байтам пакета, начиная с адресного. Почти все протоколы могут иметь два варианта — без PEC и с PEC; на одной шине могут присутствовать устройства и с поддержкой PEC, и без. На байт PEC приемник отвечает подтверждением, но трактовка ответа неоднозначна. Если передатчик в ответ на PEC получил ответ NACK
ACK
не является подтверждением достоверности приема: приемник может «не понимать» PEC и отвечать на него как на обычный байт данных; приемник может и не выполнять контроль в реальном времени приема потока данных. Более «достоверный контроль достоверности» могут обеспечить лишь протоколы высших уровней. Так, например, для контроля достоверности записи в устройство можно использовать последующее чтение тех же данных с PEC, и по анализу всего принятого пакета ведущее устройство сделает вывод об успешности или ошибке операции записи.♦
RW
адресного байта.♦
RW
=0) одного байта данных. В варианте с PEC передаются два байта, последний — PEC.♦
RW
=1) одного байта данных. В варианте с PEC принимаются два байта, последний — PEC.♦
RW
=0) одного байта команды, за которым следует 1 или 2 байта (младший, а затем старший) данных. В варианте с PEC в конец добавляется контрольный байт.