Что такое шина 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, о нем мы напишем в следующих статьях.

 

 

Львиная часть материала с этого сайта.