Формат посылки и передаваемых данных
Передаваемые биты
Каждый передаваемый бит данных по шине TWI сопровождается импульсом на линии синхронизации. Уровень данных должен быть стабильным, когда на линии синхронизации присутствует лог. 1. Исключением для этого правила является генерация условий старта и останова сеанса связи.
Рисунок 87. Действительность данных
Условия СТАРТа и ОСТАНОВа
Ведущее устройство инициирует и заканчивает передачу данных. Передача инициируется, когда ведущий формирует условие СТАРТа на шине, и прекращается, когда ведущий формирует на шине условие ОСТАНОВа. Между условиями СТАРТа и ОСТАНОВа шина считается занятой и в этом случае ни какой другой мастер не может осуществлять управляющие воздействия на шине. Существуют особые случаи, когда новое условие СТАРТа возникает между условиями СТАРТа и ОСТАНОВа. Данный случай именуется как условие "Повторного старта" и используется при необходимости инициировать мастером новый сеанс связи, не теряя при этом управление шиной. После "Повторного старта" шина считается занятой до следующего ОСТАНОВа. Это идентично поведению после СТАРТа, следовательно, при описании ссылка на условие СТАРТа распространяется и на "Повторный старт", если, конечно же, нет специального примечания. Как показано ниже, условия СТАРТа и ОСТАНОВа являются изменение логического уровня на линии SDA, когда на линии SCL присутствует лог. 1.
Рисунок 88. Условия СТАРТа, ПОВТОРНОГО СТАРТА и ОСТАНОВа
Формат адресного пакета
Все передаваемые адресные пакеты по шине TWI состоят из 9 бит, в т.ч. 7 бит адреса, один бит управления для задания типа операции ЧТЕНИЕ/ЗАПИСЬ и один бит подтверждения. Если бит ЧТЕНИЕ/ЗАПИСЬ = 1, то будет выполнена операция чтения, иначе - запись. Если подчиненный распознает, что к нему происходит адресация, то он должен сформировать низкий уровень на линии SDA на 9-ом цикле SCL (формирование бита подтверждения). Если адресуемое подчиненное устройство занято или по каким-либо другим причинам не может обслужить ведущее устройство, то на линии SDA необходимо оставить высокий уровень во время цикла подтверждения. Ведущий после этого может передать условие ОСТАНОВа или "Повторного старта" для инициации новой передачи. Адресный пакет, состоящий из адреса подчиненного устройства и бита ЧТЕНИЕ или ЗАПИСЬ, обозначим как ПОДЧИН_АДР+ЧТЕНИЕ или ПОДЧИН_АДР+ЗАПИСЬ, соответственно.
Старший разряд адресного байта передается первым. Нет никаких ограничений на выбор адреса подчиненного устройства, за исключением адреса 0000 000, который зарезервирован для общего вызова.
При определении общего вызова все подчиненные устройства должны ответить низким уровнем на линии SDA во время цикла подтверждения (ACK). Общий вызов необходимо использовать, если одно и тоже сообщение необходимо передать от ведущего к нескольким подчиненным устройствам. Если вслед за битом ЗАПИСИ передан адрес общего вызова, то все подчиненные устройства устанавливают низкий уровень на линии SDA для подтверждения общего вызова во время цикла подтверждения. Следующие пакеты данных будут приниматься всеми подчиненными устройствами, которые подтвердили общий вызов. Обратите внимание, что передача адреса общего вызова вслед за битом ЧТЕНИЕ бессмысленна, т.к. одновременное чтение нескольких подчиненных устройств одним ведущим не возможно.
Все адреса с форматом 1111 xx необходимо зарезервировать для будущего использования.
Рисунок 89. Формат адресного пакета
Формат пакета данных
Все пакеты данных, передаваемые по шине TWI, состоят из 9 бит, в т.ч. 1 байт данных и бит подтверждения. Во время передачи данных ведущее устройство генерирует синхронизацию, а также условия СТАРТа и ОСТАНОВа, при этом на приемник возлагается подтверждение приема. Подтверждение (ПОДТВ) сигнализируется приемником выводом низкого уровня на линию SDA во время 9-го такта сигнала SCL. Если приемник оставляет линию SDA в высоком состоянии, то этот сигнализирует о том, что подтверждения не было (НЕТ ПОДТВ). После получения приемником последнего байта или если по каким-либо причинам не имеется возможности далее принимать данные он должен информировать передатчика отправкой бита НЕТ ПОДТВ (нет подтверждения) после последнего байта. Старший бит данных передается первым.
Рисунок 90. Формат пакета данных
Сочетание пакетов адреса и данных во время сеанса связи
Сеанс связи обычно состоит из условия СТАРТа, ПОДЧИН_АДР+ЧТЕНИЕ/ЗАПИСЬ, одного или более пакетов данных и условия ОСТАНОВа. Передача пустого сообщения, которое состоит из условия СТАРТа, переданного вслед за условием ОСТАНОВа, является недопустимым. Обратите внимание, что монтажное "И" на линии SCL может использоваться для реализации подтверждения связи между ведущим и подчиненным. Подчиненный может продлить низкое состояние на линии SCL путем установки лог. 0 на выводе SCL. Данный способ полезно использовать, если установленная скорость связи мастером является повышенной по отношению к подчиненному или если подчиненному требуется дополнительное время на обработку между приемами данных. Починенный, продлевающий низкое состояние на линии SCL, не будет оказывать влияние на длительность высокого состояния SCL, которая определяется мастером. Как следствие, подчиненный может снизить скорость передачи данных, продлевая рабочий цикл SCL.
На рисунке 91 показана типичная передача данных. Обратите внимание, что несколько байт данных могут быть переданы между условиями ПОДЧИН_АДР+ЧТЕНИЕ/ЗАПИСЬ и СТОП в зависимости от программного протокола, реализованного в прикладной программе.
Рисунок 91. Типичная передача данных
|