ყველაფერი Arduino I2C ავტობუსის შესახებ

Arduino I2C ავტობუსი

ერთად Arduino– ს შეუძლია შექმნას დიდი რაოდენობით პროექტები როგორც თქვენ ნახეთ თუ წაიკითხეთ ჰვიბრე, მიკროკონტროლის მარტივი დაპროგრამება. მაგრამ ამ უფასო აპარატურის ანალოგურ და ციფრულ კავშირებს შორის არის ის, რომლებიც ჯერ კიდევ გარკვეულწილად უცნობია მრავალი დამწყებთათვის, როგორიცაა PWM კავშირების ნამდვილი პოტენციალი, SPI, სერიული პორტის RX და TX პინები, ან ფლობენ I2C ავტობუსს. ამიტომ, ამ ჩანაწერით შეგიძლიათ მინიმუმ იცოდეთ ყველაფერი რაც გჭირდებათ I2C– სგან.

ერთად I2C ავტობუსი Arduino დაფაზე კომუნიკაციისთვის შეგიძლიათ დაუკავშირდეთ და გამოიყენოთ მრავალი მესამე მხარის მოწყობილობა, რომლებსაც აქვთ ამ ტიპის პროტოკოლი. მათ შორის შეგიძლიათ დააკავშიროთ აქსელემეტრი, დისპლეი, მრიცხველი, კომპასი და მრავალი სხვა ინტეგრირებული სქემა Philips- ის გამოგონების წყალობით.

რა არის I2C?

I2C ეხება ინტეგრირებულ სქემას, ანუ, ინტეგრირებული სქემა. ეს არის სერიული მონაცემების საკომუნიკაციო ავტობუსი, რომელიც შეიქმნა 1982 წელს Philips Semiconductors კომპანიის მიერ, რომელიც დღეს არის NXP ნახევარგამტარები ამ განყოფილების მოცილების შემდეგ. თავდაპირველად ის შეიქმნა ამ ბრენდის ტელევიზიებისთვის, რომ რამდენიმე შიდა ჩიპი მარტივი გზით დაუკავშირდეს. მაგრამ 1990 წლიდან I2C გავრცელდა და მას მრავალი მწარმოებელი იყენებს.

ამჟამად იყენებენ ათობით დამუშავების მწარმოებელს მრავალი ფუნქციისთვის. Atmel- მა, Arduino დაფების მიკროკონტროლერების შემქმნელმა, ლიცენზირების მიზნით შემოიტანა TWI (Two Wired Interface) აღნიშვნა, თუმცა იგი იდენტურია I2C- ს. 2006 წელს თავდაპირველ პატენტს ვადა გაუვიდა და აღარ ექვემდებარება საავტორო უფლებებს, ამიტომ ტერმინი I2C ხელახლა იქნა გამოყენებული (მხოლოდ ლოგო იცავს დაცვას, მაგრამ მისი გამოყენება ან ტერმინის გამოყენება არ არის შეზღუდული).

I2C ავტობუსის ტექნიკური დეტალები

I2C ავტობუსი

El I2C ავტობუსი ინდუსტრიის სტანდარტად იქცა და Arduino- მ ის დანერგა საჭირო პერიფერიულ მოწყობილობებთან კომუნიკაციისთვის. მისი მუშაობისთვის საჭიროა მხოლოდ ორი ხაზი ან კაბელი, ერთი საათის სიგნალისთვის (CLK) და მეორე სერიული მონაცემების გაგზავნისთვის (SDA). ეს მომგებიანია სხვა კომუნიკაციებთან შედარებით SPI ავტობუსთან შედარებით, თუმცა მისი მუშაობა გარკვეულწილად უფრო რთულია დამატებითი სქემების გამო.

ამ ავტობუსში მასთან დაკავშირებულ თითოეულ მოწყობილობას აქვს მისამართი გამოიყენება ამ მოწყობილობებზე ინდივიდუალურად შესასვლელად. ეს მისამართი ფიქსირდება აპარატურით, შეცვლის ბოლო 3 ბიტს ჯამპერის საშუალებით ან DIP– ების გადართვით, თუმცა ამის გაკეთება ასევე პროგრამული უზრუნველყოფის საშუალებით შეიძლება. თითოეულ მოწყობილობას ექნება უნიკალური მისამართი, თუმცა რამდენიმე მათგანს შეიძლება ჰქონდეს იგივე მისამართი და შეიძლება საჭირო გახდეს მეორადი ავტობუსის გამოყენება, რომ არ მოხდეს კონფლიქტები ან შეცვალოს იგი, თუ ეს შესაძლებელია.

გარდა ამისა, I2C ავტობუსს აქვს a ოსტატი-მონური ტიპის არქიტექტურა, ანუ ბატონ-მონა. ეს ნიშნავს, რომ როდესაც კომუნიკაცია იწყება საძიებო მოწყობილობამ, მას შეეძლება მონათა გაგზავნა ან მიღება. მონები ვერ შეძლებენ კომუნიკაციის დაწყებას, მხოლოდ ბატონს შეუძლია ამის გაკეთება და არც მონებს შეუძლიათ ერთმანეთთან პირდაპირ საუბარი ბატონის ჩარევის გარეშე.

თუ თქვენ გაქვთ რამდენიმე მასწავლებელი ავტობუსში, მხოლოდ ერთს შეუძლია ერთდროულად იმოქმედოს, როგორც მასწავლებელი. მაგრამ არ ღირს, რადგან მასწავლებლის შეცვლა მოითხოვს მაღალ სირთულეს, ამიტომ ეს ხშირი არ არის.

გაითვალისწინეთ, რომ master უზრუნველყოფს საათის სიგნალს ავტობუსის ყველა მოწყობილობის სინქრონიზაციისთვის. ეს გამორიცხავს თითოეულ მონას ჰქონდეს საკუთარი საათი.

I2C ავტობუსის პროტოკოლი ასევე ითვალისწინებს გამყვანი რეზისტორების გამოყენებას მიწოდების ძაბვის ხაზებში (Vcc), თუმცა ამ რეზისტორებს ჩვეულებრივ არ იყენებენ Arduino– სთვის დახევის, რადგან ბიბლიოთეკების პროგრამირება როგორც Wire ააქტიურებს შინაგანს 20-30 კ სიდიდით. ეს შეიძლება ძალიან რბილი იყოს ზოგიერთი პროექტისთვის, ამიტომ სიგნალის მომატება უფრო ნელი იქნება, ამიტომ უფრო დაბალი სიჩქარის და მოკლე კომუნიკაციის მანძილების გამოყენება შეიძლება. ამის გამოსასწორებლად შეიძლება დაგჭირდეთ გარე გასაწევი რეზისტორების დაყენება 1k- დან 4k7- მდე.

სიგნალი

I2C სიგნალი

 

La კომუნიკაციის ჩარჩო რომელთაგან I2C ავტობუსის სიგნალი შედგება ბიტების ან მდგომარეობებისგან (არდუინოში გამოყენებული, რადგან I2C სტანდარტი საშუალებას აძლევს სხვებს):

  • 8 ბიტი, 7 მათგანი მისამართი მონა მოწყობილობის, რომელზეც გსურთ წვდომა მისგან მონაცემების გასაგზავნად ან მისაღებად. 7 ბიტის საშუალებით შეიძლება შეიქმნას 128-მდე სხვადასხვა მისამართი, ასე რომ თეორიულად შესაძლებელია 128 მოწყობილობაზე წვდომა, მაგრამ 112-ზე წვდომა შეიძლება, რადგან 16 განკუთვნილია სპეციალური დანიშნულებისათვის. და დამატებითი ბიტი, რომელიც მიუთითებს თუ გსურთ გაგზავნა ან მიღება მონა მოწყობილობის ინფორმაცია.
  • ასევე არსებობს ვალიდაციის ბიტი, თუ ის არ არის აქტიური, კომუნიკაცია არ იქნება მართებული.
  • Შემდეგ მონაცემთა ბაიტი რომ მათ მონების გაგზავნა ან მიღება სურთ. თითოეული ბაიტი, როგორც მოგეხსენებათ, შედგება 8 ბიტიანი. გაითვალისწინეთ, რომ გაგზავნილი ან მიღებული მონაცემების ყოველი 8 ბიტიანი ან 1 ბაიტიდან საჭიროა დამატებით დამადასტურებელი 18 ბიტი, მისამართი და ა.შ., რაც ნიშნავს, რომ ავტობუსი სიჩქარე ძალიან შეზღუდულია.
  • საბოლოო ცოტა დადასტურება კომუნიკაციის.

გარდა ამისა, საათის სიხშირე ტრანსმისია სტანდარტული 100 მჰც, თუმცა უფრო სწრაფი რეჟიმია 400 მეგაჰერციანზე.

I2C ავტობუსის უპირატესობები და უარყოფითი მხარეები

ის უპირატესობა ხმის:

  • სიმარტივე მხოლოდ ორი ხაზის გამოყენებით.
  • მას აქვს მექანიზმები იმის ცოდნის შესახებ, მოვიდა თუ არა სიგნალი სხვა საკომუნიკაციო ოქმებთან შედარებით.

ის ნაკლოვანებები ხმის:

  • სიჩქარის საკმაოდ დაბალი გადაცემა.
  • ეს არ არის სრული დუპლექსი, ანუ, თქვენ ვერ გაგზავნით და მიიღეთ ერთდროულად.
  • არ იყენებს პარიტეტს არც სხვა სახის გადამოწმების მექანიზმი, რომ იცოდეთ მიღებული მონაცემების ბიტი სწორია.

 

 

I2C არდუინოზე

Arduino I2C ავტობუსი

En Arduino, დამოკიდებულია მოდელზე, ქინძისთავები, რომელთა ჩართვაც შესაძლებელია ამ I2C ავტობუსის გამოყენებით, განსხვავებულია. Მაგალითად:

  • Arduino UNO, ნანო, მინი პრო: A4 გამოიყენება SDA (მონაცემები) და A5 SCK (საათის )თვის.
  • არდუინო მეგა: pin 20 SDA და 21 SCK.

გახსოვდეთ, რომ მისი გამოყენება თქვენ უნდა გამოიყენეთ ბიბლიოთეკა მავთული. თ თქვენი Arduino IDE კოდებისათვის, თუმცა სხვა მსგავსიც არის I2C y I2Cdevlib. შეგიძლიათ წაიკითხოთ ამ ბიბლიოთეკების დოკუმენტები ან ჩვენი სტატიები იმ პროექტებზე, რომლებიც თქვენთვის საინტერესოა, რომ მიიღოთ კოდექსები, თუ როგორ იქნება ეს დაპროგრამებული.

როგორ უნდა იცოდეთ მოწყობილობის მისამართი, რომ გამოიყენოთ იგი I2C?

მხოლოდ ერთი ბოლო გაფრთხილება, და ეს არის ის, რომ როდესაც ყიდულობთ IC- ს ევროპული, იაპონური ან ამერიკელი მწარმოებლებისგან, თქვენ მიუთითეთ მიმართულება რომელიც უნდა გამოიყენოთ მოწყობილობისთვის. მეორეს მხრივ, ჩინელები ზოგჯერ ამას არ აწვდიან დეტალებს, ან ეს არ არის სწორი, ამიტომ ის არ იმუშავებს. ამის მოგვარება მარტივია მისამართის სკანერის საშუალებით, რომ იცოდეთ რომელი მიმართულებით უნდა მიმართოთ ესკიზს.

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 (EU)
  6. უფლებები: ნებისმიერ დროს შეგიძლიათ შეზღუდოთ, აღადგინოთ და წაშალოთ თქვენი ინფორმაცია.