Що таке шина LIN

AvtoAd

04/09/2023
Що таке шина LIN

 

Шина LIN

Основні характеристики шини LIN

Приклад системи керування дверима з шиною LIN та без неї

Швидкість передачі даних

Електрична реалізація LIN

Підключення LIN трансівера до мікроконтролера

Архітектура мережі LIN

Структура кадру LIN

 

 

Шина LIN

LIN (Local Interconnect Network) шина – це система комунікації в автомобілях, призначена для управління менш вимогливими за швидкістю і надійністю пристроями, такими як вікна, дзеркала, сидіння та інші пристрої комфорту. LIN шина є альтернативою більш складним і дорогим CAN шинам, які використовуються для критичних систем, таких як гальма, керування двигуном тощо.

 

Основні характеристики шини LIN

  • Архітектура: Централізована система з одним майстром (master) і кількома слейвами (slave).
  • Фізичний рівень: Одножильна схема з можливістю з'єднання до 15 вузлів.
  • Напруга: Зазвичай 12V, як у більшості автомобільних систем.
  • Протокол: Спрощений у порівнянні з CAN, із вбудованим механізмом для виявлення та корекції помилок.
  • Застосування: Прості системи автомобільної електроніки, такі як управління світлом, дзеркалами, вікнами, сидіннями тощо.

 

Приклад системи керування дверима з шиною LIN та без неї:

Без LIN:

 

З шиною LIN:

 

Ще приклад, який використовують в автомобілях BMW, авто групи VAG, Mercedes та інших сучасних автомобілях, коли всі сервоприводи заслінок та цифрові датчики кліматичної системи підключені за допомогою шини LIN, а сам блок клімат контролю пов'язаний з автомобілем за допомогою CAN шини.

 

Дешевизна LIN обумовлена тим, що реалізація протоколу LIN повністю програмна і будується на базі звичайного UART (родич RS232, COM порт). Також LIN не вимагає застосування точних часозадающих ланцюгів - кварцових резонаторів і генераторів. Тому можна використовувати дешеві мікроконтролери.

 

Швидкість передачі даних

Швидкість передачі даних на шині LIN стандартна для пристроїв, побудованих на базі UART, зазвичай до 20 kbps.

Це не багато, але достатньо передачі даних від датчиків і керувати повільними механізмами.

 

Електрична реалізація LIN

Електрично інтерфейс LIN реалізований так само просто. У кожному вузлі лінія шини підтягнута до шини +12V. Передача здійснюється опусканням рівня шини рівня маси GND. Мікроконтролер підключається до шини LIN за допомогою спеціальної мікросхеми Трансівера, наприклад TJA1020 (TJA1021)

Електричний ланцюг шини LIN

Зовнішній вигляд мікросхеми TJA1020 від NXP

 

 

Підключення LIN трансівера до мікроконтролера

 

 

Архітектура мережі LIN

Особливістю шини LIN є те, що в мережі є два види вузлів: Master і Slave. 

Master – провідний,

Slave – підлеглий.

Master може опитувати Slave про його стан, будити його, надсилати йому команди. Обмін інформації на шині LIN відбувається у форматі обміну пакетами, і на перший погляд може здатися, що механізм ідентичний шині CAN, це не так. Пояснюємо чому:

Структура LIN пакету виглядає так:

 

Кадр LIN

 

Frame – Header – заголовок кадру, який відправляється у шину Майстром. Включає ID кадру

Frame – Response – дані, які відправляє Slave у відповідь на запит Master -а.

Вловіть різницю – у шині CAN усі вузли передають і ID кадру та дані. У шині LIN – заголовок пакета це завдання Майстер-вузла.

 

 

Структура кадру LIN

 

Поле Frame-Header складається з полів:

BREAK – Це сигнал шині про те, що майстер зараз буде говорити

Поле синхронізації - це просто байт = 0x55. При його передачі приймачі підлаштовують свою швидкість.

PID – це поле захищеного ідентифікатора. Надалі писатимемо просто – ідентифікатор.

Ідентифікатор може приймати значення від 0 до 59 (0x3B в HEX) для пакетів користувача. Також можливе використання спеціальних службових пакетів з ID 0x3C, 0x3D, 0x3E та 0x3F. Захищеність ідентифікатора полягає в наступному:

У структурі байта ID ми бачимо біти власне самого ідентифікатора з ID0 по ID5, а потім йдуть два контрольні біти P0 і P1, які розраховуються так:

P0 = ID0 ⊕ ID1 ⊕ ID2 ⊕ ID4
P1 = ¬ (ID1 ⊕ ID3 ⊕ ID4 ⊕ ID5)

Приклад:

ID = 0x00 PID = 0x80

ID = 0x0C PID = 0x4C

Якщо в PID контрольні біти розраховані неправильно, то пакет не буде оброблений стороною, що приймає.

Якщо ми будемо емулювати роботу якогось вузла Master, попередньо вивчивши дані, що ним надсилаються за допомогою LIN сніфера, то нам не доведеться замислюватися про розрахунок контрольних бітів ID, оскільки в пакетах які ми бачимо сніффером все вже пораховано до нас.

Після того як Slave прийняв Header майстра він відповідає полем Frame Response який складається з байтів даних у кількості від 1 до 8 та байта контрольної суми.

Контрольна сума (CRC) вважається як інвертована сума всіх байтів даних із перенесенням чи сума всіх байтів даних + значення захищеного ID . У першому випадку CRC називається класичною, у другому – розширеною. Варіант підрахунку контрольної суми визначається версією стандарту LIN-шини. У версіях 1. XX застосовується класичний алгоритм, у версіях 2. XX застосовується розширений.

Зверніть увагу на відсутність поля DLC, що відповідає за кількість байтів даних як у CAN шині. У шині LIN кількість байтів даних визначається на етапі написання ПЗ контролера. Тому процес обміну на шині LIN складніше аналізувати за допомогою сніфера - доводиться вводити спеціальний алгоритм поділу пакетів, який вгадує скільки байтів даних було в прийнятому пакеті.

 

На цій схемі ми бачимо, як один Майстер спілкується з двома вузлами Slave. Зверніть увагу на третій кадр, у ньому заголовок Header та тіло пакета Response передає Майстер – це важливий момент, такі кадри використовуються для діагностики та конфігурування вузлів Slave.

На осцилограмі обмін одного Master та одного Slave виглядає так:

Тут ми бачимо запит майстра, що складається з полів Break - S - ID = 0x03, потім слідує відповідь вузла Slave що складається з чотирьох байт і контрольної суми рівної 0x3F.

Якщо ми відключимо вузол Slave від шини LIN, то побачимо вже таку осцилограму:

 

Також у протоколі шини LIN передбачені й спеціальні службові пакети службовці для діагностики шини, пробудження пристроїв та інших функцій. У цьому випадку Master може передавати як Frame Header, так і Frame Response послідовно, тоді пакет Master може мати такий вигляд:

ID = 0x3C DATA : FF FF FF FF FF FF FF FF

Обмін діагностичними повідомленнями на шині LIN виглядає так:

За допомогою довгих пакетів Master може конфігурувати та програмувати вузли Slave. Якщо програмування чи конфігурування вузла LIN необхідно понад 8 байтів, то потік даних сегментується і пересилається частинами. Механіка передачі даних визначається спеціальним транспортним протоколом, який працює поверх фізики шини LIN, про нього ми напишемо в наступних статтях.

 

 

Левова частина матеріалу з цього сайту.