I2C Och Arduino Gränssnitt

Innehållsförteckning:

I2C Och Arduino Gränssnitt
I2C Och Arduino Gränssnitt

Video: I2C Och Arduino Gränssnitt

Video: I2C Och Arduino Gränssnitt
Video: Видеоуроки по Arduino. I2C и processing (7-я серия, ч1) 2024, Maj
Anonim

I den här artikeln kommer vi att titta på vad ett I2C-gränssnitt (ay-tu-si, i-two-tse) är, vad är dess funktioner och hur man arbetar med det.

I2c-gränssnitt
I2c-gränssnitt

Det är nödvändigt

  • - Arduino;
  • - digital potentiometer AD5171;
  • - Ljusdiod;
  • - 220 ohm motstånd;
  • - 2 motstånd för 4,7 kOhm;
  • - anslutande ledningar.

Instruktioner

Steg 1

IIC-seriekommunikationsprotokollet (även kallat I2C - interintegrerade kretsar) använder två dubbelriktade kommunikationslinjer för att överföra data, kallad SDA (Serial Data) -bussen och SCL (Serial Clock) -bussen. Det finns också två kraftledningar. SDA- och SCL-bussarna dras upp till kraftbussen genom motstånd.

Det finns minst en master i nätverket som initierar dataöverföring och genererar synkroniseringssignaler. Nätverket har också slavar som överför data på befälhavarens begäran. Varje slavenhet har en unik adress där mastern adresserar den. Enhetsadressen anges i passet (datablad). Upp till 127 enheter kan anslutas till en I2C-buss, inklusive flera mastrar. Enheter kan anslutas till bussen under drift, dvs. den stöder hot plugging.

I2C anslutningsdiagram
I2C anslutningsdiagram

Steg 2

Arduino använder två portar för att arbeta på I2C-gränssnittet. Till exempel, i Arduino UNO och Arduino Nano motsvarar analog port A4 SDA, analog port A5 motsvarar SCL.

För andra kortmodeller:

Arduino Pro och Pro Mini - A4 (SDA), A5 (SCL)

Arduino Mega - 20 (SDA), 21 (SCL)

Arduino Leonardo - 2 (SDA), 3 (SCL)

Arduino Due - 20 (SDA), 21 (SCL), SDA1, SCL1

Kartläggning av Arduino-stift till SDA- och SCL-bussar
Kartläggning av Arduino-stift till SDA- och SCL-bussar

Steg 3

För att underlätta utbyte av data med enheter via I2C-bussen har ett standard "Wire" -bibliotek skrivits för Arduino. Den har följande funktioner:

start (adress) - initialisering av biblioteket och anslutning till I2C-bussen; om ingen adress anges, anses den anslutna enheten vara master; 7-bitars adressering används;

requestFrom () - används av mastern för att begära ett visst antal byte från slaven;

beginTransmission (adress) - början av dataöverföring till slavenheten vid en specifik adress;

endTransmission () - avslutning av dataöverföring till slaven;

skriv () - skriva data från slaven som svar på en begäran;

tillgänglig () - returnerar antalet byte med information tillgänglig för mottagning från slaven;

läs () - läs en byte överförd från slaven till befälhavaren eller från befälhavaren till slaven;

onReceive () - indikerar funktionen som ska anropas när slaven tar emot en sändning från mastern;

onRequest () - Indikerar en funktion som ska anropas när mastern tar emot en överföring från slaven.

Steg 4

Låt oss se hur man arbetar med I2C-bussen med Arduino.

Först kommer vi att montera kretsen, som visas i figuren. Vi kommer att styra ljusstyrkan på lysdioden med hjälp av AD5171 64-position digital potentiometer, som ansluts till I2C-bussen. Adressen till vilken vi kommer att hänvisa till potentiometern är 0x2c (44 i decimal).

LED-styrkrets med digital potentiometer och Arduino
LED-styrkrets med digital potentiometer och Arduino

Steg 5

Låt oss nu öppna en skiss från biblioteksexemplen "Wire":

File -> Prover -> Wire -> digital_potentiometer. Låt oss ladda det i Arduino-minnet. Låt oss sätta på den.

Du förstår, lysdioden på lysdioden stiger cykliskt och slocknar sedan plötsligt. I det här fallet styr vi potentiometern med hjälp av Arduino via I2C-bussen.

Rekommenderad: