Сè за автобусот Arduino I2C

Автобус Arduino I2C

со Ардуино може да создаде голем број на проекти како што видовте ако го прочитавте Хвиблир, програмирање на микроконтролерот на едноставен начин. Но, меѓу аналогните и дигиталните врски на оваа бесплатна хардверска табла, има некои кои сеуште се непознати за многу почетници, како што се вистинскиот потенцијал на PWM конекциите, SPI, RX и TX пиновите на сериската порта или сопствен автобус I2C. Затоа, со овој запис можете барем да знаете сè што ви треба од I2C.

со автобусот I2C Можете да поврзете и да користите многу уреди од трети страни кои имаат ваков тип протокол за комуникација со таблата Arduino. Меѓу нив, можете да поврзете акцелерометри, дисплеи, бројач, компаси и многу повеќе интегрални кола благодарение на овој изум на Филипс.

Што е I2C?

I2C се однесува на меѓуинтегрирано коло, односно интер-интегрирано коло. Тоа е сериски автобус за комуникација развиен во 1982 година од компанијата „Филипс полупроводници“, кој денес е полупроводници NXP откако се ослободи од овој дел. Отпрвин беше создаден за телевизии од овој бренд, да комуницираат неколку внатрешни чипови на едноставен начин. Но, од 1990 година I2C се шири и се користи од многу производители.

Во моментов се користи од десетици производители на чипови за повеќе функции. Атмел, креаторот на микроконтролерите за табли Arduino, ја воведе ознаката TWI (Two Wired Interface) од лиценцирање, иако е идентична со I2C. Но, во 2006 година, оригиналниот патент истече и повеќе не подлежи на авторски права, затоа терминот I2C е повторно употребен (само логото продолжува да се штити, но неговото спроведување или употреба на терминот не е ограничено).

Технички детали за автобусот I2C

I2C автобус

El I2C автобусот стана индустриски стандард, и Arduino го имплементираше за комуникација со периферни уреди кои имаат потреба од тоа. Потребни му се само две линии или кабли за работа, едниот за часовничкиот сигнал (CLK) и другиот за испраќање на сериски податоци (SDA). Ова е поволно во споредба со другите комуникации во споредба со магистралата SPI, иако неговото работење е нешто посложено заради дополнителните потребни кола.

Во овој автобус секој уред поврзан на него има адреса се користи за пристап до овие уреди поединечно. Оваа адреса е фиксирана од хардвер, менувајќи ги последните 3 бита преку џемпери или прекинувачи DIP, иако тоа може да се направи и со софтвер. Секој уред ќе има единствена адреса, иако неколку од нив може да имаат иста адреса и можеби е потребно да се користи секундарен автобус за да се избегнат конфликти или да се смени ако е можно.

Покрај тоа, автобусот I2C има а Архитектура од типот мајстор-роб, односно господар-роб. Ова значи дека кога комуникацијата е започната од главен уред, тој ќе може да испраќа или прима податоци од своите робови. Робовите нема да можат да иницираат комуникација, само господарот може да го стори тоа, а робовите не можат директно да разговараат без интервенција на господарот.

Ако имате неколку наставници во автобусот, само еден може да дејствува истовремено како наставник. Но, не вреди, бидејќи промената на наставникот бара висока сложеност, па затоа не е честа.

Имајте на ум дека master обезбедува сигнал на часовникот за синхронизација на сите уреди во автобусот. Тоа ја елиминира потребата секој роб да има свој часовник.

Протоколот за шини I2C, исто така, предвидува употреба на отпорник на отпор во напојните линии (Vcc), иако овие отпорници обично не се користат со Arduino повлекување затоа што програмираат библиотеки бидејќи Wire ги активира внатрешните со вредности од 20-30 k. Ова може да биде премногу меко за некои проекти, затоа зголемувањето на рабовите на сигналот ќе биде побавно, така што може да се користат помали брзини и пократки комуникациски растојанија. За да поправите дека можеби ќе треба да поставите надворешни отпорници за влечење од 1k до 4k7.

Сигнал

I2C сигнал

 

La рамка за комуникација од кои I2C магистралниот сигнал се состои од битови или состојби (оние што се користат во Arduino, бидејќи I2C стандардот им овозможува на другите):

  • 8 бита, 7 од нив адреса на роб-уредот до кој сакате да пристапите за да испраќате или примате податоци од него. Со 7 бита, може да се креираат до 128 различни адреси, така што теоретски може да се пристапи до 128 уреди, но може да се пристапи до само 112, бидејќи 16 се резервирани за специјална употреба. И дополнителниот бит што означува дали сакате испрати или прими Информации за робовите уреди.
  • Исто така постои бит за валидација, ако не е активна, комуникацијата нема да биде валидна.
  • Потоа бајти на податоци што тие сакаат да ги испраќаат или примаат од робовите. Секој бајт, како што знаете, е составен од 8 бита. Забележете дека за секои 8-битни или 1 бајт податоци испратени или примени, потребни се дополнителни 18 бита валидација, адреса, итн., Што значи дека магистралата е многу ограничена во брзината.
  • Последен дел од валидација на комуникација.

Покрај тоа, часовната фреквенција за преносот е 100 Mhz како стандард, иако има побрз режим од 400 Mhz.

Предности и недостатоци на автобусот I2C

на предност звук:

  • Едноставност само со употреба на две линии.
  • Отфрлете го механизми за да се знае дали сигналот пристигнал во споредба со другите комуникациски протоколи.

на недостатоци звук:

  • Брзина прилично низок пренос.
  • Не е полн дуплекс, односно не можете да испраќате и примате истовремено.
  • Не користи паритет ниту кој било друг вид на механизам за верификација за да се знае дали примените битови на податоци се точни.

 

 

I2C на Arduino

Автобус Arduino I2C

En Ардуино, во зависност од моделот, пиновите што можат да бидат овозможени за користење на оваа шина I2C варираат. На пример:

  • Arduino UNO, Нано, Мини Про: A4 се користи за SDA (податоци) и A5 за SCK (часовник).
  • Ардуино Мега: игла 20 за SDA и 21 за SCK.

Запомнете дека за да го користите мора користете ја библиотеката Wireица.h за вашите Arduino IDE кодови, иако има и други слични I2C y I2Cdevlib. Можете да ги прочитате документите од овие библиотеки или наши статии за проектите што ве интересираат за да добиете кодови за тоа како би се програмирало.

Како да ја знаете адресата на уредот за да го користите со I2C?

Само едно последно предупредување, а тоа е кога купувате ИЦ од европски, јапонски или американски производители наведете ја насоката што треба да ги користите за уредот. Од друга страна, Кинезите понекогаш не го детализираат или не е правилно, така што нема да работи. Тоа може лесно да се реши со скенер за адреси за да знаете на која насока треба да се повикувате во вашата скица.

La заедница ардуино го создаде ова код за да ја скенира адресата и да ја идентификува На едноставен начин. Иако ви го покажувам кодот токму тука:

#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. Права: Во секое време можете да ги ограничите, вратите и избришете вашите информации.