SPI va I2C protokoli o'rtasidagi farqlar va e'tiborga olish kerak bo'lgan narsalar
Bosilgan elektron kartadagi chiplar o'rtasida aloqa haqida gap ketganda, ikkita protokol juda mashhur: ketma-ket periferiya interfeysi (SPI) va o'zaro integratsiyalashgan davr (IIC yoki I2C). Ushbu simli protokollar "kichik" yoki "past darajali" deb hisoblanadi, chunki ularda USB, Ethernet, SATA va boshqalar kabi boshqa protokollar bilan maqtanish tezligi, mustahkamligi va masofalari yo'q.
Biroq, SPI va I2C juda mashhur, chunki ularni amalga oshirish oson, ularning og'ir vaznli qarindosh -urug'lariga nisbatan ozgina komponentlar va kam kod talab qilinadi. Ikkalasi ham bitta avtobusda ma'lumotlarni uzatish va bir nechta qurilmalarni qo'llab -quvvatlash uchun ketma -ket aloqaga tayanadi. Ko'p mikrokontroller, datchiklar va tashqi qurilmalar (masalan, LCD) bir -biri bilan gaplashish uchun SPI va I2C -ga tayanadi.
Agar siz mahsulotni loyihalashtirayotgan bo'lsangiz va SPI va I2C ni tanlashingiz kerak bo'lsa, qaysi birini tanlaysiz?
SPI
SPI 1980 -yillarda Motorola tomonidan EEPROM kabi dastlabki mikrokontrolderlar va tashqi qurilmalar o'rtasida aloqa o'rnatish usuli sifatida ishlab chiqilgan. Motorola yoki boshqa hech qanday tashkilot SPI protokolini standartlashtirmaydi. Bu "de -fakto" standarti natijasida, ishlab chiqaruvchidan ishlab chiqaruvchiga qarab, amalga oshirish turlicha bo'lishi mumkin. Har bir SPI faollashtirilgan qismi uchun ma'lumotlar varag'ini diqqat bilan o'qiganingizga ishonch hosil qiling!
Qismlar o'rtasida aloqa qilish uchun SPI to'rtta faol signal liniyalaridan foydalanadi (ular elektr va er uzatish liniyalarini o'z ichiga olmaydi). Bu qatorlarga quyidagilar kiradi:
SCLK: ketma -ket soat (master tomonidan boshqariladi)
MOSI: Master Out Slave In (usta tomonidan boshqariladi)
MISO: Master In Slave Out (qul qurilmasi tomonidan boshqariladi)
SS: qul tanlash (usta tomonidan boshqariladi)
Bu to'rtta chiziq yordamida boshqaruvchi qurilma (master) boshqa periferik qurilma (qul) bilan aloqa o'rnatishi mumkin.
SPI avtobusida faqat bitta usta bo'lishi mumkin bo'lsa -da, har qanday qo'shimcha qurilmalarni qo'shishingiz mumkin. Biroq, siz qo'shgan har bir periferiya uchun qo'shimcha SS liniyasini qo'shishingiz kerak. Misol diagrammasida biz uchta alohida SS liniyalaridan foydalanishimiz kerak, ularning har biri alohida periferik qurilmani boshqaradi.
Asosiy uskuna ma'lumotlarni periferik qurilmaga yubormoqchi yoki qabul qilmoqchi bo'lsa, u tegishli SS chizig'ini pastga tortib aloqani boshlaydi. Shu bilan birga, u soat chizig'ini faollashtiradi (SCLK -ni ma'lum bir chastotada yuqori va pastga almashtirish). Asosiy qurilma MISI liniyasida ma'lumotlarni yuboradi, shu bilan birga MISO liniyasini tanlaydi. Natijada, ma'lumotlar bir vaqtning o'zida master va periferik qurilma o'rtasida yuborilishi mumkin (to'liq dupleks).
E'tibor bering, master bilan bir vaqtning o'zida faqat bitta periferik qurilma aloqa o'rnatishi mumkin.
SPIda soatning qanday ishlashini belgilaydigan to'rt xil rejim mavjud. Asosiy va tashqi qurilmalar bir xil rejimdan foydalanishi kerak. 0 rejimi - bu qurilmalar orasida eng keng tarqalgan usul.
0 -rejim: ma'lumotlar soatning ko'tarilish vaqti bo'yicha tanlangan, soat bo'sh
1 -rejim: tushayotgan soatlarda ma'lumotlar yig'ilgan, soat bo'sh
2 -rejim: ma'lumotlar tushayotgan soat chekkasida, soat yuqori bo'shligida
3 -rejim: ma'lumotlar soatning yuqori burchagida, soatning yuqori bo'shligida
SPI hech qanday kuchlanish darajasini, maksimal tezlik tezligini yoki manzil sxemalarini aniqlamaydi. Natijada, bu omillarni o'zingiz hal qilasiz. SPI tezligi osongina 10 Mbit / s dan oshishi mumkin, shuning uchun barcha qismlaringiz uchun ma'lumotlar jadvalini o'qiganingizga ishonch hosil qiling, chunki bu qabul qilinadigan kuchlanish, tezlik chegaralari va qo'llab -quvvatlanadigan rejimlarni aniqlaydi.
Ushbu tezlik tufayli SPI katta hajmdagi ma'lumotlarni uzatish uchun foydalidir. SPI tez -tez akselerometrlar, displey qurilmalari, LCD va flesh xotira qurilmalari kabi tez yangilanish tezligini talab qiladigan sensorlarda topiladi.
I2C
Philips Semiconductors (hozir NXP Semiconductors nomi bilan tanilgan) 1982 yilda I2C spetsifikatsiyasini bir xil kartadagi chiplar orasidagi aloqani standartlashtirishga yordam berish uchun yaratgan. NXP hech kimdan I2C -ni ishlatish yoki amalga oshirish uchun haq olmaydi, lekin agar siz qurilma manzilini ro'yxatdan o'tkazmoqchi bo'lsangiz, ular haq oladi.
I2C aloqa uchun 2 ta liniyani (quvvat va erni hisobga olmaganda) ishlatadi:
SDA: ketma -ket ma'lumotlar
SCL: ketma -ket soat
Nazariy jihatdan bitta avtobusga istalgan miqdordagi asosiy qurilmalar va istalgan miqdordagi qul qurilmalar biriktirilishi mumkin. SDA va SCL liniyalari ochiq drenaj liniyalari bo'lishi shart. Natijada, qurilmalar faqat har bir chiziqni pastga tortishi mumkin. Chiziqni yuqoriga ko'tarish uchun har bir chiziqda tortish qarshiligi talab qilinadi.
Ochiq drenaj dizayni tufayli I2C bitta avtobusda bir nechta ustalarni qo'llab-quvvatlaydi. Agar ikkita qurilma bir vaqtning o'zida uzatishni boshlasa, ulardan biri oxir -oqibat "arbitraj" deb nomlanuvchi jarayonda orqaga qaytadi. Qurilmalar muloqot paytida SDA liniyasini kuzatadilar. Agar qurilma yuqori mantiqni uzatmoqchi bo'lganida SDA chizig'i past ekanligini ko'rsa, u boshqa qurilmaning aloqa o'rnatmoqchi ekanligini biladi va uzatishni to'xtatadi.
Aloqa boshlash uchun asosiy qurilma START holatini beradi, bu erda SDA chizig'i pastda tortiladi, SCL chizig'i hali ham yuqori. Keyin usta avtobusda mo'ljallangan oluvchining 7 bitli manzilini, so'ngra yozish bitini (0) yoki o'qish bitini (1) yuboradi. Agar avtobusdagi qurilma aniq manzilga ega bo'lsa, u SDA chizig'ini past (ACK bit) tortib javob beradi.
Ma'lumotlar master yoki periferik qurilma tomonidan bir vaqtning o'zida 1 baytlik paketlarda yuborilishi mumkin; har bir bayt qabul qiluvchi tomonidan ACK biti bilan tasdiqlanishi kerak. Aloqa tugagandan so'ng, usta SCL baland bo'lsa, SDA chizig'ini (u yuqoriga tortiladi) qo'yib, STOP shartini qo'yadi.
Ma'lumot uzatish tezligi dastlab 100 kbit / s (standart rejim) bilan cheklangan. 1992 yilda Philips tezlik chegarasini 400 kbit / s gacha oshirdi (tezkor rejim). Maxsus 3,4 Mbit / s rejim (yuqori tezlik rejimi) 6 yildan keyin qo'shildi. Yuqori tezlikdagi ulanishni o'rnatish uchun master va periferiya o'rtasida past tezlikda maxsus buyruqlar to'plami berilishi kerak.
I2C avtobusiga istalgan miqdordagi qurilmalarni jismonan ulash mumkin bo'lsa-da, 7-bitli manzil qurilmalarning haqiqiy sonini cheklaydi. Ayrim manzillar zaxiralangan, shuning uchun bitta avtobusda faqat 112 xil qurilma bo'lishi mumkin. Agar kerak bo'lsa, qo'shimcha qurilmalarga ruxsat berish uchun maxsus 10-bitli manzil rejimini yoqish mumkin.
I2C -da "soatni cho'zish" deb nomlanuvchi oqimni boshqarish shakli mavjud. Periferik qurilma SCL chizig'ini past ushlab turishi mumkin, bu esa asosiy qurilmaga uzatish tezligini sekinlashtirishini aytadi. Bu usul periferik qurilmaga javob berishdan oldin ma'lumotlarni qayta ishlashga imkon beradi.
I2C tomonidan talab qilinadigan pinlar sonining pastligi tufayli, ko'plab sensor ishlab chiqaruvchilari chiplarida bu protokoldan foydalanadilar. Masalan, harorat sensori, akselerometr, analog-raqamli konvertor va boshqalarni I2C yordamida topish mumkin.
Xulosa
Ikkala protokol ham turli xil ilovalar uchun javob beradi. Ko'pincha, siz ma'lum bir qismni ishlab chiqaruvchi qaysi protokolni bajarishi bilan cheklanasiz. Ba'zilar, Analog Devices ADXL345 akselerometri kabi, bitta chipda I2C va SPI interfeyslarini taklif qiladi.
Agar siz ikkalasidan birini tanlashingiz kerak bo'lsa, SPI odatda eng yaxshi vositadir, agar sizga tezroq uzatish tezligi kerak bo'lsa. Boshqa tomondan, I2C, agar sizda mikrokontroller yoki mikroprotsessorda cheklangan pinlar bo'lsa, yaxshiroqdir.
Do'stlaringiz bilan baham: |