Сетевой уровень 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) Назначение

0000 000
0000 000
0000 001 X
0000 010 X
0000 011 X
0000 1ХХ X
X
X
1111 ОХХ X
1111 1ХХ X
0001 000 X
0001 100 X
X
1001 ОХХ X

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, чтение байта/слова, — комбинированные транзакции:
сначала посылается адресный байт (RW=0), за которым передается код коман­ды. Далее, через условие 5 посылается адресный байт с тем же адресом устрой­ства, но RW=1, после которого принимается 1 или 2 байта данных. В варианте с РЕС в конце ожидается прием дополнительного (контрольного) байта.



♦ 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* (см. ниже).


8231927559026081.html
8231964370710098.html
    PR.RU™