Все о шине Arduino I2C

Шина Arduino I2C

В лице Arduino может создавать большое количество проектов как вы видели, читая Hwlibre, простое программирование микроконтроллера. А вот между аналоговыми и цифровыми соединениями этой платы hardware libre, есть некоторые, которые до сих пор неизвестны многим новичкам, например, истинный потенциал соединений ШИМ, SPI, контактов RX и TX последовательного порта или самой шины I2C. Поэтому с помощью этой записи вы сможете узнать как минимум все, что вам нужно об I2C.

В лице шина I2C Вы можете подключать и использовать множество сторонних устройств, поддерживающих этот тип протокола, для связи с платой Arduino. Между ними вы можете подключать акселерометры, дисплеи, счетчики, компасы и многие другие интегральные схемы благодаря этому изобретению Philips.

Что такое I2C?

I2C относится к взаимосвязанной цепи, то есть межинтегральная схема. Это шина последовательной передачи данных, разработанная в 1982 году компанией Philips Semiconductors, которая сегодня является NXP Semiconductors после того, как избавилась от этой секции. Изначально он создавался для телевизоров этой марки, чтобы просто обмениваться данными между несколькими внутренними микросхемами. Но с 1990 года I2C получил распространение и используется многими производителями.

В настоящее время используется десятками производителей микросхем для нескольких функций. Atmel, создатель микроконтроллеров для плат Arduino, ввел обозначение TWI (двухпроводной интерфейс) в целях лицензирования, хотя оно идентично I2C. Но в 2006 году срок действия оригинального патента истек, и на него больше не распространяется авторское право, поэтому термин I2C был повторно использован (по-прежнему защищается только логотип, но его реализация или использование этого термина не ограничивается).

Технические характеристики шины I2C

Шина I2C

El Шина I2C стала отраслевым стандартом, и Arduino реализовал ее для связи с периферийными устройствами, которые в этом нуждаются. Для его работы требуются только две линии или кабеля: одна для тактового сигнала (CLK), а другая для передачи последовательных данных (SDA). Это выгодно по сравнению с другими коммуникациями по сравнению с шиной SPI, хотя ее работа несколько сложнее из-за требуемых дополнительных схем.

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

Кроме того, шина I2C имеет Архитектура типа Master-Slave, то есть мастер-раб. Это означает, что когда связь запускается ведущим устройством, оно сможет отправлять или получать данные от своих ведомых устройств. Ведомые не смогут инициировать обмен данными, это может сделать только ведущее устройство, и также ведомые устройства не могут общаться друг с другом напрямую без вмешательства ведущего.

Если у вас есть несколько учителей в автобусе, только один может быть учителем одновременно. Но того не стоит, так как смена учителя требует большой сложности, поэтому нечасто.

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

Протокол шины I2C также предусматривает использование подтягивающих резисторов в линиях напряжения питания (Vcc), хотя эти резисторы обычно не используются с Arduino. подтягивание, потому что библиотеки программирования as Wire активирует внутренние со значениями 20-30 k. Это может быть слишком мягким для некоторых проектов, поэтому нарастающие фронты сигнала будут медленнее, поэтому можно использовать более низкие скорости и более короткие расстояния связи. Чтобы исправить это, вам может потребоваться установить внешние подтягивающие резисторы от 1 кОм до 4 кОм.

сигнал

Сигнал I2C

La кадр связи из которых сигнал шины I2C состоит из битов или состояний (используемых в Arduino, поскольку стандарт I2C допускает другие):

  • 8 бит, 7 из них адрес ведомого устройства, к которому вы хотите получить доступ, чтобы отправлять или получать с него данные. С помощью 7 бит можно создать до 128 различных адресов, так что теоретически можно получить доступ к 128 устройствам, но можно получить доступ только к 112, поскольку 16 зарезервированы для специальных целей. И дополнительный бит, указывающий, хотите ли вы отправить или получить информация о подчиненном устройстве.
  • Существует также бит проверки, если он не активен, связь не будет действительной.
  • Тогда байты данных что они хотят послать или получить рабами. Каждый байт, как вы знаете, состоит из 8 бит. Обратите внимание, что на каждые 8 ​​бит или 1 байт отправленных или полученных данных требуются дополнительные 18 бит проверки, адреса и т. Д., Что означает, что скорость шины очень ограничена.
  • Последний кусочек проверка достоверности коммуникации.

Кроме того, тактовая частота для передачи 100 МГц в стандартной комплектации, хотя есть более быстрый режим на 400 МГц.

Достоинства и недостатки шины I2C

Лас- преимущество являются:

  • простота используя только две строки.
  • Dispone de механизмы, чтобы узнать, пришел ли сигнал по сравнению с другими протоколами связи.

Лас- Недостатки являются:

  • Скорость довольно низкая передача.
  • Это не полный дуплекс, то есть вы не можете отправлять и получать одновременно.
  • Не использует четность ни какой-либо другой тип механизма проверки, чтобы узнать, верны ли полученные биты данных.

I2C на Arduino

Шина Arduino I2C

En Ардуино, в зависимости от модели, контакты, которые можно задействовать для использования этой шины I2C, различаются. Например:

  • Arduino UNO, Нано, мини про: A4 используется для SDA (данные) и A5 для SCK (часы).
  • Arduino Mega: контакт 20 для SDA и 21 для SCK.

Помните, что для его использования вы должны использовать библиотеку Провод.ч для ваших кодов Arduino IDE, хотя есть и другие, например I2C y i2cdevlib. Вы можете прочитать документы этих библиотек или наши статьи по интересующим вас проектам, чтобы получить коды того, как это будет программироваться.

Как узнать адрес устройства, чтобы использовать его с I2C?

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

La сообщество arduino создал это код для сканирования адреса и его идентификации По-простому. Хотя я показываю вам код прямо здесь:

#include "Wire.h"
 
extern "C" { 
    #include "utility/twi.h"
}
 
void scanI2CBus(byte from_addr, byte to_addr, void(*callback)(byte address, byte result) ) 
{
  byte rc;
  byte data = 0;
  for( byte addr = from_addr; addr <= to_addr; addr++ ) {
    rc = twi_writeTo(addr, &data, 0, 1, 0);
    callback( addr, rc );
  }
}
 
void scanFunc( byte addr, byte result ) {
  Serial.print("addr: ");
  Serial.print(addr,DEC);
  Serial.print( (result==0) ? " Encontrado!":"       ");
  Serial.print( (addr%4) ? "\t":"\n");
}
 
 
const byte start_address = 8;
const byte end_address = 119;
 
void setup()
{
    Wire.begin();
 
    Serial.begin(9600);
    Serial.print("Escaneando bus I2C...");
    scanI2CBus( start_address, end_address, scanFunc );
    Serial.println("\nTerminado");
}
 
void loop() 
{
    delay(1000);
}


Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.