lin bus что это

Протокол LIN. Полный обзор, описание, формат кадра.

lin bus что это

lin bus что это

Совсем недавно мы разбирали протокол CAN, и вот сегодня продолжаем двигаться по автомобильным стандартам! На очереди LIN, который также свое основное применение нашел в автомобильной промышленности, да и, в общем-то, для этого и был изначально создан.

Чуть забегу вперед — этому протоколу будет посвящено целых три статьи. Сегодня будет исключительно теория, максимально подробно и наглядно. Во второй части мы будем работать с LIN на практике при помощи STM32 с использованием аппаратных средств микроконтроллера. А вот в третьей части мы с нуля напишем свой собственный драйвер для LIN на базе UART.

Итак, протокол LIN был создан в конце 90-х годов (первая версия спецификации относится к 1999 году) группой известных компаний, в основном, автопроизводителей. Среди них:

В целом архитектура шины выглядит следующим образом:

lin bus что это

В чем же смысл, спросите вы, ведь есть же CAN? Так вот, использование LIN не исключает использование CAN, а скорее дополняет. LIN является однопроводной шиной, более дешевой, чем CAN, и используется для связи менее критичных для безопасности и для работы автомобиля узлов между собой. То есть основная связь по-прежнему обеспечивается протоколом CAN, а менее важные блоки и датчики уже подключаются по LIN:

lin bus что это

Низкая стоимость обеспечивается в том числе тем, что для реализации протокола обычно используется обычный UART микроконтроллера. Все остальное, необходимое для работы шины, реализуется исключительно в ПО. Но это с программной точки зрения. Физически же все-таки требуется использование дополнительной микросхемы трансивера. И самый популярный кандидат бесспорно — TJA1021:

lin bus что это

Скорость передачи данных также вполне стандартная для UART’а: от 1 — до 20 кБод, длина линии может достигать 40 м. Давайте теперь перейдем к самому интересному, к структуре пакета в LIN!

Структура пакета протокола LIN.

Каждый пакет состоит из заголовка (header) и непосредственно данных (data):

lin bus что это

Причем важной особенностью является то, что на шине присутствуют два типа устройств — LIN Master (ведущий) и LIN Slave (подчиненный). При этом инициировать передачу данных может только Master. То есть Slave-устройство не может само по себе выслать в сеть данные, оно должно ожидать запроса от ведущего и никак иначе 🙂

Таким образом, именно Master отправляет в шину заголовки пакетов. В зависимости от определенного бита заголовка (это мы разберем чуть позже) подчиненные устройства понимают, что им требуется сделать:

lin bus что это

Как видите, иерархия очень строгая!

С организацией обмена данными разобрались, теперь можно углубиться непосредственно в структуру уже упомянутых частей LIN-фреймов. Заголовок пакета состоит из нескольких байт:

lin bus что это

lin bus что это

Старт и стоп-биты здесь играют ту же роль, что и при передаче данных по UART, и используются для каждого из передаваемых по LIN байт.

Из битов ID0…ID5 складывается непосредственно значение идентификатора. А поскольку под это выделено только 6 битов, то значит диапазон значений идентификатора составляет от 0 до 0x3F (0b111111). При этом значения от 0x3C до 0x3F являются служебными. Кроме того, в значении идентификатора содержится информация о количестве передаваемых в Frame Data байт:

ИдентификаторКол-во байт
0x00-0x1F2
0x20-0x2F4
0x30-0x3F8

Итак, тут у нас остаются еще два бита четности, для них формула выглядит следующим образом:

И на этом все! Заголовок пакета сформирован.

Поле данных в свою очередь состоит из непосредственно байт данных (от 1-го до 8-ми байт) и контрольной суммы (1 байт):

lin bus что это

Для расчета контрольной суммы есть два варианта:

Давайте рассмотрим пример расчета классической контрольной суммы. Пусть байты данных равны: 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37. Суммируем:

Вычитаем из полученного значения 0xFF:

И инвертируем, в итоге получаем:

Для выбранных нами байт данных контрольная сумма равна 0x62.

В практической статье по протоколу LIN мы обязательно посмотрим, как все это будет выглядеть на деле, а пока на этом заканчиваем, до скорой встречи!

Источник

Что такое шина LIN

Шина LIN – это простая последовательная однопроводная шина для автомобильных применений и используется в тех случаях когда применение CAN шины – дорого. По шине LIN управляются различные приводы (корректоры фар, заслонки климатической системы, приводы центрального замка), а так же собирается информация с простых датчиков (датчики дождя, света, температуры).

Для изучения шины LIN Вы можете использовать наш адаптер CAN-Hacker 3.0 с дополнительной опцией LIN анализатора.
А так же интерфейс CAN-Hacker CH-P

Пример системы управления дверью с шиной LIN и без нее:

lin bus что это

Еще пример, в автомобиле Porsche Macan 2015 г. все привода и датчики климатической системы подключены к шине LIN а сам блок климат контроля связан с автомобилем при помощи CAN шины.

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

Скорость передачи данных

Скорость передачи данных на шине LIN стандартная для устройств построенных на базе UART: 2400; 9600; 10400; 19200; 20000 Бод. Это немного но достаточно для передачи данных от датчиков и для управления медленными механизмами.

Электрическая реализация LIN

Электрически интерфейс LIN реализован так же просто. В каждом узле линия шины подтянута к шине питания +12V. Передача осуществляется опусканием уровня шины до уровня массы GND. Микроконтроллер подключается к шине LIN при помощи специальной микросхемы Трансивера, например TJA1021

lin bus что это

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

lin bus что это

Архитектура сети LIN

lin bus что это

Особенностью шины LIN является то, что в сети присутствует два вида узлов: Master и Slave, Master – ведущий, Slave – подчиненный.

Master может опрашивать Slave о его состоянии, будить его, отправлять ему команды. Обмен информации на шине LIN происходит в формате обмена пакетами, и на первый взгляд может показаться что механизм идентичен шине CAN, это не так. Объясняем почему:

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

lin bus что это

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

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

lin bus что это

Поле Frame-Header состоит из полей:

BREAK – Это сигнал шине о том что мастер сейчас будет говорить

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

PID – это поле защищенного идентификатора. В дальнейшем будем писать просто – идентификатор.

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

lin bus что это

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

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

ID = 0x0C PID = 0x4C

Если в PID контрольные биты рассчитаны неверно то пакет не будет обработан принимающей стороной.

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

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

Обратите внимание на отсутствие поля DLC отвечающего за количество байтов данных как в CAN шине. В шине LIN количество байтов данных определяется на этапе написания ПО контроллера. Поэтому процесс обмена на шине LIN сложнее анализировать при помощи сниффера – приходится вводить специальный алгоритм разделения пакетов, который угадывает сколько байтов данных было в принятом пакете.

lin bus что это

На этой схеме мы видим как один Мастер общается с двумя узлами Slave. Обратите внимание на третий кадр, в нем заголовок Header и тело пакета Response передает Мастер – это важный момент, такие кадры используются для диагностики и конфигурирования Slave узлов.

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

lin bus что это

Здесь мы видим запрос мастера состоящий из полей Break – S – затем следует ответ узла Slave состоящий из четырех байт и контрольной суммы равной 0x3F.

Если мы отключим узел Slave от шины LIN, то увидим уже такую осциллограмму:

lin bus что это

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

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

lin bus что это

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

Видео пример работы с шиной LIN и адаптером CAN-Hacker 3.2

Источник

Автомобильный стандарт LIN и микроконтроллеры для его реализации

Протоколы CAN и LIN: особенности и различия

Особенности LIN

В основу LIN положена концепция «single-master/multi-slave», обеспечивающая деш╦вое исполнение, основанное на обычных последовательных интерфейсах UART/SCI; как программная, так и аппаратная возможность реализации, самосинхронизирующаяся тактирующая система, работающая от RC-генератора и не требующая кварцевого резонатора для Slave-устройств; гарантированное время ожидания для передаваемого сигнала; деш╦вое однопроводное исполнение и скорость до 20 Кбит/с. Возможен перевод шины в режим микропотребления «Sleep», когда она выключается с целью уменьшения потребляемого тока, но любой узел на шине при необходимости может включить е╦ вновь. Основное отличие протокола LIN от шины CAN заключается в низкой стоимости за сч╦т пониженной эффективности. Структура шины представляет собой нечто среднее между I2C и RS232. Шина подтягивается вверх к источнику питания через резистор в каждом узле и вниз через открытый коллекторный переход при╦мопередатчика, как в I2C. Но вместо стробирующей линии, каждый передаваемый байт обрамляется стартовым и стоповым битами и переда╦тся асинхронно, как в RS-232.

lin bus что это

lin bus что это

lin bus что это

Протокол LIN подразумевает использование RC-цепочки в качестве задающего генератора микроконтроллеров исполнителей. Поэтому каждое сообщение содержит поле синхронизации и каждый исполнитель обязан подстроить по этому полю частоту своего при╦мопередатчика. Для того, чтобы определить время передачи одного бита, необходимо засечь время четыр╦х периодов стартовой посылки, разделить на 8 и округлить (рис. 4).

lin bus что это

В идентификационном поле сообщается информация о том, что же, собственно, последует дальше. Поле идентификации (рис. 5) разделено на три части: четыре бита (0-3) содержат адрес исполнителя, с которым будет производиться обмен информацией, два бита (4-5) указывают количество передаваемых байт и последние два бита (6-7) используются для контроля ч╦тности. Четыре бита адреса могут выбирать одного из 16-ти исполнителей, каждый из них может отвечать 2-мя, 4-мя, или 8-ю байтами, таким образом получаем 64 типа различных сообщений на шине. Спецификация LIN не устанавливает каких-либо ж╦стких рамок на передаваемую информацию (за исключением команды «Sleep»), оставляя свободу творчества для программистов.

lin bus что это

Задатчик может послать команду всем исполнителям перейти в микромощный режим (Sleep), выставив в поле идентификации байт 0х80). Исполнители, приняв его, освобождают шину и переходят в «спящий» режим с выходом из него по изменению состояния на шине. Любой исполнитель может активизировать шину, передав байт 0х80. После этого все узлы ожидают дальнейших опросов задатчика в обычном режиме.

Программная реализация

Протокол LIN можно организовать программно на любом микроконтроллере, выпускаемом фирмой Microchip (рис. 6).

lin bus что это

Очень удобно для этих целей применять малогабаритные и деш╦вые PIC16C508 и PIC16C505. На сайте компании www.microchip.com находится пример такой конструкции и привед╦н исходный текст программы микроконтроллера (Application Note AN729).

Аппаратная реализация

Для удобства проектирования встроенных систем управления для автомобильной электроники, Microchip Technology Inc. представила семейство из двух микроконтроллеров PIC16C432 и PIC16C433 с аппаратно-встроенным при╦мопередатчиком автомобильного протокола обмена данных LIN. Эти микроконтроллеры содержат на кристалле аппаратный при╦мопередатчик, и его не прид╦тся создавать на отдельных элементах.

При классической архитектуре, PIC16C432/433 имеет 2К╢14бит слов однократно программируемой программной памяти и 128 байт оперативной памяти данных. Имея на одном кристалле микроконтроллер и при╦мопередатчик LIN в корпусе с 18 и 20 выводами, можно до предела сократить количество внешних навесных деталей, повысив при этом над╦жность устройства в целом. А наличие 4-канальных 8-бит АЦП позволяет обрабатывать аналоговые сигналы.

Другими встроенными модулями являются 8-разрядный сч╦тчик/таймер реального времени с 8-разрядным предварительным делителем, выход из «спящего» режима по изменению сигнала на шине и встроенный при╦мопередатчик LIN, для работы которого необходимо лишь наличие напряжения питания на шине 12 В. Специальные возможности микроконтроллеров поддерживают внутрисхемное программирование (ICSP TM ), power-on reset (POR), power-up timer (PWRT), oscillator start-up timer (OST), режим пониженного энергопотребления «Sleep», возможность выбора типа задающего генератора и сторожевой таймер (WDT) с отдельным RC-генератором для повышения над╦жности. PIC16C432 также имеет функцию brown-out reset (BOR).

Средства разработки и отладки

Компания Microchip предлагает полный программно-аппаратный комплект для разработки систем на базе микроконтроллеров и протокола LIN, призванный уменьшить время, необходимое для разработки, повысить интенсивность труда и таким образом снизить затраты на разработку в целом и сократить время выхода готового изделия на рынок. Вс╦ программное обеспечение созда╦тся при помощи бесплатной среды MPLABд, доступной на сайте компании. Предлагается стартовый комплект, содержащий демонстрационную плату с узлами-исполнителями, и устройство-задатчик, которое может обмениваться данными с исполнителями и выдавать принимаемую информацию через последовательный порт RS-232 на персональный компьютер. Комплект состоит из девяти различных плат, соединяющихся с двумя раздельными панелями:

В комплект также входит вс╦ необходимое программное обеспечение, в том числе исходные тексты программ для устройств Master/Slave на ассемблере.

Источник

Lin bus что это

LIN (англ. Local Interconnect Network — локальная сеть) — стандарт промышленной сети, разработанный консорциумом европейских автопроизводителей и других известных компаний, включая Audi AG, BMW AG, Daimler Chrysler AG, Motorola Inc., Volcano Communications Technologies AB, Volkswagen AG и VolvoCar Corporation.

Протокол LIN предназначен для создания дешёвых локальных сетей обмена данными на коротких расстояниях. Он служит для передачи входных воздействий, состояний переключателей на панелях управления и так далее, а также ответных действий различных устройств, соединённых в одну систему через LIN, происходящих в так называемом «человеческом» временном диапазоне (порядка сотен миллисекунд).

Основные задачи, возлагаемые на LIN консорциумом европейских автомобильных производителей — объединение автомобильных подсистем и узлов (таких как дверные замки, стеклоочистители, стеклоподъёмники, управление магнитолой и климат-контролем, электролюк и так далее) в единую электронную систему. LIN-протокол утверждён Европейским Автомобильным Консорциумом как дешёвое дополнение к сверхнадёжному протоколу CAN.

LIN и CAN дополняют друг друга и позволяют объединить все электронные автомобильные приборы в единую многофункциональную бортовую сеть. Причём область применения CAN — участки, где требуется сверхнадёжность и скорость; область же применения LIN — объединение дешёвых узлов, работающих с малыми скоростями передачи информации на коротких дистанциях и сохраняющих при этом универсальность, многофункциональность, а также простоту разработки и отладки. Стандарт LIN включает технические требования на протокол и на среду передачи данных. Как последовательный протокол связи, LIN эффективно поддерживает управление электронными узлами в автомобильных системах с шиной класса «А» (двунаправленный полудуплексный), что подразумевает наличие в системе одного главного (англ. master ) и нескольких подчинённых (англ. slave ) узлов.

Источник

Русские Блоги

Обучение по шине LIN

Введение в LIN

Как недорогая вспомогательная шина, шина LIN широко используется в автомобильной электронике.Шина LIN используется в низкоскоростных приложениях, таких как двери, окна, освещение и центральные замки. Фактически, CAN было бы проще реализовать эти функции в транспортных средствах на новой энергии, но она ограничена слишком большим количеством аксессуаров в автомобиле. При изготовлении она должна быть совместима с поставщиками различных аксессуаров, включая низкоскоростную поставку аксессуаров. использование LIN из соображений стоимости. Сейчас LIN все еще широко используется, надо учиться.

Особенности LIN

Разница между LIN и CAN

Однопроводная передача, низкая скорость передачи

Шина LIN физически представляет собой шину с открытым стоком с подтягивающим коллектором 12 В, и несколько узлов могут быть подключены параллельно к главному узлу. Он аналогичен линии SDA IIC, но не требует линии синхронизации SCL.LIN использует скорость передачи данных, согласованную между хостом и подчиненным устройством, аналогично UART. В отличие от последовательного порта, он синхронизируется через поле синхронизации, и передача более надежна. По сравнению со структурой CAN с витой парой, помехоустойчивость линии LIN относительно мала.Чтобы улучшить характеристики EMC, скорость связи ограничена до 20 Кбит / с.

Структура одного ведущего и нескольких ведомых

Облегченный стек протоколов обработки

Топология сети

lin bus что это

Шина LIN представляет собой звездообразную структуру с одним ведущим и несколькими ведомыми устройствами.Шина LIN обычно не существует одна, и узел часто подключен к сети верхнего уровня (например, CAN).

Узел не обязательно соответствует ЭБУ, поскольку ЭБУ может предоставлять несколько интерфейсов LIN.

Протокол LIN

Правила передачи

lin bus что это

Рама в основном содержитЗаголовок кадрас участиемответДве части

Общая конструкция каркаса

lin bus что это

Заголовок кадра включаетИнтервал синхронизацииСинхронизировать сегментс участиемЗащищенный сегмент идентификатора (PID), Отправлено хост-узлом

Ответ включаетСегмент данныхс участиемСегмент контрольной суммы, Отправлено подчиненным узлом

0 Доминирующий уровень, 1 Рецессивный уровень

Интервал синхронизации

lin bus что это

Интервал синхронизации состоит изИнтервал синхронизациис участиемИнтервал синхронизациисочинение

Синхронизировать сегмент

lin bus что это

Байт-поле: стандартный формат передачи данных UART

Поле байта включает 1 стартовый бит (доминантный) + 8 бит данных + 1 стоповый бит (рецессивный).

Защищенный сегмент идентификатора (PID)

lin bus что это

Защищенный сегмент идентификатора состоит из6-битный идентификатор кадрас участием2 бита четностисочинение

Диапазон идентификаторов кадров: 0x00

Здесь, поскольку данные отправляются первыми, отправляется LSB, поэтому первым отправляется P1 бита четности. При отправке бит над идентификатором кадра занят 2 битами четности, поэтому идентификатор эквивалентен младшим 6 битам весь кадр вместо старших 6 бит

Формула проверки выглядит следующим образом, где «represents» представляет операцию «исключающее ИЛИ», а «¬» представляет операцию «отрицание».

Из формулы видно, что PID не будет иметь все 0 или все 1. Следовательно, если подчиненный узел получает «0xFF» или «0x00», это может быть расценено как ошибка передачи.

Тип кадра

lin bus что это

Сегмент данных

lin bus что это

Данные, отправляемые узлом, находятся в сегменте данных, старшие 8 байтов, младшие DATA1 отправляются первыми, а отправка увеличивается последовательно.

Кадр данных LIN может передавать до 8 байтов. Согласно LUN 2.x, количество байтов, которое может передать LIN, может составлять 2, 4, 8 вместо любого числа в пределах 1-8. Вообще говоря, в автомобиле выбирается одинаковое количество байтов, чаще всего используется 8 байтов на кадр.

Сегмент данных содержит два типа данных,сигналилиДиагностическое сообщение

Когда тип идентификатора кадра представляет собой кадр, несущий сигнал, сегмент данных хранит сигнал, а идентификатор кадра соответствует одному или нескольким сигналам.

Если тип идентификатора кадра является диагностическим, в сегменте данных хранятся диагностические сообщения.

Сегмент контрольной суммы

lin bus что это

Раздел контрольной суммы предназначен для проверки содержимого, передаваемого во фрейме.

Контрольная сумма делится наСтандартная контрольная суммас участиемРасширенная контрольная сумма

Независимо от того, используется ли стандартная контрольная сумма или расширенная контрольная сумма, управляет хост-узел, а публикующий узел и каждый слушающий узел определяют, какую контрольную сумму использовать в соответствии с идентификатором кадра.

Метод проверки состоит в том, чтобы добавить каждый байт объекта проверки с помощью двоичного сложения (если результат больше или равен 256, вычесть 255), побитно инвертировать окончательную сумму и использовать результат в качестве контрольной суммы отправки. В соответствии с типом контрольной суммы получатель выполняет то же двоичное сложение с переносом полученных данных, и окончательная сумма не инвертируется, и добавляет сумму к полученной контрольной сумме. Если результат равен 0xFF, то контрольная сумма Нет ошибок, это в определенной степени гарантирует правильность передачи данных.

пример

Используя стандартную контрольную сумму, Data1 = 0x4A, Data2 = 0x55, Data3 = 0x93, Data4 = 0xE5, метод расчета показан в таблице 3.3:
lin bus что это

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *