Шина SMBus основана на интерфейсе I²C, и к ней применимо все сказанное в п. 11.1.1. В шину введена возможность динамического реконфигурирования (подключения и отключения абонентов шины в процессе работы) и автоматического назначения адресов устройств. По сравнению с I²C в шине несколько изменены граничные требования к уровням сигналов и временным диаграммам (см. п. 11.1.4), но в основном они совпадают. Шина позволяет реализовать все режимы обменов, разрешенные для I²C, но имеет нюансы в правилах генерации подтверждений. Для шины SMBus в BIOS имеется стандартизованная поддержка. Особенностью шины SMBus, связанной с ее ролью в управлении системой питания, является способность автономной работы — соединяемые ею устройства могут обмениваться информацией, даже когда питание на центральном процессоре (и других подсистемах) отсутствует. Конечно, о взаимодействии с устройствами шины через BIOS в таком состоянии нет и речи, поскольку BIOS еще «спит».
В спецификациях временных параметров приняты меры по ограничению времени отклика и предотвращению «зависания» шины. Частота тактового сигнала ограничена и снизу (10 кГц), и сверху (100 кГц); введены ограничения на максимальную длительность нахождения синхросигнала в высоком и низком состоянии и максимальную суммарную «растяжку» битовых интервалов на каждый байт. Предусматривается механизм тайм-аутов, по которому устройства, обнаружившие «зависание» шины, должны немедленно прекратить обмен и повторно инициализироваться. В спецификации I²C эти моменты не рассматривались.
На шине SMBus могут использоваться
♦ Сигнал SMBSUS#
SDA
и SCL
штатным образом (как в I²C) не воспринимаются (они могут использоваться для уточнения режима приостанова).♦ Сигнал SMBALERT#
S
, P
, Sr
; биты подтверждения; 7-битная адресация и признак RW
в первом байте, следующем за условием S
(Sr
). Как и в I²C, ведущее устройство может выполнять и запись, и чтение данных ведомого устройства; используются и комбинированные транзакции (через условие Sr
). В генерации подтверждений на SMBus есть особенности. На собственный адрес устройство всегда должно отвечать битом подтверждения ACK
, даже если оно занято внутренними операциями. Это правило обеспечивает работу механизма определения присутствия данного устройства на шине. Ведомое устройство может вводить бит NACK
в ответ на любой неадресный байт, если оно занято или запрашиваемые командой данные недоступны. В этом случае у него есть и альтернатива поведения — задержать синхросигнал на низком уровне (в разрешенных пределах). Ведомое устройство должно вводить бит NACK
в ответ на недопустимые коды команд или данных. Ответ NACK
вынуждает ведущее устройство прекратить транзакцию (ввести P
). Ведущее устройство, будучи приемником, ответом NACK
информирует передатчик о приеме последнего ожидаемого байта.В шине SMBus введено понятия «хоста» (host) — абонента шины, выполняющего координирующие и конфигурирующие функции. Хост является ведущим устройством шины, при этом должен выполнять ряд функций ведомого устройства и отрабатывать сообщения уведомления.