Протоколи зв'язку в електроніці й автомобілі: UART, I²C, SPI, RS-485, D-Bus, CAN, LIN — огляд
Зміст статті 7
Огляд протоколів, якими спілкуються мікросхеми, плати й блоки — від двох мікросхем на одній платі до десятків блоків в автомобілі. Для кожного:
- скільки дротів, яка швидкість і відстань, де трапляється;
- як упізнати його на платі тестером, нічого не вмикаючи наосліп;
- чим його послухати.
Окремо — шини побутової техніки (зокрема D-Bus у Bosch і Siemens) і автомобільні: CAN, LIN, K-Line, FlexRay, MOST, Ethernet і роз'єм OBD-II.
чернетка — огляд, доповнюємо
Зведена таблиця
| Протокол | Дроти (без землі) | Швидкість, типово | Відстань | Де трапляється |
|---|---|---|---|---|
| UART | 2: TX і RX | 9600 – 115 200 біт/с | десятки см | налагоджувальні виводи, модулі GPS, Bluetooth, GSM |
| RS-232 | 2 і більше | до 115 200 біт/с | до ~15 м | старі ПК, ДБЖ, верстати, промислове обладнання |
| RS-485 | 2: пара A і B | 9600 біт/с – 10 Мбіт/с | до ~1200 м | лічильники, промислова автоматика, Modbus |
| I²C | 2: SDA і SCL | 100 / 400 кбіт/с, 1 Мбіт/с | у межах плати | EEPROM, датчики, годинники, дисплеї |
| SPI | 4: SCK, MOSI, MISO, CS | одиниці – десятки МГц | у межах плати | флеш-пам'ять, АЦП, дисплеї, SD-картки |
| 1-Wire | 1 | ~16 кбіт/с | до десятків м | датчики температури DS18B20, ключі-таблетки |
| D-Bus (BSH) | 1 дріт даних + живлення | 9600 біт/с | у межах приладу | посудомийки, пральні машини Bosch, Siemens |
| CAN | 2: пара CAN_H і CAN_L | 125 – 500 кбіт/с, до 1 Мбіт/с | десятки м | автомобілі, вантажівки, промислові контролери |
| CAN FD | 2: та сама пара | дані — до кількох Мбіт/с | десятки м | новіші автомобілі |
| LIN | 1 | до 20 кбіт/с | до ~40 м | склопідйомники, дзеркала, датчики дощу в авто |
| K-Line | 1 | 10,4 кбіт/с | у межах авто | діагностика старших автомобілів |
| FlexRay | 2 на канал (до 2 каналів) | 10 Мбіт/с | у межах авто | ходова й гальма в дорожчих авто |
| MOST | оптоволокно | 25 – 150 Мбіт/с | у межах авто | мультимедіа в старших авто преміум-класу |
| Automotive Ethernet | 1 пара | 100 Мбіт/с – 1 Гбіт/с | ~15 м | камери, мультимедіа, діагностика новіших авто |
Цифри типові, а не граничні: кожен стандарт має варіанти, і швидкість завжди залежить від довжини дроту.
Як вони різняться між собою
Три питання майже повністю описують будь-яку шину:
- Один сигнал на дріт чи пара дротів. Несиметричні сигнали (UART, I²C, SPI, LIN) рахують напругу відносно спільної землі — це просто, але чутливо до завад, тож добре працює в межах плати чи приладу. Диференційні (RS-485, CAN, FlexRay, Ethernet) передають сигнал різницею напруг на парі скручених дротів: завада наводиться на обидва однаково й віднімається. Тому вони тягнуться на десятки й сотні метрів.
- Двоє чи багато. UART і RS-232 з'єднують рівно два пристрої. I²C, RS-485, CAN, LIN, D-Bus — шини: на одних дротах висить багато вузлів, і кожне повідомлення має адресу або ідентифікатор.
- Хто говорить. В I²C, SPI і LIN розмову завжди починає ведучий. У CAN говорити може будь-хто, а коли почали двоє одночасно, перемагає повідомлення з важливішим ідентифікатором — і без втрати даних. У FlexRay кожному вузлу заздалегідь виділено свій проміжок часу, тож час доставки завжди той самий.
Протоколи в межах плати й приладу
UART — послідовний порт
Найпростіший і найпоширеніший. Два сигнальні дроти — передача (TX) і прийом (RX), — з'єднуються навхрест: TX одного до RX другого. Окремого тактового сигналу немає, тому обидва боки мають заздалегідь домовитися про швидкість: 9600, 19 200, 115 200 біт/с. У спокої лінія тримає високий рівень — 3,3 чи 5 В.
На платах UART найчастіше трапляється як налагоджувальний вихід: три-чотири площадки поруч із підписами TX, RX, GND. Послухати — USB-перехідником на CH340, CP2102 чи FT232. ⚠ Рівень перехідника має збігатися з рівнем плати: 5 В на вході мікроконтролера на 3,3 В його може пошкодити.
RS-232 і RS-485
Це той самий UART, але з іншими рівнями напруги. RS-232 — старий COM-порт комп'ютера: ±3…±15 В, до приблизно 15 м. Перетворюється з UART мікросхемою на зразок MAX232 чи MAX3232. RS-485 — диференційна пара A і B: до приблизно 1200 м і десятків пристроїв на одній парі. Трапляється в лічильниках електроенергії, сонячних інверторах, промисловій автоматиці; найчастіше поверх нього працює протокол Modbus RTU. На кінцях довгої лінії ставлять резистори 120 Ом.
I²C
Два дроти: дані (SDA) і такт (SCL). Обидва підтягнуто резисторами до живлення, а пристрої лише притягують лінію до землі — тому на одних двох дротах уживаються десятки мікросхем. Кожна має свою адресу (зазвичай 7 біт). Швидкість — 100 або 400 кбіт/с, рідше 1 Мбіт/с. Типові мешканці: EEPROM на зразок 24C08, датчики температури й тиску, годинники реального часу, невеликі дисплеї.
Як упізнати тестером: дві лінії, кожна з'єднана резистором кілька кілоом (часто 4,7 кОм, маркування 472) з живленням. Саме так ми перевірили виводи EEPROM на платі посудомийки (перша частина).
SPI
Чотири дроти: такт (SCK), дані від ведучого (MOSI), дані до ведучого (MISO) і вибір пристрою (CS) — по одному на кожен пристрій. Адрес немає: з ким говорить ведучий, вирішує CS. Швидкість — від одиниць до десятків мегагерц, тому через SPI підключають флеш-пам'ять, швидкі АЦП, дисплеї, SD-картки. Мікросхеми флеш-пам'яті на 8 ніжках (25Q…) — майже завжди SPI.
1-Wire
Один дріт даних плюс земля; пристрій може навіть живитися від того самого дроту. Швидкість невисока, зате на один дріт можна повісити багато датчиків — у кожного свій заводський 64-бітний номер. Найвідоміший приклад — датчик температури DS18B20.
Шини побутової техніки: D-Bus у Bosch і Siemens
Великі виробники побутової техніки мають власні внутрішні шини; описані вони зазвичай не в документації, а в роботах ентузіастів. Найкраще розібрана — D-Bus концерну BSH (Bosch, Siemens, Neff, Gaggenau), за проєктом hn/bsh-home-appliances:
| Що | Як |
|---|---|
| дроти | три: земля, живлення вузлів, один дріт даних |
| хто на шині | плата керування, панель із кнопками, модулі Wi-Fi, проєктор часу на підлогу |
| обмін | усі вузли по черзі передають на один дріт, як UART: 9600 біт/с, 8N1 |
| повідомлення | довжина, адреса вузла, команда, дані, контрольна сума CRC16 |
| підтвердження | на адресне повідомлення отримувач одразу відповідає одним байтом |
⚠ Поруч із дротом даних (рівні 5 В) на тому самому роз\'ємі йде живлення вузлів: близько 13,5 В у посудомийках і 9 В у пральних машинах. Переплутаний контакт спалить перехідник на 3,3 В — спершу тестер.
По суті це UART, у якого передача й прийом зведені на один спільний дріт, плюс адреси й контрольна сума — тобто найпростіша шина на кілька вузлів. Як ми знайшли D-Bus у прошивці плати посудомийки — у третій частині статті про плату.
Не плутати з D-Bus у Linux — там так зветься обмін повідомленнями між програмами на одному комп'ютері.
Протоколи в автомобілі
У сучасному автомобілі — десятки електронних блоків: двигун, коробка, гальма, подушки, клімат, двері, мультимедіа. Одна шина на всіх не годиться: блокам гальм потрібні швидкість і передбачуваний час доставки, склопідйомнику досить кількох байтів на секунду, а камері — сотні мегабіт. Тому в машині кілька шин різних типів, а з'єднує їх центральний блок-шлюз.
CAN
Головна шина автомобіля з 1990-х. Диференційна пара CAN_H і CAN_L, зазвичай скручена. Повідомлення не має адреси отримувача — лише ідентифікатор того, що в ньому (11 або 29 біт), і до 8 байтів даних; кожен блок сам вирішує, які повідомлення йому цікаві. Що менший ідентифікатор, то важливіше повідомлення: при одночасному початку передачі воно перемагає без втрати даних.
| Що | Значення |
|---|---|
| швидкість | у двигуні й ходовій — зазвичай 500 кбіт/с; у салоні — 100–125 кбіт/с |
| у спокої | CAN_H і CAN_L — обидва близько 2,5 В |
| при передачі «0» | CAN_H ≈ 3,5 В, CAN_L ≈ 1,5 В |
| кінці шини | по резистору 120 Ом |
| на вимкненій машині | між CAN_H і CAN_L тестер показує ≈ 60 Ом (два по 120 паралельно) |
CAN FD — новіша версія: до 64 байтів у повідомленні, а дані передаються швидше, ніж заголовок, — до кількох мегабіт за секунду. Дроти ті самі.
LIN
Дешева однопровідна шина для простих вузлів: склопідйомників, дзеркал, датчиків дощу й світла, кнопок на кермі. Один ведучий блок опитує до 15 ведених; швидкість — до 20 кбіт/с. У спокої лінія тримає майже напругу акумулятора (~12 В). По суті це той самий UART, але з рівнями 12 В, тож ⚠ USB-перехідник UART напряму до LIN не під'єднувати — потрібна мікросхема-трансивер (TJA1020/TJA1021 тощо).
K-Line
Однопровідна діагностична лінія старших автомобілів (стандарти ISO 9141 і ISO 14230/KWP2000): 10,4 кбіт/с, рівні 12 В. У новіших авто діагностику перевели на CAN, але K-Line ще трапляється в машинах 2000-х і в мотоциклах.
FlexRay
Швидша й передбачуваніша за CAN шина для систем, де важливий гарантований час доставки: активна підвіска, гальма, кермо. До 10 Мбіт/с на канал, два канали для резерву, кожному блоку виділено свій проміжок часу. Трапляється в дорожчих авто, зокрема BMW й Audi.
MOST
Оптична шина-кільце для мультимедіа: звук, навігація, CD-чейнджер, підсилювач. Була поширена в преміальних авто 2000-х і 2010-х; тепер її витісняє Ethernet. Ознака на блоці — оптичний роз'єм із двома світловодами.
Automotive Ethernet
Звичайний Ethernet, але по одній скрученій парі (стандарти 100BASE-T1 і 1000BASE-T1) замість двох-чотирьох. Іде до камер, мультимедіа, систем допомоги водієві. Окремо від нього швидка діагностика й прошивка блоків у новіших машинах ідуть звичайним Ethernet (100BASE-TX) через роз'єм OBD — наприклад, у BMW F-серії.
Роз'єм OBD-II
Діагностичний роз'єм на 16 контактів під кермом. Обов'язковий у бензинових авто в ЄС з 2001 року, у дизельних — з 2004-го; у США — з 1996-го. Розкладка основних контактів однакова в усіх авто:
| Контакт | Що |
|---|---|
| 4 | земля кузова |
| 5 | сигнальна земля |
| 6 | CAN_H |
| 14 | CAN_L |
| 7 | K-Line |
| 15 | L-Line (допоміжна лінія старих протоколів) |
| 2, 10 | J1850 (старі американські авто) |
| 16 | +12 В від акумулятора |
Решту контактів виробник використовує на свій розсуд — для додаткових шин CAN, Ethernet чи сервісних ліній.
Як упізнати шину тестером
Перш ніж під'єднувати будь-що, варто з'ясувати, що за лінія перед вами. Усе нижче міряємо відносно землі, а опір — на вимкненому пристрої.
| Що бачить тестер | Найімовірніше |
|---|---|
| одна лінія, у спокої 3,3 або 5 В, під час обміну напруга «тремтить» | TX у UART |
| дві лінії, кожна резистором кілька кОм до живлення | I²C |
| пара, обидві лінії у спокої однаково близько 2,5 В | CAN |
| пара, у спокої A і B різні щонайменше на 0,2 В | RS-485 |
| одна лінія близько 12 В у машині, до блоку дверей чи дзеркала | LIN (або K-Line, якщо це діагностична лінія) |
| вихід ПК чи старого приладу у спокої від −5 до −12 В відносно землі | RS-232 |
Опір між лініями пари — 60 або 120 Ом — буває і в CAN, і в RS-485: залежить від того, скільки кінцевих резисторів на ділянці. Тому розрізняє їх саме напруга.
⚠ Висока напруга на лінії — 12 В у LIN і K-Line, до ±15 В у RS-232, 9–13,5 В на живленні D-Bus поруч із даними — пошкодить вхід мікроконтролера чи перехідника на 3,3 В. Спершу тестер, потім під'єднання.
Чим послухати
| Інструмент | Що вміє |
|---|---|
| USB-перехідник UART (CH340, CP2102, FT232) | UART; з трансивером — RS-485, LIN, D-Bus |
| логічний аналізатор на 8 каналів (~200 грн) | бачить будь-яку низьковольтну лінію; програма сама розбирає UART, I²C, SPI, CAN |
| адаптер USB-CAN або плата на MCP2515 | слухати й надсилати повідомлення CAN |
| діагностичний адаптер ELM327 | діагностика через OBD-II: CAN, K-Line, J1850 |
| ESP32 з трансивером | постійне прослуховування й власна логіка: CAN (вбудований контролер), LIN, D-Bus |
Почати майже завжди варто з логічного аналізатора: він нічого не надсилає, лише слухає, тож ризику зіпсувати обмін немає.
Журнал змін статті
- 2026-11-11 — перша чернетка: зведена таблиця, відмінності, протоколи плати й приладу, D-Bus, автомобільні шини, OBD-II, як упізнати тестером, чим послухати.