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