RisalDash RisalDash
Mikrokontrollerlarning simli interfeyslari

Bir bayt — uni yuborishning olti usuli

Ma'lumot doim bir xil: 0x4A. Shinalar orasidagi farq — necha sim kerakligi, taktni kim beradi, qabul qiluvchi baytning boshini qanday aniqlaydi va bu qancha masofaga yetib boradi. Quyida — bir xil bayt oltita shinada. Pastdagi panelda bitlarni o'zgartiring — barcha ossillogrammalar qayta chiziladi.

Bir bayt, olti shina0x4A
shu yerdan boshlang

Nega mikrosxemalar umuman bir-biri bilan gaplashishi kerak?

Deyarli har qanday qurilma ichida — aqlli soat, choynak, avtomobil bo'lsin — mikrokontroller, kichkina miya-boshliq o'tiradi. Uning atrofida esa «xodimlar»: harorat datchigi, ekran, flesh-mikrosxema, Wi-Fi moduli. Boshliq ulardan ma'lumot yig'ishi va buyruqlar tarqatishi kerak. Savol — ular aynan qanday gaplashadi?

Har biriga alohida sim dastasi tortish mumkin — tez, lekin plata bir zumda chalkash makaronga aylanadi. Yoki bitta-ikkita umumiy sim tortasiz, ular bo'ylab hamma qoidalarga rioya qilgan holda navbatma-navbat gaplashadi. Sim orqali gaplashishning ana shu qoidalari ketma-ket shinalar (serial buses) deb ataladi: «ketma-ket» — chunki bitlar sim bo'ylab bittalab, bir vaqtning o'zida emas, birin-ketin yuguradi.

Maqolaning davomida — ana shunday «tillar»ning eng keng tarqalgan oltitasi. Ular bir xil ishni bajaradi (baytlarni tashiydi), lekin har xil yo'l bilan — va har biri o'z vazifasiga moslashtirilgan.

Bir vazifa — o'z shinasi

Rangli ekranga tasvir chiqarish

SPI — jiddiy tezlik kerak, simlar qisqa va ularni ayamasa ham bo'ladi.

Plataga o'nlab kichik datchik osish

I²C — hammasiga bor-yo'g'i ikkita sim; tezlik muhim emas, pinlarni tejash muhim.

Avtomobil kapoti ostidagi tugunlarni bog'lash

CAN — atrofda uchqun, halaqit va tebranish — u o'ta pishiq bo'lishi shart.

Kompyuterga sozlash matnini tashlash

UART — ikki simli eng oddiy shnur, deyarli har narsa bilan sozlamasdan ishlaydi.

Uy bo'ylab termometrlar gulchambarini tortish

1-Wire — o'nlab metrga har bir datchik uchun bitta sim; tezlik muhim emas.

Sanoat qurilmasi yoki server konsoliga ulanish

RS-232 — eski ishonchli standart: katta kuchlanishlar kabelni metrlab tortadi.

Oddiy so'zlar bilan lug'at

Bayt

Ma'lumotning eng kichik foydali bo'lagi — 0 dan 255 gacha bo'lgan son. Bitta belgi, bitta piksel rangi, bitta datchik ko'rsatkichi. Ketma-ket sakkizta bit (nol va birlar).

Takt signali (clock)

Metronomli dirijyor: u «bir-ikki-uch» deb uradi, va har bir zarbda qurilmalar aniq bitta bit uzatadi. Takt bo'lsa (SPI, I²C) — ular sinxron ishlaydi; takt bo'lmasa (UART) — ikkala tomon aniq sur'atni oldindan kelishib oladi.

Tortish rezistori (pull-up)

Simni «plyus»ga tortadigan oddiy rezistor, toki u havoda osilib qolmasin va hech kim uzatmayotganda antenna kabi halaqit ushlamasin.

Boshqaruvchi va periferiya

Boshqaruvchi (master) suhbatni boshlaydi va sur'atni belgilaydi; periferiya (slave) o'ziga murojaat qilinganda javob beradi. Ba'zi shinalarda boshqaruvchi bitta, boshqalarida hamma teng.

00

Barcha shinalarni farqlaydigan to'rtta savol

SAVOL 1

Taktni kim beradi?

Alohida takt liniyasi bor — shina sinxron (SPI, I²C): qabul qiluvchi chastotani oldindan bilishi shart emas. Bunday liniya yo'q — asinxron (UART, RS-232, 1-Wire): tezlikni oldindan kelishib olish kerak va ikkala tomon ham uni aniq ushlab turishi shart.

SAVOL 2

Baytning boshini qanday topish mumkin?

Xizmat biti bo'yicha (UART start-biti), mikrosxema tanlash fronti bo'yicha (SPI dagi CS), qoidalarning maxsus buzilishi bo'yicha (I²C dagi START — SCL yuqori turganda SDA pasayadi) yoki uzun reset impulsi bo'yicha (1-Wire).

SAVOL 3

Liniyada nechta qurilma bor?

Ikkitasi (UART, RS-232), bitta boshqaruvchi va alohida tanlash liniyasi orqali ko'p periferiya (SPI) yoki adres orqali (I²C, 1-Wire), yoki hammasi teng va shina uchun kurashadi (CAN).

SAVOL 4

Daraja qanday hisoblanadi?

Bir simli umumiy yerga nisbatan — oddiy, lekin xalaqitlarni ushlaydi (UART, SPI, I²C). Differentsial — o'ralgan juftlikning ikki simi farqi bo'yicha, xalaqit ikkalasiga ham keladi va ayriladi (CAN, RS-485). Shuning uchun santimetrlar o'rniga o'nlab metrlar.

Asinxron: faqat ma'lumot
Takt yo'q. Qabul qiluvchi start-bitning pasayishini ushlaydi, yarim bit kutadi va keyin har bir bit oralig'ining o'rtasida namuna oladi, vaqtni o'z taymeri bilan sanaydi. Chastotalar farqi ≈2–3 % dan oshsa — bayt tarqalib ketadi.
Sinxron: ma'lumot + takt
Boshqaruvchi o'zi takt fronti bilan «hozir o'qi» deydi. Tezlik istalgancha bo'lishi va hatto suzib yurishi mumkin — qabul qiluvchi baribir bitga tushadi. Narxi — ortiqcha sim.
01 / asinxron · nuqta-nuqta

UART

Universal Asynchronous Receiver / Transmitter

Ikkita ma'lumot simi, hech qanday takt yo'q. Ikkala tomon oldindan tezlik haqida kelishib olgan (115200), va bayt kadrga o'raladi: start-bit, kichigidan boshlab sakkiz bit ma'lumot, stop-bit. Bo'sh holatda liniya yuqori — shuning uchun darajaning pasayishi «e'tibor, ketdik» degani.

SimlarTX, RX, GND
Taktyo'q, kelishuv bo'yicha
Dupleksto'liq
Qurilmalar2
Tezlik9600 … 115200 bit/s
1–3 Mbit/s gacha
MasofaTTL darajalarida ~1 m gacha
8N1 kadr ossillogrammasi 0x4A
Kichik bit birinchi keladi, shuning uchun ekranda bayt 0b yozuviga nisbatan «teskari» o'qiladi. 8N1 kadr = 8 bit ma'lumot, No parity, 1 stop-bit: har 8 foydali bitga 10 bit oralig'i ketadi, ya'ni trafikning 20 % — qo'shimcha yuk.
Ulanish sxemasi
Yagona nozik jihat: birining TX si ikkinchisining RX iga boradi, liniyalar kesishadi. Va umumiy yer majburiy — usiz «nol» shunchaki mavjud emas.
Bu qanday ishlaydi
  1. Bo'sh holatda liniya 1 da turadi. Qabul qiluvchi pasayishni kutadi.
  2. Uzatuvchi liniyani bir bit oralig'iga tushiradi — bu start-bit. Qabul qiluvchi o'z taymerini ishga tushiradi.
  3. 8 bit ma'lumot, kichigidan boshlab keladi. Qabul qiluvchi har bir oraliqning o'rtasida darajani o'qiydi (odatda frontni ushlab olmaslik uchun 16× o'ta namuna olish bilan).
  4. Kerak bo'lganda — juftlik biti: bitta xatoni nazorat qiladi.
  5. Stop-bit liniyani 1 ga qaytaradi. Agar shu payt liniya pastda bo'lsa — qabul qiluvchi framing error haqida xabar beradi: ehtimol, baud rate mos kelmagan.
Kuchli tomonlari
  • Ikki sim, to'liq dupleks, har qanday mikrokontrollerga o'rnatilgan.
  • Boshqaruvchi va periferiya yo'q — kim xohlasa va qachon xohlasa gapira oladi.
  • Oson nosozlik tuzatish: USB-o'tkazgichni ulaysiz va terminalda matnni o'qiysiz.
  • Har qanday narsa ustida ishlaydi: RS-232, RS-485, optotola, radio.
Cheklovlar
  • Aniq ikkita ishtirokchi, adreslash yo'q.
  • Aniq takt manbai kerak: ichki RC-generator ko'pincha 115200 ni ko'tara olmaydi.
  • Xatolarni nazorat qilish — ko'pi bilan juftlik biti.
  • O'tkazuvchanlikning 20 % start va stopga ketadi.
  • Yetkazib berish haqida hech narsa bilmaydi: bo'shliqqa yubordi va bilmay qoldi.

Qayerda uchraydi: har qanday plataning nosozliklarni tuzatish konsoli, AT-buyruqli GSM/GPS/Wi-Fi modullar, chek printerlari, shtrix-kod skanerlari, «mikrokontroller ↔ Linux-plata» bog'lanishi, proshivka yuklagichlari.

02 / sinxron · yulduz

SPI

Serial Peripheral Interface

Eng tez va eng to'g'ridan-to'g'ri shina: boshqaruvchi takt liniyasini tortadi va har taktda ikkita siljish registri bitlar bilan almashadi — biri u tomonga, biri qaytadan, bir vaqtda. Hech qanday adreslar, hech qanday tasdiqlar: CS liniyasi bilan kimni tanlagan bo'lsang, o'sha bilan gaplashasan.

SimlarSCK, MOSI, MISO,
CS (har periferiyaga bittadan)
Taktboshqaruvchidan
Dupleksto'liq
Qurilmalar1 boshqaruvchi + N periferiya
Tezlik10 … 100 MHz
Masofasantimetrlar, bitta plata
Baytlar almashinuvi, rejim 0 (CPOL=0, CPHA=0) 0x4A
Boshqaruvchi o'z baytini MOSI orqali berayotganda, periferiya xuddi shu taktlarda o'zinikini MISO orqali beradi — bu yerda misol uchun inversiya. Strelkalar — namuna olish momenti: 0-rejimda ma'lumot pasayishda qo'yiladi va ko'tarilish frontida o'qiladi. Katta bit birinchi keladi.
Ulanish sxemasi
SCK, MOSI va MISO hamma uchun umumiy, CS liniyalari esa nechta periferiya bo'lsa shuncha kerak — va har biri boshqaruvchining pinini band qiladi. Bu tezlik uchun asosiy to'lov.
Bu qanday ishlaydi
  1. Boshqaruvchi tanlangan periferiyaning CS ini tushiradi — qolganlar chiqishlarini o'chiradi va xalaqit bermaydi.
  2. Boshqaruvchi SCK ga 8 takt beradi. Har takt = har tomonga bitta bit.
  3. Bir front bo'yicha ma'lumot qo'yiladi, qarama-qarshi front bo'yicha — o'qiladi. Aynan qaysi biri — CPOL va CPHA aniqlaydi, shundan 0…3 rejimlari.
  4. Baytlar ketma-ket xizmat bitlarisiz keladi: qancha takt bergan bo'lsang — shuncha bit uzatding. O'tkazuvchanlik 100 % ishlatiladi.
  5. Boshqaruvchi CS ni ko'taradi — tranzaksiya yopildi, periferiya o'z ichki avtomatini tiklaydi.
Kuchli tomonlari
  • O'nlab megabit: displeylar, SD-kartalar va flesh uchun yagona variant.
  • To'liq dupleks va nol qo'shimcha yuk.
  • Eng oddiy apparat — siljish registrlarida amalga oshiriladi.
  • Istalgan uzunlikdagi posilka: baytga karrali bo'lishi shart emas.
Cheklovlar
  • Simlar: 3 + har qurilmaga bitta CS.
  • Bitta boshqaruvchi, arbitraj yo'q.
  • Tasdiq yo'q: boshqaruvchi periferiya o'lganini yoki umuman kavsharlanmaganini bilmaydi.
  • Ustidan standart yo'q: har mikrosxemaning o'z buyruqlar to'plami va o'z rejimi bor.
  • Faqat plata ichida — uzun shleyflar «jaranglaydi».

Qayerda uchraydi: SD-kartalar, TFT- va e-Ink-displeylar, NOR flesh mikrosxemalari (shu jumladan QSPI, undan proshivka yuklanadi), nRF24L01 va LoRa radiomodullar, tez ADC lar, yuqori chastota rejimidagi akselerometrlar.

03 / sinxron · umumiy shina

I²C

Inter-Integrated Circuit · TWI

Butun plataga ikki sim. Qurilmalar faqat liniyani nolga tortishni biladi, uni esa podtyajka rezistorlari ko'taradi — shuning uchun shinada ziddiyat jismonan bo'lmaydi. Har bir qurilmaning 7-bitli adresi bor va har bir uzatilgan bayt ACK biti bilan tasdiqlanadi.

SimlarSDA, SCL, GND
+ 2 podtyajka
Taktboshqaruvchidan, periferiya
sekinlashtira oladi
Dupleksyarim
Qurilmalar112 adresgacha
Tezlik100 / 400 kHz,
1 MHz Fm+, 3.4 MHz HS
Masofao'nlab sm, sig'im limiti 400 pF
0x3C qurilmasiga bayt yozish 0x4A
Shina qoidasi: SDA faqat SCL pastda bo'lganda o'zgaradi. SCL yuqori bo'lganda o'zgarishi — bu xizmat simvoli: pasayish = START, ko'tarilish = STOP. Shtrixlangan ACK bitini endi periferiya tortadi — shunday qilib boshqaruvchi o'zi eshitilganini biladi. Bu yerda mantiq kutilganidan teskari: 0 (liniya tortilgan) = ACK «qabul qilindi», 1 (liniya qo'yib yuborilgan) = NACK «uyda hech kim yo'q» yoki «to'xta» — bu ochiq stokning ishi.
Ulanish sxemasi
Butun shinaga ikkita podtyajka (odatda 100 kHz da 4.7 kΩ, 400 kHz da 2.2 kΩ) — har qurilmaga juftdan emas. Hammada chiqishlar «ochiq stok»: yuqoriga tortadigan narsasi yo'q.
Bu qanday ishlaydi
  1. START: SCL yuqori turganda SDA pasayadi. Shina band.
  2. Boshqaruvchi 7 bit adres va yo'nalish bitini beradi: 0 — yozish, 1 — o'qish.
  3. Shu adresli qurilma to'qqizinchi taktda SDA ni tortadi — ACK. To'qqizinchi taktdagi sukunat «uyda hech kim yo'q» degani.
  4. Keyin ma'lumot baytlari, har biri o'z ACK i bilan. Qabul qiluvchi NACK bilan javob berishi mumkin — «yetar».
  5. Ulgurmayaptimi? Periferiya SCL ni pastda ushlaydi — clock stretching, boshqaruvchi sabr bilan kutadi.
  6. STOP: SCL yuqori turganda SDA ko'tariladi. Shina bo'sh.
Kuchli tomonlari
  • O'nlab qurilmaga ikki sim — pinlar tejamkorligi juda katta.
  • Adreslash va qabulni tasdiqlash protokolga o'rnatilgan.
  • Shinani so'rov qilib, unga umuman nima ulanganini bilish mumkin.
  • Bir nechta boshqaruvchi halol arbitraj bilan.
Cheklovlar
  • SPI dan tartiblarga sekinroq, yarim dupleks.
  • Adreslar to'qnashadi: ikkita bir xil datchikni ko'pincha yonma-yon osib bo'lmaydi.
  • Shina sig'imi simlar uzunligi va tezlikni cheklaydi.
  • Osilib qolgan periferiya SDA ni pastda ushlab, butun shinani o'ldirishi mumkin.
  • Qo'shimcha yuk: har baytga adres va ACK.

Qayerda uchraydi: deyarli barcha datchiklar (BME280, MPU6050, VL53L0X), SSD1306 OLED-displeylar, 24Cxx EEPROM, real vaqt soatlari, quvvat mikrosxemalari, port kengaytirgichlar, HDMI-kabeldagi monitor EDID si.

Amaliyot: bitta shinada to'rtta I²C datchik taqqoslandi →

04 / differentsial · hammasi teng

CAN

Controller Area Network

Yonida starter uchqun sochayotgan mashina uchun mo'ljallangan shina. O'ralgan juftlik, differentsial darajalar, uchlarida 120 Ω. Boshqaruvchilar yo'q — prioritetli xabarlar bor: tugun emas, balki xabarning ma'nosi identifikator orqali adreslanadi va barcha tugunlar uni tinglash yoki tinglamaslikni o'zi hal qiladi.

SimlarCAN_H, CAN_L (o'ralgan juftlik)
+ 2×120 Ω
Taktyo'q, frontlar bo'yicha sinxronlash
Dupleksyarim
Qurilmalaro'nlab teng huquqli
Tezlik500 kbit/s odatda,
1 Mbit/s gacha · CAN FD 8 gacha
Masofa1 Mbit/s da 40 m,
125 kbit/s da 500 m
Differentsial juftlik: dominant recessive ni yengadi CAN_H / CAN_L
Retsessiv holat — ikkala liniya taxminan 2.5 V, farqi ≈0 V, bu mantiqiy 1. Dominant — liniyalar ±1 V ga ajraladi, bu mantiqiy 0. Agar bir tugun 1, boshqasi 0 uzatsa — shinada 0 bo'ladi. Butun arbitraj shu oddiy fakt ustiga qurilgan. O'xshatish: 0 — dominant (kimdir ovoz chiqarib gapiryapti), 1 — retsessiv (hamma jim). Sukunat ustidan gapirish mumkin, aksincha emas — shuning uchun ID sida nollar oldinroq turgan tugun bironta ham bitni yo'qotmasdan arbitrajda g'olib chiqadi.
Kadr tuzilishi · o'sha bayt yagona ma'lumot bayti sifatida 0x4A
Foydali ma'lumot ko'pi bilan 8 bayt (CAN FD da — 64), zato ularga 44+ xizmat biti osilgan: prioritet, uzunlik, CRC-15, barcha tinglovchilardan bir vaqtda tasdiq. Bu shina hajm haqida emas, ishonchlilik haqida.
Ulanish sxemasi
Qisqa tarmoqlanishlarga ega bitta magistral liniya va ikki uchida majburiy 120 Ω terminatorlar — ularsiz aks-sadolar kadrlarni buzadi. Mikrokontroller o'zi shinaga chiqmaydi: ular orasida transiver.
Bu qanday ishlaydi
  1. Tugun shinada sukunatni kutadi va kadrni dominant SOF bilan boshlaydi.
  2. Identifikatorni uzatadi va bir vaqtda shinani tinglaydi. O'zi 1 chiqargan joyda 0 ni ko'rdi — demak, kimdir prioritetliroq: jimgina yo'l beradi va yana urinib ko'radi. Kichikroq ID = yuqori prioritet, va g'olibning baytlari zarar ko'rmadi.
  3. Uzunlik va 0–8 bayt ma'lumot keladi, keyin CRC-15.
  4. Kadrni xatosiz qabul qilgan har kim ACK bitini tortadi. Barcha tinglovchilarga bitta umumiy bit.
  5. Xatoni sezdi — har qanday tugun error frame chiqaradi va kadrni hamma uchun buzadi. Uzatuvchi avtomatik takrorlaydi.
  6. Doim xato qiladigan tugun xato hisoblagichlari bo'yicha o'zini shinadan o'zi o'chiradi — bus off. Buzuq temir tarmoqni o'zi bilan tortib ketmaydi.
Kuchli tomonlari
  • Og'ir xalaqitlarda va o'nlab metrlarda yashaydi.
  • Prioritetlar va arbitraj kadr yo'qotmasdan.
  • Xatolarni aniqlash, avto-takrorlash, buzuq tugunni o'zini izolyatsiya qilish.
  • Keng eshittirish: tinglovchi qo'shdingiz — mavjud tugunlarni o'zgartirish shart emas.
  • Butun tarmoqqa atigi ikki sim.
Cheklovlar
  • Transiver va terminatorli to'g'ri topologiya kerak.
  • Kadrga 8 bayt — katta bloklarni bo'laklarga kesish kerak.
  • O'rganish va sozlashda murakkabroq, analizator kerak.
  • O'zicha ma'no anglatmaydi: yuqori darajali protokol kerak — OBD-II, J1939, CANopen.
  • Band shinada past prioritetli xabar uzoq kutishi mumkin.

Qayerda uchraydi: butun avtomobil elektronikasi va OBD-II orqali diagnostika, yuk mashinalari va qishloq xo'jaligi texnikasi (J1939), sanoat avtomatikasi (CANopen), BLDC-motor kontrollerlari, liftlar, tibbiy uskunalar, batareya BMS lari.

05 / darajalar va razyom · nuqta-nuqta

RS-232

EIA/TIA-232 · «COM-port»

Tez-tez chalkashlik: RS-232 — bu boshqa UART emas. Kadr o'sha, start-stop bitlar ham o'sha. Standart kuchlanish va razyomni tasvirlaydi: mantiqiy bir bu yerda — −12 V, nol — +12 V. Inversiya plyus 24 voltlik amplituda: signal uzun kabelni ham, TTL ni o'ldiradigan xalaqitlarni ham yengib o'tadi.

SimlarTXD, RXD, GND
+ RTS/CTS, DTR/DSR
Darajalar1 = −5…−15 V
0 = +5…+15 V
Dupleksto'liq
Qurilmalar2
Tezlik300 … 115200 bit/s
Masofa15 m gacha
Ikki dunyodagi bitta kadr: TTL va RS-232 0x4A
Yuqorida mikrokontrollerdan chiqadigan narsa, pastda — MAX3232 dan keyin kabelga ketadigan narsa. Shakli bir xil, lekin ag'darilgan va nol orqali cho'zilgan. RS-232 ni to'g'ridan-to'g'ri mikrokontroller piniga ulab bo'lmaydi: −12 V uni o'ldiradi.
DE-9 razyom va darajalar o'zgartirgichi
Minimal ishchi to'plam — uch sim: 2 RXD, 3 TXD, 5 GND. Qolganlari — apparat oqim boshqaruvi (RTS/CTS) va modemlar merosi (DTR, DSR, DCD, RI). Ikki teng huquqli qurilma orasidagi kabel 2 va 3 ni kesishtiradi va null-modem kabeli deyiladi.
Amaliyotda nimani bilish kerak
  1. Qurilma ichida oddiy UART yashaydi. RS-232 daraja mikrosxemasidan keyin boshlanadi.
  2. MAX232 / MAX3232 to'rtta kondensatordagi zaryad nasoslari bilan bitta quvvatdan ±12 V hosil qiladi.
  3. Sozlash 115200 8N1 ko'rinishidagi satr bilan tasvirlanadi — tezlik, ma'lumot bitlari, juftlik, stop-bitlar. Biror narsa mos kelmasa — ekranda axlat.
  4. Yer ikkala qurilmaga umumiy va bu zaif joy: uzun kabelda yerlarning turli potensiallari «nol» bo'yicha tok beradi.
  5. Yuzlab metr yoki ko'p tugun kerakmi — differentsial qarindoshi olinadi: RS-422 va RS-485 (1200 m gacha, 32 tugungacha, uning ustida Modbus yashaydi). Bu aslida o'sha UART kadr, faqat o'ralgan juftlik orqali differentsial darajalarda yuboriladi xuddi CAN kabi — masofa va xalaqitbardoshlik ana shundan.
Kuchli tomonlari
  • Katta kuchlanish amplitudasi → TTL dan yuqori xalaqitbardoshlik, santimetrlar o'rniga metrlar.
  • To'liq dupleks, apparat oqim boshqaruvi.
  • Mutlaq moslik: standart oltmish yildan oshgan.
  • Bitta mikrosxema bilan har qanday UART ga o'rnatiladi.
Cheklovlar
  • Faqat ikkita qurilma.
  • Umumiy yerga nisbatan bir simli darajalar — RS-485 gacha uzoq.
  • Yirik razyom, kondensatorlar va alohida mikrosxema kerak.
  • Kompyuterlarda yo'qoldi: USB-UART o'tkazgichlar orqali yashaydi (CP2102, FT232, CH340).

Qayerda uchraydi: sanoat kontrollerlari va CNC, laboratoriya asboblari, UPS, kassa uskunalari, tarmoq kommutatorlari va serverlar (konsol port), temir yo'l va energetika avtomatikasidagi diagnostika.

06 / asinxron · bitta sim

1-Wire

Dallas / Maxim bir shinali interfeys

Tejamkorlik cheki: bitta ma'lumot liniyasi podtyajka bilan — va shu liniya orqali qurilma quvvatlanishi ham mumkin, liniya bo'sh turganda energiyani kondensatorda saqlab. Na takt, na ikkinchi sim: hammasi past impuls davomiyligi bilan kodlanadi. Har bir qurilma zavodda tikilgan noyob 64-bitli raqam tashiydi.

SimlarDQ + GND
(+ VCC ixtiyoriy)
Taktyo'q, faqat tayminglar
Dupleksyarim
Qurilmalarko'p, ROM ID bo'yicha qidiruv
Tezlik≈16 kbit/s,
overdrive ≈125
Masofao'nlab metr
Reset, javob va baytni vaqt slotlari bilan yozish 0x4A
Birni va nolni faqat slot ichidagi past impuls uzunligi farqlaydi: qisqa pasayish ≈6 µs — bu 1, uzun ≈60 µs — bu 0. Shundan asosiy murakkablik: drayver mikrosoniyali kechikishlarda yashaydi va slot o'rtasidagi ortiqcha uzilish bitni buzadi.
Ulanish sxemasi va parazit quvvatlanish
Podtyajka 4.7 kΩ — va shu liniyada barcha datchiklar osilib turadi. Parazit quvvatlanish rejimida uchinchi sim umuman kerak emas: liniya yuqori turganda qurilma ichki kondensatorni zaryadlaydi.
Bu qanday ishlaydi
  1. Boshqaruvchi liniyani ≥480 µs pastda ushlaydi — reset. Liniyadagi barcha qurilmalar qayta ishga tushadi.
  2. Qurilmalar 60–240 µs ga o'z pasayishi bilan javob beradi — presence pulse: «biz shu yerdamiz».
  3. Boshqaruvchi buyruqni 60–120 µs slotlar bilan uzatadi. Keyin yo Skip ROM, agar qurilma bitta bo'lsa, yoki aniq qurilmaning 64-bitli raqami bilan Match ROM.
  4. Bir nechta qurilma ROM search algoritmi bilan topiladi: adreslar daraxtini bitli aylanib chiqish, tugunlar guruhlar bilan saralanadi.
  5. O'qishda boshqaruvchi liniyani o'zi 1–2 µs ga tushiradi, qo'yib yuboradi va darajaga qaraydi: periferiya pastda ushlab tursa — 0, qo'yib yuborsa — 1.
  6. Qurilma raqamida oxirgi bayt — CRC-8, shuning uchun ulanish darhol tekshiriladi.
Kuchli tomonlari
  • Bitta sim hamma narsaga, quvvat ham kiradi.
  • Noyob zavod ID: qurilmalarni sozlash shart emas va adreslar to'qnashmaydi.
  • Oddiy o'ralgan juftlikning o'nlab metrlari.
  • Bitta liniyada ko'p qurilma — uy bo'ylab harorat datchiklari gulchambari.
Cheklovlar
  • Juda sekin: DS18B20 o'lchovi 750 ms gacha oladi.
  • Mikrosoniyalardagi qat'iy tayminglar, yarim dupleks.
  • Mikrokontrollerlarda apparat qo'llab-quvvatlash deyarli yo'q — hammasi qo'lda.
  • Uzun liniya aniq topologiya va ba'zan aktiv podtyajka talab qiladi.

Qayerda uchraydi: DS18B20 termometrlari (aqlli uy, inkubatorlar, serverxonalar), iButton tabletka-kalitlari va domofonlar, DS24xx EEPROM, akkumulyator va kartrijlarni identifikatsiya qilish, issiqxonalardagi namlik datchiklari.

07

Hammasi bitta ekranda

ShinaSignal liniyalariTaktDupleksQurilmalarAdreslashTezlikMasofaDarajalar
UART 2yo'qto'liq2yo'q~1 Mbit/s gacha~1 mbir simli, TTL
SPI 3 + N×CSSCK boshqaruvchidanto'liq1 + NCS liniyasi bilan10–100 MHzsmbir simli, TTL
I²C 2 + podtyajkaSCL boshqaruvchidanyarim112 gacha7-bitli adres0.1–3.4 MHzo'nlab smochiq stok
CAN 2 (o'ralgan juftlik)yo'q, frontlar bo'yichayarimo'nlabxabar ID si, prioritet1 Mbit/s gacha40–500 mdifferentsial
RS-232 2 (+ oqim)yo'qto'liq2yo'q115200 bit/s gacha15 m±5…15 V, inversiya
1-Wire 1yo'q, tayminglaryarimko'p64-bitli ROM ID16–125 kbit/so'nlab mochiq stok + podtyajka

Jadvalga foydali qo'shimcha: RS-485 — ketma-ket portning differentsial ko'p nuqtali versiyasi: o'sha UART-kadr, o'ralgan juftlik, 32 tugungacha va 1200 m, yarim dupleks. Unda Modbus RTU va deyarli barcha sanoat periferiyasi ishlaydi.

08

Vazifaga qaysi birini olish kerak

Ikkita qurilma, ozgina ma'lumot, oddiy va darhol kerak — hamda trafikni terminalda ko'z bilan ko'rish istagi.

UART

O'sha platadagi displey, SD-karta, flesh yoki ADC: tezlik muhim, pinlar bor.

SPI

Besh-o'nta mayda datchik va registr, ma'lumot kam, bo'sh pinlar esa deyarli yo'q.

I²C

Metrlab sim, tebranish va xalaqit, nosozlik yo'l qo'yilmaydi, tugunlar ko'p va teng huquqli.

CAN

Sanoat asbobiga, UPS ga yoki serverning konsol portiga ulanish.

RS-232

Uzun kabel bo'ylab termometrlar gulchambari, tezlik muhim emas, simlar minimal bo'lishini xohlaysiz.

1-Wire

Yuzlab metr, o'nlab tugun, lekin CAN ortiqcha, tayyor sanoat qurilmalari bilan ishlash kerak.

RS-485 / Modbus
09

Odatda hamma narsa qayerda buziladi

UART

TX va RX kesishtirilmagan

TX RX ga borishi kerak. Ikkinchi klassika — tezlik mos kelmasligi: matn o'rniga barqaror axlat keladi. Va umumiy yer majburiy.

SPI

Noto'g'ri rejim yoki unutilgan CS

Ma'lumot o'qiladi, lekin bir bitga siljigan — deyarli har doim CPOL/CPHA chalkashtirilgan. Mahkamlanmagan CS suzib yuradi va periferiyani tasodifiy momentda ochadi: uni quvvatga torting.

I²C

Podtyajka yo'q yoki adreslar mos kelgan

Rezistorlarsiz shina umuman jim. Ikkita bir xil datchik — adreslar ziddiyati, adres tanlash pini yoki TCA9548A multipleksori qutqaradi. Uzun simlar sig'im qo'shadi: chastotani pasaytiring.

CAN

Terminatorlar yo'q yoki turli tezliklar

120 Ω aynan magistralning ikki jismoniy uchiga qo'yiladi, har tugunga emas. Bitreyt hammada bitigacha mos bo'lishi kerak — aks holda shina xatolar lavinasiga tushadi.

RS-232

Pinga to'g'ridan-to'g'ri ulanish

±12 V mikrokontroller kirishini kuydiradi — MAX3232 kerak. Va null-modem kabeli kerakmi tekshiring: kesishmasdan ikkita «terminal» bir-birini eshitmaydi.

1-Wire

Yeb qo'yilgan tayminglar

60 µs slot o'rtasidagi uzilish bitni buzadi. Uzun liniyada kuchliroq podtyajka qo'shing va ko'rsatkichlarga ishonishdan oldin har javobning CRC-8 ini tekshiring.

Umumiy

Turli quvvat darajalari

5 V va 3.3 V to'g'ridan-to'g'ri do'st bo'lmaydi: bo'luvchi, darajalar o'zgartirgichi yoki tolerantli kirishli qurilma kerak. Buni protokol mantig'idan oldinroq tekshiring.

Umumiy

Ko'r-ko'rona sozlash

Arzon narxdagi mantiqiy analizator soatlab taxmin qiladigan narsani ko'rsatadi: ACK bormi, front qayerda adashdi, adres to'g'rimi. Shinaga qarash taxmin qilishdan ancha tezroq.

Bu tushuntirish ortida turgan jamoa — RisalDash, ESP32 / ESP8266 uchun ochiq kodli veb-dashboard kutubxonasi.

Baytni uzatamiz
hex 0x4A dec 74 bin 01001010 ascii 'J'