Шинные протоколы SMBus основаны на транзакциях I²C с 7-битной адресацией.
♦ Quick Command , короткая команда, — посылка адресного байта; действие команды определяется битом RW
адресного байта.
♦ Send Byte , посылка байта, — передача ведущим устройством вслед за адресным байтом ( RW
=0) одного байта данных. В варианте с PEC передаются два байта, последний — PEC.
♦ Receive Byte , прием байта, — прием ведущим устройством вслед за адресным байтом ( RW
=1) одного байта данных. В варианте с PEC принимаются два байта, последний — PEC.
♦ Write Byte, Write Word , запись байта/слова, — передача ведущим устройством вслед за адресным байтом ( RW
=0) одного байта команды, за которым следует 1 или 2 байта (младший, а затем старший) данных. В варианте с PEC в конец добавляется контрольный байт.
♦ Read Byte, Read Word , чтение байта/слова, — комбинированные транзакции: сначала посылается адресный байт ( RW
=0), за которым передается код команды. Далее, через условие 5 посылается адресный байт с тем же адресом устройства, но RW
=1, после которого принимается 1 или 2 байта данных. В варианте с PEC в конце ожидается прием дополнительного (контрольного) байта.
♦ Block Write , запись блока, — передача ведущим устройством вслед за адресным байтом ( RW
=0) одного байта команды, за которым следует байт-указатель длины (количество последующих байт) и собственно байты данных. В варианте с PEC в конец добавляется контрольный байт. Указатель длины не учитывает байт PEC; он не может быть нулевым; одной блочной командой можно пересылать до 32 байт данных.
♦ Block Read , чтение блока, — комбинированная транзакция: сначала посылается адресный байт ( RW
=0), за которым передается код команды. Далее, через условие S посылается адресный байт с тем же адресом устройства, но RW
=1, после которого принимается байт-указатель длины, а за ним и собственно байты данных. В варианте с PEC в конце ожидается прием дополнительного (контрольного) байта. Указатель длины — аналогично блочной записи.
♦ Process Call , вызов процесса, — комбинация команды Write Word с приемом слова (двух байт) от устройства с тем же адресом. Команда называется вызовом процесса, поскольку ожидает данных, зависящих от посланного кода команды и слова данных. В варианте с PEC контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.
♦ Block Write-Block Read Process Call — комбинация записи блока с последующим чтением блока по тому же адресу устройства. В варианте с PEC контрольный байт ожидается только в самом конце, вслед за последним байтом принятых данных.
В случае, когда ведущим устройством шины собирается выступать рядовое устройство (не хост), оно должно использовать протокол уведомления хоста (SMBus host notify protocol): устройство на адрес хоста с RW
=0 (он известен) посылает байт с собственным адресом, за которым следует слово (два байта) собственно уведомления. Хост обязан понимать эти уведомления; дополнительно может использоваться и необязательный сигнал внимания SMBALERT#
(см. ниже).
Автоматическое назначение адресов
Динамическое реконфигурирование шины SMBus — возможность «горячего» подключения/отключения основано на базовых принципах протокола I²C. Автоматическое назначение адресов, появившееся в версии 2.0, использует еще и контрольные байты пакетов (PEC). Задача динамического реконфигурирования включает распознавание фактов подключения/отключения устройств и обеспечение бесконфликтного распределения их адресов. Подключение новых устройств может распознаваться двумя способами. Устройство, которое может работать ведущим устройством, при подключении (после своей инициализации по включению питания) может послать хосту уведомление, содержащее его адрес. Другой вариант обнаружения — периодический опрос устройств ведущим устройством, ведающим «переучетом» всех устройств на шине.
Для динамического бесконфликтного назначения личных адресов устройств используется протокол ARP (Address Resolution Protocol). Назначение адресов основано на стандартном механизме арбитража (разрешения конфликтов) шины SMBus (и I²C). Назначенный адрес запоминается устройством на все время, пока подано питание. Возможны и устройства PSA (Persistent Slave Address), «вспоминающие» ранее назначенный адрес после повторного включения питания. После назначения адреса обмен с устройством выполняется точно так же, как и с устройством с фиксированным адресом. Назначение адресов может выполнять любое ведущее устройство шины SMBus.
Читать дальше