5.3.1 Шина I2C

Предыдущая  Содержание  Следующая V*D*V

Шина I2C имеет две линии: линию SDA (данные) и линию SCL (тактовая частота). Линия SDA несёт такую информацию, как адрес, данные и подтверждение, один бит на такт. Приемник и отправитель синхронизируются между собой с помощью линии тактовой частоты. На одной шине I2C могут находиться множество устройств I2C; устройства классифицируются как ведущие или ведомые. Ведущее - это устройство, которое стартует и останавливает передачу и генерирует сигналы на линии тактирования. Ведомое - это устройство, которое адресуется ведущим. Ведущим может быть как передатчик, так и приёмник; то же самое относится к ведомым устройствам. Каждое устройство на шине I2C имеет уникальный 7-ми или 10-ти разрядный адрес, который используется для идентификации этого устройства. Пример реализации показан на Рисунке 5.5.

 

Рисунок 5.5 Шина I2C.

Рисунок 5.5 Шина I2C.

 

Передача данных по I2C делится на следующие фазы:

 

Фаза ожидания (idle): когда шина I2C не используется, обе линии, SDA и SCL, находятся в состоянии ВЫСОКОГО уровня.

Фаза старта (start): когда линия SDA меняет уровень с ВЫСОКОГО на НИЗКИЙ и когда SCL сохраняет ВЫСОКИЙ уровень, это означает начало фазы данных. Она инициируется ведущим устройством.

Фаза адресации (address): в этой фазе ведущий посылает адрес ведомого целевого устройства и режим передачи данных (чтение или запись). Ведомое устройство должно ответить подтверждением, чтобы могла начаться фаза передачи данных.

Фаза передачи данных (data transfer): по шине I2C данные передаются побитово. В конце передачи каждого байта  приемником к передатчику посылается один бит подтверждения.

Фаза останова (стоп): ведущий указывает это, переводя линию SDA из НИЗКОГО в ВЫСОКИЙ уровень в то время, когда линия SCL сохраняет ВЫСОКИЙ уровень.

 

Когда на шине I2C ведущий должен послать данные ведомому устройству, выполняются следующие шаги, показанные на Рисунке 5.6.

 

Рисунок 5.7 Запись данных на шине I2C.

Рисунок 5.7 Запись данных на шине I2C.

 

1.Ведущий сигнализирует о состоянии СТАРТ.

2.Ведущий посылает адрес ведомого устройства, которому он хочет послать данные, и посылает режим передачи как запись.

3.Ведомый посылает ведущему устройству подтверждение.

4.Ведущий посылает адрес, по которому данные должны быть записаны в ведомом устройстве.

5.Ведомый посылает ведущему устройству подтверждение.

6.Ведущий посылает по шине SDA данные для записи.

7.В конце байта передачи ведомое устройство отправляет бит подтверждения.

8.Два вышеописанных шага выполняются вновь, пока записываются все необходимые байты. Адрес записи автоматически увеличивается на единицу.

9.Ведущий сигнализирует о состоянии СТОП.

 

Когда на шине I2C ведущему необходимо прочитать данные из ведомого устройства, выполняются следующие шаги, показанные на Рисунке 5.7.

 

Рисунок 5.7 Чтение данных на шине I2C.

Рисунок 5.7 Чтение данных на шине I2C.

 

1.Ведущий сигнализирует о состоянии СТАРТ.

2.Ведущий посылает адрес ведомого устройства, которому он хочет послать данные, и посылает режим передачи как чтение.

3.Ведомый посылает ведущему устройству подтверждение.

4.Ведущий посылает адрес, по которому данные должны быть прочитаны в ведомом устройстве.

5.Ведомый посылает ведущему устройству подтверждение.

6.Ведомый посылает по шине SDA данные для чтения.

7.В конце байта передачи ведомое устройство отправляет бит подтверждения.

8.Два вышеописанных шага выполняются вновь, пока записываются все необходимые байты. Адрес чтения автоматически увеличивается на единицу. Однако, для последнего байта ведущий не посылает подтверждение. Это предотвращает отправку ведомым устройством дополнительных данных по шине.

9.Ведущий сигнализирует о состоянии СТОП.

 

Предыдущая  Содержание  Следующая