Arduino I2C බස් එක ගැන

Arduino I2C බස්

සමඟ Arduino හට ව්‍යාපෘති විශාල ප්‍රමාණයක් නිර්මාණය කළ හැකිය ඔබ දැක ඇති පරිදි ඔබ Hwlibre කියවන්නේ නම්, ක්ෂුද්‍ර පාලකය සරල ආකාරයකින් වැඩසටහන්ගත කිරීම. නමුත් මෙම නිදහස් දෘඩාංග මණ්ඩලයේ ඇනලොග් සහ ඩිජිටල් සම්බන්ධතා අතර, PWM සම්බන්ධතාවල සැබෑ විභවය, SPI, අනුක්‍රමික වරායේ RX සහ TX අල්ෙපෙනති හෝ බොහෝ ආරම්භකයින් තවමත් නොදන්නා ඒවා තිබේ. තමන්ගේම I2C බස් රථයක්. එමනිසා, මෙම ප්‍රවේශය සමඟ ඔබට අවම වශයෙන් I2C වෙතින් අවශ්‍ය සියල්ල දැනගත හැකිය.

සමඟ I2C බස් රථය Arduino මණ්ඩලය සමඟ සන්නිවේදනය කිරීම සඳහා ඔබට මේ ආකාරයේ ප්‍රොටෝකෝලයක් ඇති බොහෝ තෙවන පාර්ශවීය උපාංග සම්බන්ධ කර භාවිතා කළ හැකිය. ඒවා අතර, ඔබට මෙම පිලිප්ස් නව නිපැයුමට ස්තූතිවන්ත වන පරිදි ත්වරණමාන, සංදර්ශක, කවුන්ටරය, මාලිමා යන්ත්‍ර සහ තවත් බොහෝ ඒකාබද්ධ පරිපථ සම්බන්ධ කළ හැකිය.

I2C යනු කුමක්ද?

I2C යනු අන්තර්-ඒකාබද්ධ පරිපථයකි, එනම් අන්තර් ඒකාබද්ධ පරිපථයකි. එය 1982 දී පිලිප්ස් අර්ධ සන්නායක සමාගම විසින් සංවර්ධනය කරන ලද අනුක්‍රමික දත්ත සන්නිවේදන බස් රථයක් වන අතර අද මෙම කොටස ඉවත් කිරීමෙන් පසු එන්එක්ස්පී අර්ධ සන්නායක වේ. මුලදී මෙම වෙළඳ නාමයේ රූපවාහිනී සඳහා අභ්‍යන්තර චිප් කිහිපයක් සරල ආකාරයකින් සන්නිවේදනය කිරීම සඳහා නිර්මාණය කරන ලදී. නමුත් 1990 සිට I2C පැතිරී ඇති අතර එය බොහෝ නිෂ්පාදකයින් විසින් භාවිතා කරනු ලැබේ.

දැනට චිප් නිෂ්පාදකයින් දුසිම් ගණනක් භාවිතා කරයි බහු කාර්යයන් සඳහා. Arduino පුවරු සඳහා වන ක්ෂුද්‍ර පාලක වල නිර්මාතෘ වන Atmel, I2C හා සමාන වුවද බලපත්‍ර අවශ්‍යතා සඳහා TWI (Two Wired Interface) තනතුර හඳුන්වා දුන්නේය. නමුත් 2006 දී මුල් පේටන්ට් බලපත්‍රය කල් ඉකුත් වූ අතර එය තවදුරටත් ප්‍රකාශන හිමිකමට යටත් නොවේ, එබැවින් I2C යන පදය නැවත භාවිතා කර ඇත (ලාංඡනය පමණක් දිගටම ආරක්ෂා කර ඇත, නමුත් එය ක්‍රියාත්මක කිරීම හෝ භාවිතා කිරීම සීමා නොකෙරේ).

I2C බස් තාක්ෂණික විස්තර

I2C බස්

El I2C බස් රථය කර්මාන්ත ප්‍රමිතියක් බවට පත්ව ඇති අතර Arduino එය ක්‍රියාත්මක කර ඇත අවශ්‍ය පර්යන්ත සමඟ සන්නිවේදනය සඳහා. එහි ක්‍රියාකාරිත්වය සඳහා අවශ්‍ය වන්නේ පේළි දෙකක් හෝ කේබල් පමණි, එකක් ඔරලෝසු සං signal ාව (සීඑල්කේ) සහ අනෙක අනුක්‍රමික දත්ත (එස්ඩීඒ) යැවීම සඳහා ය. එස්පීඅයි බස් රථයට සාපේක්ෂව අනෙකුත් සන්නිවේදනයන් හා සසඳන විට මෙය වාසිදායක වේ, අවශ්‍ය පරිපථය නිසා එහි ක්‍රියාකාරිත්වය තරමක් සංකීර්ණ වේ.

මේ බස් එකේ එයට සම්බන්ධ සෑම උපාංගයකටම ලිපිනයක් ඇත මෙම උපාංග තනි තනිව ප්‍රවේශ කිරීමට භාවිතා කරයි. මෙම ලිපිනය දෘඩාංග මගින් සවි කර ඇති අතර, අන්තිම බිටු 3 ජම්පර් හෝ ස්විච් ඩීඅයිපී හරහා වෙනස් කරයි, නමුත් එය මෘදුකාංග මඟින් ද කළ හැකිය. සෑම උපාංගයකටම අද්විතීය ලිපිනයක් ඇත, ඒවායින් කිහිපයකට එකම ලිපිනයක් තිබිය හැකි අතර ගැටුම් වළක්වා ගැනීමට හෝ හැකි නම් එය වෙනස් කිරීමට ද්විතීයික බස් රථයක් භාවිතා කිරීමට අවශ්‍ය විය හැකිය.

මීට අමතරව, I2C බස් රථයට a මාස්ටර්-ස්ලේව් වර්ගයේ ගෘහ නිර්මාණ ශිල්පය, එනම්, ස්වාමියා-දාසයා ය. මෙයින් අදහස් කරන්නේ ප්‍රධාන උපාංගයක් මගින් සන්නිවේදනය ආරම්භ කරන විට, එහි වහලුන්ගෙන් දත්ත යැවීමට හෝ ලැබීමට එයට හැකි වනු ඇති බවයි. සන්නිවේදනය ආරම්භ කිරීමට වහලුන්ට නොහැකි වනු ඇත, ස්වාමියාට පමණක් එය කළ හැකි අතර, ස්වාමියාගේ මැදිහත්වීමකින් තොරව වහලුන්ට එකිනෙකා සමඟ කෙලින්ම කථා කළ නොහැක.

ඔබට තිබේ නම් ගුරුවරුන් කිහිප දෙනෙක් බස් රථයේ, එකවර ගුරුවරයෙකු ලෙස ක්‍රියා කළ හැක්කේ එක් අයෙකුට පමණි. නමුත් එය වටින්නේ නැත, මන්ද ගුරුවරයා වෙනස් කිරීම ඉහළ සංකීර්ණතාවයක් ඉල්ලා සිටින බැවින් එය නිතර නොවේ.

මතක තබා ගන්න බස් රථයේ ඇති සියලුම උපාංග සමමුහුර්ත කිරීම සඳහා මාස්ටර් ඔරලෝසු සං signal ාව සපයයි. එමඟින් සෑම දාසයෙකුටම තමන්ගේම ඔරලෝසුවක් තිබිය යුතුය.

I2C බස් ප්‍රොටෝකෝලය මඟින් සැපයුම් වෝල්ටීයතා රේඛාවල (Vcc) අදින්න ප්‍රතිරෝධක භාවිතා කිරීම ද පුරෝකථනය කරයි, නමුත් මෙම ප්‍රතිරෝධක සාමාන්‍යයෙන් Arduino සමඟ භාවිතා නොවේ ක්‍රමලේඛන පුස්තකාල නිසා අදින්න වයර් 20-30 k අගයන් සහිත අභ්‍යන්තර ඒවා සක්‍රිය කරන බැවින්. සමහර ව්‍යාපෘති සඳහා මෙය ඉතා මෘදු විය හැක, එබැවින් සං signal ාවේ ඉහළ යන දාර මන්දගාමී වනු ඇත, එබැවින් අඩු වේගය සහ කෙටි සන්නිවේදන දුර භාවිතා කළ හැකිය. එය නිවැරදි කිරීම සඳහා ඔබට 1k සිට 4k7 දක්වා බාහිර අදින්න ප්‍රතිරෝධක සැකසීමට අවශ්‍ය විය හැකිය.

සං al ාව

I2C සං .ාව

 

La සන්නිවේදන රාමුව එයින් I2C බස් සං signal ාවක් බිටු හෝ ප්‍රාන්ත වලින් සමන්විත වේ (ආර්ඩුයිනෝ හි භාවිතා වන ඒවා, I2C ප්‍රමිතිය අනෙක් අයට ඉඩ දෙන බැවින්):

  • බිටු 8 ක්, ඒවායින් 7 ක් දිශාව ඔබට දත්ත යැවීමට හෝ ලැබීමට ප්‍රවේශ වීමට අවශ්‍ය වහල් උපාංගයේ. බිටු 7 ක් සමඟ විවිධ ලිපින 128 ක් දක්වා නිර්මාණය කළ හැකි බැවින් උපාංග 128 ක් න්‍යායාත්මකව ප්‍රවේශ විය හැකි නමුත් ප්‍රවේශ විය හැක්කේ 112 ක් පමණි, මන්ද 16 ක් විශේෂ භාවිතයන් සඳහා වෙන් කර ඇත. ඔබට අවශ්‍ය නම් ඇඟවුම් කරන අතිරේක බිට් යැවීම හෝ ලැබීම වහල් උපාංග තොරතුරු.
  • එසේම තිබේ වලංගු කිරීමේ බිට්, එය සක්‍රිය නොවේ නම් සන්නිවේදනය වලංගු නොවේ.
  • එවිට දත්ත බයිට් ඔවුන්ට වහලුන් විසින් එවීමට හෝ ලැබීමට අවශ්‍ය බව. ඔබ දන්නා පරිදි සෑම බයිටයක්ම බිටු 8 කින් සෑදී ඇත. යවන ලද හෝ ලැබුණු සෑම බිටු 8 ක් හෝ 1 බයිට් 18 ක් සඳහාම අතිරේක බිටු XNUMX ක් වලංගු කිරීම, ලිපිනය යනාදිය අවශ්‍ය බව සලකන්න, එයින් අදහස් වන්නේ බස් රථයේ වේගය ඉතා සීමිත බවයි.
  • අවසාන ටිකක් වලංගුකරණය සන්නිවේදනයේ.

මීට අමතරව, සඳහා ඔරලෝසු සංඛ්‍යාතය සම්ප්‍රේෂණ සම්මත ලෙස 100 Mhz වේ, 400 Mhz දී වේගවත් මාදිලියක් තිබුණද.

I2C බස් රථයේ වාසි සහ අවාසි

මෙම වාසි :

  • සරල බව පේළි දෙකක් පමණක් භාවිතා කිරීමෙන්.
  • එය ඇත සං signal ාව පැමිණ තිබේදැයි දැන ගැනීමට යාන්ත්‍රණ වෙනත් සන්නිවේදන ප්‍රොටෝකෝල සමඟ සසඳන විට.

මෙම අවාසි :

  • වේගය තරමක් අඩු සම්ප්‍රේෂණය.
  • එය සම්පූර්ණ ද්විත්වයක් නොවේඑනම්, ඔබට එකවර යැවීමට සහ ලැබීමට නොහැකිය.
  • සමානාත්මතාවය භාවිතා නොකරයි ලැබුණු දත්ත බිටු නිවැරදි දැයි දැන ගැනීමට වෙනත් කිසිදු ආකාරයක සත්‍යාපන යාන්ත්‍රණයක් නොමැත.

 

 

Arduino මත I2C

Arduino I2C බස්

En Arduino, ආකෘතිය අනුව, මෙම I2C බස් රථය භාවිතා කිරීමට හැකි අල්මාරිය වෙනස් වේ. උදාහරණ වශයෙන්:

  • Arduino UNO, නැනෝ, මිනි ප්‍රෝ: A4 SDA (දත්ත) සඳහා සහ A5 SCK (ඔරලෝසුව) සඳහා භාවිතා කරයි.
  • ආර්ඩුයිනෝ මෙගා: SDA සඳහා pin 20 සහ SCK සඳහා 21.

එය භාවිතා කිරීමට ඔබ කළ යුතු බව මතක තබා ගන්න පුස්තකාලය භාවිතා කරන්න Wire.h ඔබේ Arduino IDE කේත සඳහා, වෙනත් අය සිටියත් I2C y I2Cdevlib. මෙම පුස්තකාලවල ලේඛන හෝ එය වැඩසටහන්ගත කරන්නේ කෙසේද යන්න පිළිබඳ කේත ලබා ගැනීමට ඔබ උනන්දු වන ව්‍යාපෘති පිළිබඳ අපගේ ලිපි ඔබට කියවිය හැකිය.

I2C සමඟ භාවිතා කිරීමට උපාංගයක ලිපිනය දැන ගන්නේ කෙසේද?

අවසාන අනතුරු ඇඟවීමක් පමණක් වන අතර, ඔබ යුරෝපීය, ජපන් හෝ ඇමරිකානු නිෂ්පාදකයින්ගෙන් IC මිලදී ගන්නා විට, ඔබ දිශාව දක්වන්න ඔබ උපාංගය සඳහා භාවිතා කළ යුතු බව. අනෙක් අතට, චීන ජාතිකයන් සමහර විට එය විස්තර නොකරයි හෝ එය නිවැරදි නොවේ, එබැවින් එය ක්රියා නොකරනු ඇත. ඔබේ සිතියමෙහි ඔබ යොමු කළ යුත්තේ කුමන දිශාවටදැයි දැන ගැනීමට ලිපින ස්කෑනරයකින් එය පහසුවෙන් විසඳා ගත හැකිය.

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. දත්තවල අරමුණ: SPAM පාලනය කිරීම, අදහස් කළමනාකරණය.
  3. නීත්‍යානුකූලභාවය: ඔබේ කැමැත්ත
  4. දත්ත සන්නිවේදනය: නෛතික බැඳීමකින් හැර දත්ත තෙවන පාර්ශවයකට සන්නිවේදනය නොකෙරේ.
  5. දත්ත ගබඩා කිරීම: ඔක්සෙන්ටස් නෙට්වර්ක්ස් (EU) විසින් සත්කාරකත්වය දක්වන දත්ත සමුදාය
  6. අයිතිවාසිකම්: ඕනෑම වේලාවක ඔබට ඔබේ තොරතුරු සීමා කිරීමට, නැවත ලබා ගැනීමට සහ මකා දැමීමට හැකිය.