I2C — Inter-Integrated Circuit, integral sxemalar orasida qisqa masofada ma’lumot almashish uchun yaratilgan sinxron serial bus. U ikkita signal liniyasidan foydalanadi: SDA ma’lumot, SCL clock uchun. Bitta busga bir nechta controller va target qurilma ulanishi mumkin. Sensor, EEPROM, RTC va port expanderlar I2C orqali tez-tez boshqariladi.
Elektr xususiyati
SDA va SCL odatda open-drain yoki open-collector chiqishlardan foydalanadi. Qurilma liniyani pastga tortishi mumkin, lekin uni faol yuqori holatga haydamaydi. Pull-up resistor liniyani bo‘sh paytda yuqori holatga olib chiqadi. Shu tuzilma bir nechta qurilmaning bitta simni to‘qnashuvsiz boshqarishiga yordam beradi.
Pull-up qiymati bus sig‘imi, kuchlanish va tezlikka bog‘liq. Juda katta qarshilik signalning ko‘tarilishini sekinlashtiradi, juda kichik qarshilik esa past holatda ortiqcha tok talab qiladi. I2C odatda plata ichidagi yoki qisqa kabeldagi aloqa uchun mo‘ljallangan; uzun masofa sig‘im va shovqin muammosini kuchaytiradi.
Transfer jarayoni
Bus bo‘sh holatda SDA va SCL yuqori bo‘ladi. Controller SCL yuqori paytda SDAni yuqoridan pastga o‘tkazib START shartini hosil qiladi. Keyin 7 yoki 10 bitli manzil va read/write biti yuboriladi. Har sakkiz bitdan keyin qabul qiluvchi to‘qqizinchi clockda ACK uchun SDAni pastga tortadi. NACK uzatishni tugatish yoki qurilma javob bermaganini bildirish mumkin.
STOP shartida SCL yuqori paytda SDA pastdan yuqoriga o‘tadi. Repeated START busni bo‘shatmasdan yangi manzil yoki yo‘nalish bilan transfer boshlashga imkon beradi. Registrli sensordan o‘qishda controller avval register manzilini yozib, repeated STARTdan keyin o‘qish bajarishi mumkin.
Clock stretching va arbitration
Target ma’lumotni tayyorlashga ulgurmasa SCLni past holatda ushlab, clock stretching qilishi mumkin. Controller ushbu imkoniyatni qo‘llashi kerak. Ayrim qurilma yoki drayverlar stretchingni cheklashi sababli moslik datasheetdan tekshiriladi.
Multi-controller busda ikki controller bir vaqtda boshlashi mumkin. Arbitration SDAning wired-AND xususiyatiga tayanadi. Controller yuqori bit yuborishni mo‘ljallab, liniyada past qiymat ko‘rsa arbitrationni yutqazadi va uzatishni to‘xtatadi. Bu g‘olib xabarni buzmasdan tanlov qilish imkonini beradi.
Tezlik va diagnostika
Standard-mode 100 kbit/s, Fast-mode 400 kbit/s, Fast-mode Plus 1 Mbit/sgacha ishlaydi; yuqoriroq rejimlar ham mavjud. Barcha qurilma va elektr parametrlar tanlangan rejimni qo‘llashi kerak. Logic analyzer START, manzil, ACK va baytlarni dekodlab, noto‘g‘ri manzil yoki stuck busni topishga yordam beradi.
Qurilma reset paytida SDAni pastda qoldirsa bus band bo‘lib qolishi mumkin. Recovery usuli SCLga bir necha impuls berib target state machineini yakunlash, keyin STOP hosil qilishni o‘z ichiga olishi mumkin.
Manzil to‘qnashuvi
Bir busdagi ikki target bir xil manzilga ega bo‘lsa, ikkalasi bir vaqtda javob berishi mumkin. Ayrim qurilma manzil pinlari orqali bir nechta variant tanlaydi. Variant yetarli bo‘lmasa I2C multiplexer busni alohida kanallarga ajratadi yoki qurilmalardan biri boshqa controllerga ulanadi.
7 bitli manzil dokumentda ba’zan read/write biti qo‘shilgan 8 bitli qiymat sifatida yoziladi. Masalan, 7 bitli 0x3C manzilining yozish bayti 0x78 bo‘lishi mumkin. API qaysi formatni kutishini tekshirmaslik manzilni bir bit siljitib yuboradi. Ko‘p zamonaviy driver 7 bitli manzilni qabul qiladi.
Bog‘liq tushunchalar
SDA, SCL, pull-up resistor, ACK, serial bus, SPI, mikrokontroller