Bosh sahifa Wiki SPI

SPI

SPI — Serial Peripheral Interface, controller bilan bir yoki bir nechta periferik qurilma orasida sinxron serial ma’lumot almashish usuli. U sensor, ADC, display, flash xotira va boshqa yuqori tezlik talab qiladigan qisqa masofali ulanishlarda ishlatiladi. SPI de-facto interfeys bo‘lib, barcha qurilma uchun bitta to‘liq protokolni belgilamaydi; buyruq, registr va frame formati qurilma datasheetida yoziladi.

Signal liniyalari

Odatiy SPI to‘rtta signalga ega. SCLK clockni controller hosil qiladi. MOSI controllerdan periferiyaga, MISO periferiyadan controllerga ma’lumot tashiydi. CS yoki SS tanlangan qurilmani faollashtiradi. Eski master/slave atamalari o‘rniga controller/peripheral yoki COPI/CIPO nomlari ham ishlatiladi.

SPI full-duplex: har clock impulsida ikki yo‘nalishda bit siljishi mumkin. Faqat o‘qish bajarilganda ham controller clock hosil qilish uchun dummy bayt yuboradi. Ayrim qurilmalar 3-wire rejimda bitta ikki yo‘nalishli data liniyasidan foydalanadi.

Clock rejimlari

CPOL clockning bo‘sh holatini, CPHA esa ma’lumot qaysi edge atrofida namuna olinishi va o‘zgarishini belgilaydi. Ularning kombinatsiyasi SPI mode 0–3ni hosil qiladi. Controller va peripheral bir xil rejimda sozlanmasa bitlar siljigan yoki noto‘g‘ri o‘qiladi.

Bit order MSB-first yoki LSB-first bo‘lishi mumkin. Word uzunligi 8 bit bilan cheklanmaydi; ayrim ADC yoki display 9, 12, 16 yoki boshqa uzunlikdagi transferdan foydalanadi. CSning qaysi vaqt davomida past turishi ham protokolning bir qismidir.

Bir nechta qurilma

SCLK va data liniyalari umumiy bo‘lib, har peripheral uchun alohida CS ajratilishi mumkin. Tanlanmagan qurilma MISO chiqishini high-impedance holatga o‘tkazishi kerak. Aks holda bir nechta qurilma liniyani bir vaqtda boshqarib, bus contention hosil qiladi.

Daisy-chain qo‘llaydigan qurilmalarda bir qurilmaning chiqishi keyingisining kirishiga ulanadi. Bitta uzun bit oqimi barcha qurilma registrlaridan o‘tadi. Bu pinlarni tejaydi, lekin protokol va latencyga ta’sir qiladi.

Tezlik va fizik cheklov

SPI I2Cga nisbatan ko‘pincha yuqori clock tezligida ishlaydi va manzillash overheadiga ega emas. Biroq ko‘proq sim va CS pin talab qiladi. Standart maksimal masofani belgilamaydi; signal integrity plata yo‘li, kabel, capacitance, driver va clock edge tezligiga bog‘liq.

Yuqori tezlikda ringing, crosstalk va timing skew xato keltirishi mumkin. Qisqa yo‘l, umumiy ground, mos joylashtirish va zarur bo‘lsa series termination qo‘llanadi. Logic analyzer clock mode, CS va uzatilgan baytlarni tekshiradi, oscilloscope esa signalning elektr shaklini ko‘rsatadi.

Transaction chegarasi

SPI busni bir nechta driver yoki task ishlatsa, transaction davomida clock mode, tezlik va CS holati o‘zgarmasligi kerak. Mutex butun buyruq va javob ketma-ketligini himoya qiladi. Faqat har baytni alohida qulflash boshqa qurilma transferining o‘rtaga kirishiga imkon berishi mumkin.

Ba’zi flash xotira command, address, dummy cycle va data bosqichidan foydalanadi. Dual yoki Quad SPI bir clockda ikki yoki to‘rtta data liniyasidan bit uzatib throughputni oshiradi. QSPI oddiy to‘rt simli SPI bilan faqat nom jihatdan emas, pin yo‘nalishi va controller imkoniyatlari bo‘yicha ham farq qiladi.

Bog‘liq tushunchalar

SCLK, MOSI, MISO, chip select, CPOL, CPHA, I2C