•
0×08 Start Был сделан старт. Теперь мы решаем что делать дальше, например послать
адрес ведомого
•
0×10 ReStart Был обнаружен повторный старт. Можно переключиться с записи на чтение
или наоборот. От логики зависит.
•
0×18 SLA+W+ACK Мы отправили адрес с битом записи, а в ответ получили ACK от
ведомого. Значит можно продолжать.
•
0×20 SLA+W+NACK Мы отправили адрес с битом записи, а нас послали NACK. Обидно,
сгенерим ошибку или повторим еще раз.
•
0×28 Byte+ACK Мы послали байт и получили подтверждение, что ведомый его принял.
Продолжаем.
•
0×30 Byte+NACK Мы послали байт, но подтверждение не получили. Видимо ведомый уже
сыт по горло нашими подачками или он захлебнулся в данных. Либо его ВНЕЗАПНО
посреди передачи данных украли инопланетяне.
•
0×38 Collision А у нас тут клановые разборки — пришел другой мастер, по хамски нас
перебил, да так, что мы от возмущения аж заткнулись. Ничего I’l be back! До встречи через
n тактов!
•
0×40 SLA+R+ACK Послали адрес с битом на чтение, а ведомый отозвался. Хорошо! Будем
читать.
•
0×48 SLA+R+NACK Крикнули в шину “Эй ты, с адресом ХХХ, почитай нам сказки” А в ответ
“Иди NACK!” В смысле на запрос адреса с битом чтения никто не откликнулся. Видимо не
хотят или заняты. Также может быть никого нет дома.
•
0×50 Receive Byte Мы приняли байт. И думаем что бы ответить ведомому. ACK или NACK.
•
0×58 Receive Byte+NACK Мы приняли байт от ведомого и сказали ему “иди NACK!” И он
обиженый ушел, освободив шину.
Коды состояний для режима Slave:
•
0×68 Receive SLA+W LP Мы были мастером, трепались с подчиненными по шине. И тут
появляется на шине другой, более равный, мастер, перебивает нас и молвит “Уважаемый
ХХ, а не возьмете ли вы вот эти байтики…” Чтож, он круче. Придется бросать передачу и
брать его байты себе.
•
0×78 Receive SLA+W LP Broadcast Были мы, как нам казалось, самыми крутыми мастерами
на шине. Пока не появился другой мастер и перебив нас прогундосил на всю шину “Эй,
слышь тыыы. Слушай сюда” Девайсы-лохи, с неотключенными широковещательными
запросами подчиняются. Остальные отмораживаются и всякое Broadcast-быдло
игнорируют.
•
0×60 Receive SLA+W Сидим на шине, никого не трогаем, ни с кем не общаемся. А тут нас по
имени… Конечно отзовемся :)
•
0×70 Receive SLA+W Broadcast Ситуация повторяется, но на этот раз слышим уже знакомое
нам “Слышь, тыыыы”. Кто? К кому? Игнорируем Broadcast запросы? Или нет? Зависит от
моральных качеств программы.
•
0×80 Receive Byte & 0×90 Receive Byte Broadcast Принимаем байты. От кого и в каком виде
не важно. Решаем что сказать Давай еще (ACK) или “Иди NACK”. Тут уже по
обстоятельствам.
•
0×88 Receive Last Byte & 0×98 Receive Last Byte Broadcast Приняли последний байт и
распихиваем по карманам.
•
0xA0 Receive ReStart Ой у нас Повторный старт. Видимо то что пришло в первый раз был
таки адрес страницы. А сейчас пойдут данные…
•
0xB0 Receive SLA+R LP Слали мы что то слали, а тут нас перебивает другой мастер,
обращается по имени и говорит “А ну ХХ зачитай нам что нибудь из Пушкина” Что делать,
приходится читать.