Вы здесь

I2C шина

I2C (или как многие называют ее И2Ц) это двупроводная последовательная шина, разработанная корпорацией Philips (сейчас NXP) в начале 80-х. На данный момент шина I2C широко используется для связи однокристальных микроконтроллеров, микросхем памяти (EEPROM), аналого-цифровых и цифро-аналоговых преобразователей, датчиков температуры и давления а также множества других периферийных устройств.

Спецификация шины I2C описывает 4 скоростные категории для двунаправленной передачи данных:

Standard-mode (Sm) скорость до 100 кбит/с
Fast-mode (Fm) скорость до 400 ​кбит/с
Fast-mode Plus (Fm+) скорость до 1 Мбит/с
High-speed mode (Hs-mode) скорость до 3.4​ Мбит/с

Шина I2C использует две линии - SDA (линия данных) и SCL (линия синхронизации).

I2C шина

Данные передаются между двумя устройствами - Master (ведущий) и Slave (ведомый). Ведущий инициирует передачу данных и формирует сигналы синхронизации. Ведомый может начать передачу данных только по команде ведущего

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

Все устройства подключаются к шине через открытый коллектор или открытый сток. При таком подключении, устройство может или ​выдавать на шину логический ноль, или не выдавать ничего (выход находится в состоянии высокого импеданса).

I2C bus multimaster

Если выходы всех устройств, подключенных к шине, находятся в состоянии высокого импеданса, то два внешних резистора Rp подтягивают обе линии к напряжению питания Vdd, и тем самым устанавливают логическую единицу. Значение этих резисторов обычно колеблется от 1 кОм до 10 кОм. Если одно или несколько устройств выдают логический 0, то и на линии устанавливается низкий уровень напряжения. Шина считается свободной, когда ни одно из устройств не передает данных и обе линии установлены в 1.

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

I2C Data Byte Transfer

Данная осциллограмма может быть условно разделена на семь частей:

  • формирование состояния START (S);
  • передача адреса ведомого устройства;
  • бит направления данных (чтение или запись);
  • подтверждение приема (ACK) адреса ведомого устройства;
  • передача байта данных;
  • подтверждение приема (ACK) байта данных;
  • формирование состояния STOP (P).

Все семь частей осциллограммы мы детально обсудим в разделе Передача байта данных по I2C шине. Сейчас же мы обратим внимание на передачу одного бита данных по шине I2C.

I2C Bit

В процессе передачи данных, значения на линии SDA изменяются, когда линия SCL в нуле. Когда линия SCL в единице, принимающее устройство считывает бит данных (состояние SDA линии). В этот момент данные на линии SDA должны оставаться неизменными.

Rating: 
Средняя: 4.2 (25 оценок)

Языки

Вход на сайт