အားလုံး Arduino I2C ဘတ်စ်ကားအကြောင်းကို

Arduino I2C ဘတ်စ်ကား

con Arduino သည်များစွာသောစီမံကိန်းများကိုဖန်တီးနိုင်သည် သင် Hwlibre ကိုဖတ်ရင် ရိုးရှင်းတဲ့နည်းလမ်းအတွက် microcontroller ကိုပရိုဂရမ်မာ။ သို့သော်ဒီအခမဲ့ဟာ့ဒ်ဝဲဘုတ်၏ analog နှင့် digital connection များအနက်အချို့သောသူများသည် PWM ဆက်သွယ်မှုအစစ်အမှန်၊ SPI၊ RX နှင့် TX တံသင်ကဲ့သို့ serial port ၏အစစ်အမှန်မသိသေးသောအချို့သောအရာများရှိနေသေးသည်။ ကိုယ်ပိုင် I2C ဘတ်စ်ကား။ ထို့ကြောင့်ဤ entry နှင့်သင်အနည်းဆုံး I2C မှသင်လိုအပ်သမျှကိုသိနိုင်သည်။

con I2C ဘတ်စ်ကား Arduino ဘုတ်နှင့်ဆက်သွယ်ရန်ဤ protocol protocol မျိုးရှိသည့် third-party devices များစွာကိုသင်ဆက်သွယ်နိုင်သည်။ Philips ၏တီထွင်မှုကြောင့်၎င်းတို့အကြား Accelerometer, display, counter, compass နှင့်အခြားပေါင်းစပ်ထားသော circuit များစွာကိုဆက်သွယ်နိုင်သည်။

I2C ဆိုတာဘာလဲ။

I2C သည် Inter-Integrated Circuit ကိုရည်ညွှန်းသည်ဆိုလိုသည်မှာပေါင်းစည်းထားသည့် circuit တစ်ခုဖြစ်သည်။ ၎င်းသည် ၁၉၈၂ ခုနှစ်တွင် Philips Semiconductors ကုမ္ပဏီမှတီထွင်ခဲ့သောစီးရီးဒေတာဆက်သွယ်ရေးဘတ်စ်ကားဖြစ်သည်။ ဤအပိုင်းသည်ဖယ်ရှားပြီးသောနောက် NXP Semiconductors ဖြစ်သည်။ အစပိုင်းမှာဒီအမှတ်တံဆိပ်ရဲ့ရုပ်မြင်သံကြားတွေအတွက်အတွင်းပိုင်းချစ်ပ်တွေကိုရိုးရှင်းတဲ့နည်းနဲ့ဆက်သွယ်ဖို့ဖန်တီးခဲ့တယ်။ သို့သော် ၁၉၉၀ ခုနှစ်မှစ၍ I1982C သည်ပျံ့နှံ့ခဲ့ပြီးထုတ်လုပ်သူများစွာကအသုံးပြုခဲ့ကြသည်။

လောလောဆယ် chipmaker များစွာကအသုံးပြုသည် မျိုးစုံလုပ်ဆောင်ချက်များကိုသည်။ Arduino board များအတွက် microcontroller များကိုဖန်တီးသူ Atmel သည် I2C နှင့်တူညီသော်လည်း TWI (Wired Interface) အမျိုးအစားကိုလိုင်စင်ရရန်ရည်ရွယ်သည်။ သို့သော် ၂၀၀၆ ခုနှစ်တွင်မူရင်းမူပိုင်ခွင့်သက်တမ်းကုန်သွားပြီးမူပိုင်ခွင့်မရှိတော့သောကြောင့် I2006C ဟူသောဝေါဟာရကိုပြန်လည်အသုံးပြုခဲ့သည် (အမှတ်တံဆိပ်ကိုသာကာကွယ်ထားဆဲဖြစ်သော်လည်း၎င်းအသုံးအနှုန်းကိုအကောင်အထည်ဖော်ခြင်းသို့မဟုတ်အသုံးပြုခြင်းကိုကန့်သတ်ထားခြင်းမရှိပါ) ။

I2C ဘတ်စ်ကားဆိုင်ရာအသေးစိတ်အချက်အလက်များ

I2C ဘတ်စ်ကား

El I2C bus သည်စက်မှုလုပ်ငန်းစံတစ်ခုဖြစ်လာပြီး Arduino က၎င်းကိုအကောင်အထည်ဖော်ခဲ့သည် လိုအပ်တဲ့အရံပစ္စည်းများနှင့်ဆက်သွယ်ရေးအတွက်။ ၎င်းကို၎င်း၏လည်ပတ်မှုအတွက်လိုင်းသို့မဟုတ်ကြိုးနှစ်မျိုးသာလိုအပ်သည်။ တစ်ခုမှာ clock signal (CLK) အတွက်ဖြစ်ပြီးနောက်တစ်ခုမှာ serial data (SDA) ပေးပို့ရန်ဖြစ်သည်။ SPI bus နှင့်နှိုင်းယှဉ်လျှင်အခြားဆက်သွယ်မှုများနှင့်နှိုင်းယှဉ်လျှင်၎င်းသည်ထပ်ဆင့်တိုက်နယ်လိုအပ်သောကြောင့်၎င်း၏လည်ပတ်မှုမှာ ပို၍ ရှုပ်ထွေးသော်လည်း၎င်းသည်အကျိုးရှိသည်။

ဒီဘတ်စ်ကားပေါ်မှာ ချိတ်ဆက်ထားသော device တစ်ခုစီတွင်လိပ်စာတစ်ခုရှိသည် တစ် ဦး ချင်းစီသည်ဤ devices များဝင်ရောက်ဖို့အသုံးပြုခဲ့သည်။ ဤလိပ်စာကို hardware မှသတ်မှတ်သည်။ ဆော့ဖ်ဝဲလ်ဖြင့်ပြုလုပ်နိုင်သော်လည်းနောက်ဆုံးသုံးခုကို jumpers သို့မဟုတ် DIP ပြောင်းခြင်းမှပြုပြင်သည်။ Device တစ်ခုချင်းစီတွင်ထူးခြားသောလိပ်စာတစ်ခုရှိလိမ့်မည်၊ သို့သော်၎င်းတို့ထဲမှအများအပြားသည်တူညီသောလိပ်စာရှိနိုင်ပြီးပconflictsိပက္ခများကိုရှောင်ရှားရန်သို့မဟုတ်ဖြစ်နိုင်လျှင်ပြောင်းလဲရန်ဒုတိယဘတ်စ်ကားကိုအသုံးပြုရန်လိုအပ်နိုင်သည်။

ထို့အပြင် I2C bus တွင်ပါ ၀ င်သည် Master - Slave အမျိုးအစားဗိသုကာ၊ ဆိုလိုသည်မှာသခင် - ကျွန်ဖြစ်သည်။ ဆိုလိုသည်မှာဆက်သွယ်မှုကို master device တစ်ခုမှစတင်သောအခါ၎င်း၏ကျွန်များထံမှဒေတာများကိုပို့လွှတ်နိုင်သည်သို့မဟုတ်ဆိုလိုသည်။ ကျွန်များသည်ဆက်သွယ်မှုကိုအစပြုလုပ်ဆောင်နိုင်မည်မဟုတ်ပါ။ ၎င်းသည်သခင်သာလုပ်ဆောင်နိူင်သည်။ ထို့အပြင်သခင်သည်ကြားဝင်ခြင်းမရှိဘဲတစ် ဦး နှင့်တစ် ဦး တိုက်ရိုက်စကားပြောဆိုနိူင်မည်မဟုတ်ပါ။

သငျသညျရှိပါက ဘတ်စ်ကားပေါ်ရှိဆရာများစွာတစ် ဦး တည်းသာလျှင်တစ်ပြိုင်တည်းဆရာအဖြစ်လုပ်ဆောင်နိုင်သည်။ သို့သော်ဆရာ၊ ဆရာမအပြောင်းအလဲသည်အလွန်ရှုပ်ထွေးမှုရှိရန်လိုအပ်သောကြောင့်မကြာခဏတော့မဖြစ်သင့်ပါ။

သောသတိရပါ မာစတာသည်ဘတ်စ်ကားပေါ်ရှိစက်ပစ္စည်းအားလုံးကိုတစ်ပြိုင်တည်းချိန်ကိုက်ရန်နာရီအချက်ပြပေးသည်။ ယင်းကကျွန်တစ် ဦး စီသည်မိမိတို့၏ကိုယ်ပိုင်စောင့်ကြည့်ခြင်းကိုလိုအပ်ခြင်းကိုဖယ်ရှားပေးသည်။

I2C bus protocol protocol သည် supply voltage လိုင်းများ (Vcc) တွင် pull-up resistors များအသုံးပြုခြင်းကိုလည်းကြိုတင်ခန့်မှန်းထားသော်လည်း၊ ထို resistors များသည် Arduino နှင့်များသောအားဖြင့်အသုံးပြုလေ့မရှိပါ။ pull-up, ဘာလို့လဲဆိုတော့ပရိုဂရမ်စာကြည့်တိုက်များ ဝါယာကြိုး 20-30 values ​​၏တန်ဖိုးများနှင့်အတူပြည်တွင်းရေးသူတွေကို activates အဖြစ်။ ၎င်းသည်အချို့သောစီမံကိန်းများအတွက်အလွန်အမင်းပျော့ပျောင်းသောကြောင့် signal ၏အမြင့်အနားများနှေးလာလိမ့်မည်၊ ထို့ကြောင့်အနိမ့်အမြန်နှုန်းနှင့်တိုတောင်းသောဆက်သွယ်ရေးအကွာအဝေးကိုအသုံးပြုနိုင်သည်။ ပြင်ရန်ဆွဲဆောင်နိုင်သည့် resistor များကို 1k မှ 4k7 သို့သတ်မှတ်ရန်လိုအပ်နိုင်သည်။

အချက်ပြ

I2C အချက်ပြမှု

 

La ဆက်သွယ်ရေးဘောင် ၎င်းထဲမှ I2C bus signal သည် bits (သို့) ပြည်နယ်များပါဝင်သည် (Arduino တွင်အသုံးပြုသောသူများသည် I2C စံနှုန်းကအခြားသူများကိုခွင့်ပြုသည်)

  • 8-bits, သူတို့ထဲက 7 လိပ်စာ သငျသညျကနေဒေတာတွေကိုပေးပို့သို့မဟုတ်လက်ခံရရှိရန်ရယူချင်သောကျွန် device ကို၏။ 7-bits နှင့်အတူမတူညီသောလိပ်စာ ၁၂၈ ခုကိုဖန်တီးနိုင်သဖြင့်သီအိုရီအရ ၀ င်ရောက်နိုင်သောပစ္စည်း ၁၂၈ ခုကိုအသုံးပြုနိုင်ပြီး ၁၆ ခုကိုအထူးအသုံးပြုရန်အတွက်သီးသန့်ထားရှိခြင်းကြောင့် ၁၁၂ ခုသာအသုံးပြုနိုင်သည်။ ပြီးတော့သင်လိုချင်လျှင်ညွှန်ပြသည့်အပို bit ပို့သို့မဟုတ်လက်ခံ ကျွန် device ကိုသတင်းအချက်အလက်။
  • လည်း တစ် ဦး validation ကို bit နဲ့အကယ်၍ ၎င်းသည်မလှုပ်ရှားပါကဆက်သွယ်မှုသည်အတည်ဖြစ်မည်မဟုတ်ပါ။
  • ထို့နောက် ဒေတာ bytes သူတို့ကျွန်များကပေးပို့သို့မဟုတ်လက်ခံချင်တယ်။ byte တစ်ခုစီသည်သင်သိသည့်အတိုင်း ၈-bit ဖြင့်ဖွဲ့စည်းထားသည်။ 8-bit သို့မဟုတ် 8 byte data တိုင်းသို့မဟုတ်ပို့သောသို့မဟုတ်လက်ခံရရှိရန်အတွက် 1-bit validation, address, etc စသည်တို့လိုအပ်သည်။ ဆိုလိုသည်မှာ bus သည်အမြန်နှုန်းအလွန်အကန့်အသတ်ရှိသည်။
  • ၏နောက်ဆုံး bit နဲ့ validation ကို အဆိုပါဆက်သွယ်ရေး၏။

ထို့အပြင်အတွက်နာရီအကြိမ်ရေ ဂီယာထုတ်လွှင့်မှုနှုန်းသည်ပုံမှန်အားဖြင့် 100 Mhz, 400 Mhz မှာပိုမြန်တဲ့ mode ရှိတယ်။

I2C bus ၏အားသာချက်များနှင့်အားနည်းချက်များ

အားသာချက် သူတို့ဟာနေသောခေါင်းစဉ်:

  • ရိုးရှင်း နှစ်ခုလိုင်းများကိုသာအသုံးပြု။
  • ရှိပါတယ် အချက်ပြရောက်ရှိခဲ့သည်ရှိမရှိသိရန်ယန္တရားများ အခြားဆက်သွယ်ရေး protocol များနှင့်နှိုင်းယှဉ်ပါ။

အားနည်းချက်များကို သူတို့ဟာနေသောခေါင်းစဉ်:

  • အရှိန် အတော်လေးနိမ့်ဂီယာ။
  • ဒါဟာအပြည့်အဝ duplex မဟုတ်ပါဘူးဆိုလိုသည်မှာသင်သည်တစ်ပြိုင်နက်တည်းပို့ခြင်းနှင့်လက်ခံခြင်းကိုမပြုနိုင်ပါ
  • ကွာခြားမှုနှုန်းကိုမသုံးပါ လက်ခံရရှိသည့်ဒေတာ -bits မှန်ကန်မှုရှိမရှိသိရန်အခြားမည်သည့်အမျိုးအစားစစ်ဆေးမှုယန္တရားလည်း။

 

 

Arduino အပေါ် I2C

Arduino I2C ဘတ်စ်ကား

En Arduino, မော်ဒယ်ပေါ်မူတည်, ဤ I2C ဘတ်စ်ကားကိုအသုံးပြုနိုင်ရန်အသုံးပြုနိုင်သောတံသင်များကွဲပြားသည်။ ဥပမာ:

  • Arduino UNO, Nano, Mini ကို Pro ကို: A4 ကို SDA (ဒေတာ) နှင့် A5 ကို SCK (နာရီ) အတွက်အသုံးပြုသည်။
  • Arduino Mega: SDA အတွက် pin 20 နှင့် SCK အတွက် 21 ။

အဲဒါကိုအသုံးပြုဖို့သတိရပါ စာကြည့်တိုက်ကိုအသုံးပြုပါ ကြေးမုံ အခြားသူများရှိသော်လည်းသင်၏ Arduino IDE ကုဒ်များအတွက် I2C y .ရာဝတီ။ ဤစာကြည့်တိုက်များ၏စာရွက်စာတမ်းများသို့မဟုတ်ကျွန်ုပ်တို့၏ပရိုဂရမ်များနှင့်ပတ်သက်သည့်ကုဒ်များရရှိရန်သင်စိတ်ဝင်စားသောစီမံကိန်းများရှိကျွန်ုပ်တို့၏ဆောင်းပါးများကိုသင်ဖတ်ရှုနိုင်သည်။

I2C နှင့်အသုံးပြုရန်အတွက်စက်၏လိပ်စာကိုမည်သို့သိနိုင်သနည်း။

နောက်ဆုံးသတိပေးချက်တစ်ခုဖြစ်သည်၊ သင်သည်ဥရောပ၊ ဂျပန်သို့မဟုတ်အမေရိကန်ထုတ်လုပ်သူများထံမှ IC များကိုဝယ်ယူသောအခါတွင်ဖြစ်သည် ညွှန်ကြားချက်ကိုညွှန်ပြ သငျသညျ device ကိုများအတွက်အသုံးပြုသင့်ကြောင်း။ အခြားတစ်ဖက်တွင်မူတရုတ်သည်တစ်ခါတစ်ရံ၎င်းကိုအသေးစိတ်မဖော်ပြသောကြောင့်၎င်းသည်မမှန်ကန်သောကြောင့်၎င်းသည်အလုပ်မလုပ်ပါ။ သင်၏ပုံကြမ်းတွင်မည်သည့် ဦး တည်ချက်ကိုရည်ညွှန်းသင့်သည်ကိုသိရန်လိပ်စာစကင်နာဖြင့်အလွယ်တကူဖြေရှင်းနိုင်သည်။

La Arduino အသိုင်းအဝိုင်း ဒီဖန်တီးခဲ့တာ လိပ်စာ scan နှင့်ဖော်ထုတ်ရန်ကုဒ် ရိုးရိုးလေးပါ။ ဒီမှာကုဒ်ကိုပြပေမဲ့

#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. အချက်အလက်အတွက်တာဝန်ရှိသည် - Miguel ÁngelGatón
  2. အချက်အလက်များ၏ရည်ရွယ်ချက်: ထိန်းချုပ်ခြင်း SPAM, မှတ်ချက်စီမံခန့်ခွဲမှု။
  3. တရားဝင်: သင်၏ခွင့်ပြုချက်
  4. အချက်အလက်များ၏ဆက်သွယ်မှု - ဒေတာများကိုဥပဒေအရတာ ၀ န်ယူမှုမှ လွဲ၍ တတိယပါတီများသို့ဆက်သွယ်မည်မဟုတ်ပါ။
  5. ဒေတာသိမ်းဆည်းခြင်း: Occentus ကွန်ယက်များ (အီးယူ) မှလက်ခံသည့်ဒေတာဘေ့စ
  6. အခွင့်အရေး - မည်သည့်အချိန်တွင်မဆိုသင်၏အချက်အလက်များကိုကန့်သတ်၊