Lin bus в магнитоле что это
LIN -шина, это однопроводная цифровая шина для управления по одному проводу группой разнообразных исполнительных устройств, широко применяемая в современных автомобилях. Например двигателями заслонок климата, корректорами фар, замками и стеклоподъемниками дверей и т.п. Конкретно у меня сейчас стоит задача заставить управлять шаговыми двигателями корректора фар. Шаговые двигатели управляются драйвером-контроллером AMIS-30621 Моя задача сделать контроллер, который бы умел контролировать и управлять шаговыми моторчиками корректора фар. А чтоб сделать контроллер, необходимо изучить сам протокол данных LIN и конкретно сам даташит драйвера.
Протокол LIN достаточно не сложный, не быстрый, но при этом надежный и в общем мне очень понравился. В даташитах все подробно описано, я лишь пробегусь вкратце. Если кратко, то цифровая посылка LIN контроллера состоит из этого:
Sync Break — передача данных всегда начинается с притягиванию к нулю шины не менее чем на 13 тактов. Увидев эту притяжку, все устройства на шине оживают, и понимают, что сейчас пойдет что то интересное и начинают ждать. А далее следует:
Sync Field — сигнал синхронизации. Все устройства на шине обязаны подстроится под этот сигнал и подстроить свои тактовые сигналы.
PID Field — служебный байт, который содержит адрес конкретного устройства на шине, последующую длину данных байт и два бита контроля ошибок
Data — передаваемые данные, до восьми байт
Checksum — контрольная сумма
Общее описание стало понятно, пора было собрать макетную плату контроллера шины.
За основу взят микроконтроллер ATTiny13 и транслятор-приемник шины LIN TJA1020 Регулятор положения сделан на обычном энкодере. Вот получилась такая схема:
Далее пошло изучение даташита контроллера шагового мотора. AMIS-30621 это контроллер последнего поколения, который включает в себя все, что можно. Он имеет ЦАП, контроль тока, контроль температуры, напряжения, режим разгона-торможения, настройку силы тока и еще кучу настраиваемых параметров. Достаточно ему подать команду, насколько нужно нашагать, остальное полностью он делает сам. Очень умный драйвер короче. Даташит немного замудреный, много неясностей было при прочтении, но в итоге удалось оживить этого монстра, читать с него данные и управлять им. Вот пример из анализатора:
А вот пример из кода:
Сначала нужно считать данные состояния, это обязательное условие из даташита:
void GetFullStatus (void)
<
// PREPARING FRAME
SyncLIN (); // Sync Break и Sync Field
DataTX(0b00111100); // Identifier
DataTX(0x80); // AppCMD
DataTX(0x81); // CMD
DataTX(0b11110000); // slave address
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0xff); // DATA
DataTX(0b00001101); // CHK байт контроля ошибок
// READING FRAME
SyncLIN (); // Sync Break и Sync Field
DataTX(0B01111101);
В ответ драйвер мотора посылает восемь байт своего состояния, после этого можно слать команду установки на нужную позицию — мотор оживает и делает нужное количество шагов:
SyncLIN ();// Sync Break и Sync Field
DataTX(0x3c); // Identifier
DataTX(0x80); // AppCMD
DataTX(0x8b); // CMD
DataTX(0xf0); // AD1[6:0] slave address 1 шагового мотора
DataTX(0x55); // DATA нужная позиция 1 мотора (16 бит, поэтому в два захода)
DataTX(0xff); // DATA нужная позиция 1 мотора
DataTX(0xNN); // DATA slave address 2-го шагового мотора
DataTX(0xNN); // DATA нужная позиция 2 мотора (16 бит, поэтому в два захода)
DataTX(0xNN); // DATA нужная позиция 2 мотора
DataTX(0xNN); // CHK контрольная сумма
Это минимальный код, заставляющий двигаться шаговый мотор. В железе это вышло так:
Внизу: плата контроллера
Слева: программатор
Вверху: шаговый мотор и драйвер
Плата драйвера крупнее:
В итоге можно организовать корректор вертикального положения фар, управляемый при помощи энкодера (управлять шаговым мотором при помощи шагового энкодера — что может быть лучше?) с отдельным управлением левой и правой фарой (для сервисной настройки фар) с возможностью оперативного изменения угла энкодером и все это от одного управляющего проводка.
установка автозвука Киев, установка автомагнитолы Киев, шумоизоляция авто Киев
Практически все современные автомобили имеют электронику, в основе своей архитектуры имеющую CAN-шину. С точки зрения производителя автомобиля шина CAN это очень полезная вещь, позволяющая гибко изменять функционал автомобиля без серьезных переделок электрооборудования. Например, чтобы добавить складывающееся зеркало со встроенным поворотником на машину традиционной архитектуры (без КАН-шины) необходимо протянуть от главного блока предохранителей провода на выключатель складывания зеркал, затем протянуть провода от выключателя в каждую дверь (левую и правую) и плюс провода от поворотников. Имеем в итоге кучу лишней меди и невозможность изменить комплектацию быстро (на конвеере). В случае автомобиля с платформой на CAN-шине просто добавляем новое зеркало, подключаем к дверному блоку, программируем что зеркало есть и должно складываться и мигать поворотником. Выключатель зеркала подключаем к центральному блоку и программируем что он есть. Ну это если очень просто объяснить 🙂
Смысл в том что CAN-шина это хорошо, и абсолютно все автомобили в самом ближайшем будущем будут иметь такую архитектуру. На данный момент все лидирующие европейские производители производят автомобили с CAN, к ним подтягиваются корейцы и японцы ну и американцы конечно.
нет ни провода от замка зажигания, ни подсветки.
Подключая нештатную магнитолу на такую машину, вы скорее всего возьмете ISO-переходник и подключите оба питания (постоянное и от ключа) магнитолы на постоянное питание. Подсветку вообще подключать не будете, и с первого взгляда вроде бы как все ОК. Но на самом деле нет, есть несколько проблем.
При подключении магнитолы без КАН-адаптера будут следующие проблемы:
Универсальный CAN-BUS адаптер для магнитолы:
Этот простой кан адаптер подключается к большинству автомобилей с CAN-шиной и выдает сигнал ACC для подключения магнитолы. Его удобно использовать тогда когда вам просто нужно решить проблему разрядки аккумулятора из-за неправильно подключенной магнитолы.
Версия для использования на грузовых автомобилях с бортовой сетью с напряжением 24В называется Connects2 IGNI-GEN24V
Штатный CAN-BUS адаптер для магнитолы:
Штатный кан-адаптер предназначен для конкретной модели автомобиля, комплектуется с одной стороны штатным разъемом для подключения к проводке автомобиля, с другой стороны стандартным ISO-разъемом для подключения магнитолы. Бывает два варианта таких can-bus адаптеров для магнитолы, первый (серия Essentials) дешевле, выдает только сигнал ACC и в принципе по функционалу не отличается от IGNI-GEN12V.
Серия CAN-BUS адаптеров Professional может больше:
Помимо сигнала ACC для подключения магнитолы такой адаптер выдает сигналы (в зависимости от модели авто): Подсветка (+12В), Задний ход (+12В), Ручник (земля), Импульс скорости (отрицательный импульс, зависящий от скорости автомобиля)
Конечно же, с таким адаптером подключение будет еще более простым и надежным, однако он и стоит дороже.
Список штатных CAN-BUS адаптеров для магнитолы и поддерживаемых автомобилей:
Alfa Romeo:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-AR1 | ACC +12V | 159 (2006-2011), Brera (2007-2010), |
Giulietta (2010-2014), Mito (2008-2014)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-AU1 | ACC +12V | A2 (2004-2005), A3 (2003-2013), A4 (2005-2015) |
A6 (2004-2011), TT (2003-2013)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-BM1 | ACC +12V | 1-Series E87 (2004-2013), 3-Series E90 (2005-2012), |
5-Series E60 (2004-2010), 7-Series E65 (2002-2008),
Chevrolet:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CV1 | ACC +12V | Camaro (2009->), Cruze (2009-2015), Equinox (2009->), |
Chrysler:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CH1 | ACC +12V | 300C (2008->), Aspen (2008-2009), |
Grand Voyager (2008->), Sebring (2007-2010),
Citroen:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-CT1 | ACC +12V | Berlingo (2008>), C2 (2006>),C3 (2006>), |
C3 Picasso (2009>), C4 (2006>),
C4 Picasso (2006>),
C5 (2005>), C6 (2004>),
C8 (2006>), DS3 (2009>),
Dodge:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-DG01 | ACC +12V | Avenger (2007>), Caliber (2009>), |
Charger (2008>),Charger (2008>),
Dakota (2008>), Durango (2008-2015),
Grand Caravan (2007-2015), Journey (2008>),
Magnum (2008>), Nitro (2008>), Ram (2008>)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-F1 | ACC +12V | Fiat 500L (2012>), Ducato (2014>) | |
CTHUP-FT01 | ACC +12V, ручник, подсветка, |
Ducato (2008-2014), Idea (2006>),
C-Max (2004-2011), Fiesta (2006-2008),
Focus (2005-2011), Fusion (2005>),
Galaxy (2006>),Mondeo (2004-2014),
S-Max (2005-2011), Transit (2005>),
Kuga (2008-2012),
Transit Connect (2004-2013)
Escape (2013>), Fiesta (2012>),
Focus (2011>), Kuga (2012>), Ranger (2012>),
Transit Connect (2013>),Transit Custom (2013>)
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-JP1 | ACC +12V | Cherokee (2014>), |
Lancia:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUP-LA01 | ACC +12V, ручник, подсветка, |
Land Rover:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUP-LR01 | ACC +12V, ручник, подсветка, |
Mercedes:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-MC1 | ACC +12V | E-Class (2004-2009), SLK (2002>) | |
CTHUE-MC2 | ACC +12V | A-Class (2004>), B-Class (2004>) C-Class (2004>), CL (2008>) CLK (2004>), GL (2006-2012) ML (2004-2011), R-Class (2006>) Sprinter (2006>), Vito (2007>) | |
CTHUP-MC01 | ACC +12V, |
B-Class W245 (2004-2012),
C-Class W203 (2000-2007),
CLK W209 (2000>),
ML (2005-2011), R-Class W251 (2005>),
Sprinter (2006>), Viano (2004>),
C-Class W204 (2008>), CLA (2013>),
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-VX1 | ACC +12V | Agila (2008-2015), Antara (2006>), Astra (2004-2009), Combo (2004>), |
Corsa (2004-2014), GTC (2005>),
Meriva (2005-2010), Movano (2006>), Vectra (2004>),
Signum (2004>), Tigra (2005>), Vectra (2004>),
Peugeot:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-PE2 | ACC +12V | 207 (2004>) , 208 (2012>), 2007 (2008>), 2008 (2013>), 307 (2004-2007), 308 (2007>), 3008 (2004>), 407 (2004>), 508 (2011>), 5008 (2009>), 607 (2005>), 807 (2004>), Expert (2007>), iON (2010>), Partner (2008>), RCZ (2010>) | |
CTHUP-PE01 | ACC +12V, |
3008 (2009>), 308 (2007>), 407 (2005>),
5008 (2009-2013), 607 (2004>),
807 (2005>), Bipper (2007>), Boxer (2008>),
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-ST1 | ACC +12V | Alhambra (2006>), Altea (2005>), |
Cordoba (2005>), Exeo (2008>),
Ibiza (2008>), Leon (2005-2014),
Toledo (2005>)
Skoda:
Модель адаптера | Функции | Список моделей авто | разъем магнитолы |
CTHUE-SK1 | ACC +12V | Fabia (2007-2010), Octavia (2004-2013), |
Roomster (2006>), Superb (2006-2013),
В теме выкладываются и обсуждаются вопросы касающиеся модификации,
прошивки и установки/настройки ПО на: Lada GRANTA и Lada KALINA-2/Priora
Внимание. НЕЛЬЗЯ прошивать ММС с версией ПО 23.02.27 или 21.1.2.39 .
Перед прошивкой ММС , сверяйте версию ПО, проконсультируйтесь на форуме по этому поводу, не спешите убивать свой аппарат.
Все операции по прошивке ММС производить только на свой страх и риск! Что приводит к потери гарантийных обязательств производителя на ММС.
- Перед тем как задавать вопрос воспользуйтесь Поиском по теме!
- Для прошивки или мода, указывайте марку ММС(Калина2 или Гранта) и версию ММС, на которую можно устанавливать.
- С уважением относитесь к авторам прошивок, модов и пр., помните они вам не чем не обязаны и делают все по собственному желанию.
- Если вам понравился мод или украшение, не забудьте поблагодарить автора поднятием его репутации.
- Если участник форума дал вам хороший совет, который помог вам в решении вашей проблемы не следует помещать сообщение с текстом «Спасибо! Ты супер. ».
На нашем форуме благодарность принято выражать путем поднятия репутации конкретного участника. - На репутацию других участников может влиять любой пользователь, набравший 15 полезных постов.
Если у вас нет 15 полезных постов, попросите модератора поднять репутацию оказавшему вам помощь человеку через кнопку "Жалоба".
- Если участник форума дал вам хороший совет, который помог вам в решении вашей проблемы не следует помещать сообщение с текстом «Спасибо! Ты супер. ».
- Если выкладываете прошивку, ПО или мод - обязательно прикрепляйте: скрины/фото(только под спойлером!); описание; для какой модели ММС, версию и метод установки.
- Если вы выкладываете патч или модификацию, которая устанавливается методом замены файлов - необходимо указать путь для копирования файлов.
- Если вы выкладываете патч, прошивку или мод. с иной схемой установки - указывайте процесс установки как можно подробнее.
- Комментарии типа: Я так же делаю или Так же поступаю - будут удаляться БЕЗ ПРЕДУПРЕЖДЕНИЯ.
- Посты с открытыми СКРИНАМИ - будут удаляться БЕЗ ПРЕДУПРЕЖДЕНИЯ.
- Дублирование вопроса(обсуждался он или нет) - будет удаляться БЕЗ ПРЕДУПРЕЖДЕНИЯ.
- Вопросы и комментарии не по теме - будут удаляться БЕЗ ПРЕДУПРЕЖДЕНИЯ.(так же есть шанс получить бан)
- Вынуть все устройства из USB.
- Создать в корне USB пустой файл explorer.txt. После перезагрузки должен загрузиться рабочий стол WinCE.
- Отключить питание ММС (снять клемму аккумулятора) на 5 минут.
- Прошить еще раз, по новой скопировав файлы на SD карту.
- Выйти на рабочий стол
- Вытащить все из USB
- Тапнуть по ярлыку NewMenu Uninstall
- Перезагрузить магнитолу (15> секундным нажатием)
- Удалить все из StaticStore
- Установить новую версию(меню)
- Подключить все в USB (желательно первым подключить GPS антенну)
- Форматируем SD карту до 4 Гб в FAT
- В корень SD карты скопировать файлы для прошивки: Chain.bin, chain.lst, NK.bin, TINYNK.bin .
- Вынуть все из USB магнитолы.
- Перезагрузить аппарат долгим (около 15с.) нажатием на кнопку питания(Калина 2/Priora) или кнопку громкости(Гранта)
- После прошивки (пробежали 4-е статус бара), аппарат сам перезагрузится в рабочий стол.
- Берем стилус (зубочистку, ключ и т.п.)
- Ни в коем случае не перезагружаем аппарат! Заходим в: Start/Settings/Control Panel/Stilus/ на вкладку Calibration/Recalibrate. Калибруем экран и тапаем по экрану во время обратного отсчета.
( или для новичков: Тапаем на рабочем столе по иконке Home, ждем загрузки штатного меню. заходим в настройки -> экран -> калибровка экрана, калибруем не забывая тапнуть по экрану во время обратного отсчета. Далее нажимаем пальцем иконку настройки, не убирая палец ждем пока запустится рабочий стол.) - Перезагружаем аппарат, SD карта должна быть вставлена.
- Аппарат прошит , SD карту можно извлекать.
Совсем недавно мы разбирали протокол CAN, и вот сегодня продолжаем двигаться по автомобильным стандартам! На очереди интерфейс LIN, который также свое основное применение нашел в автомобильной промышленности, да и, в общем-то, для этого и был изначально создан 🙂
А пока к теории!
Итак, стандарт LIN был создан в конце 90-х годов (первая версия спецификации относится к 1999 году) группой известных компаний, в основном, автопроизводителей. Среди них:
- Audi
- Volkswagen
- BMW
- Volvo
- Motorola
В целом архитектура шины выглядит следующим образом:
В чем же смысл, спросите вы, ведь есть же CAN? Так вот, использование интерфейса LIN не исключает использование CAN, а скорее дополняет. LIN является однопроводной шиной, более дешевой, чем CAN, и используется для связи менее критичных для безопасности и для работы автомобиля узлов между собой. То есть основная связь по-прежнему обеспечивается протоколом CAN, а менее важные блоки и датчики уже подключаются по LIN:
Структура пакета интерфейса LIN.
Каждый пакет состоит из заголовка (header) и непосредственно данных (data):
Таким образом, именно Master отправляет в шину заголовки пакетов. В зависимости от определенного бита заголовка (это мы разберем чуть позже) подчиненные устройства понимают, что им требуется сделать:
- выслать данные, которые запрашивает ведущий
- или продолжать прием данных, в случае если, например, Master выполняет конфигурацию подчиненного
Как видите, иерархия очень строгая!
С организацией обмена данными разобрались, теперь можно углубиться непосредственно в структуру уже упомянутых частей LIN-фреймов. Заголовок пакета состоит из нескольких байт:
Старт и стоп-биты здесь играют ту же роль, что и при передаче данных по UART, и используются для каждого из передаваемых по LIN байт.
Идентификатор | Кол-во байт |
---|---|
0x00-0x1F | 2 |
0x20-0x2F | 4 |
0x30-0x3F | 8 |
Итак, тут у нас остаются еще два бита четности, для них формула выглядит следующим образом:
И на этом все! Заголовок пакета сформирован.
Поле данных в свою очередь состоит из непосредственно байт данных (от 1-го до 8-ми байт) и контрольной суммы (1 байт):
Для расчета контрольной суммы есть два варианта:
Давайте рассмотрим пример расчета классической контрольной суммы. Пусть байты данных равны: 0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37. Суммируем:
Вычитаем из полученного значения 0xFF:
И инвертируем, в итоге получаем:
Для выбранных нами байт данных контрольная сумма равна 0x62.
В практической статье по интерфейсу LIN мы обязательно посмотрим, как все это будет выглядеть на деле, а пока на этом заканчиваем, до скорой встречи!
Для изучения шины LIN Вы можете использовать наш адаптер CAN-Hacker 3.0 с дополнительной опцией LIN анализатора.
А так же интерфейс CAN-Hacker CH-P
Пример системы управления дверью с шиной LIN и без нее:
Еще пример, в автомобиле Porsche Macan 2015 г. все привода и датчики климатической системы подключены к шине LIN а сам блок климат контроля связан с автомобилем при помощи CAN шины.
Скорость передачи данных
Скорость передачи данных на шине LIN стандартная для устройств построенных на базе UART: 2400; 9600; 10400; 19200; 20000 Бод. Это немного но достаточно для передачи данных от датчиков и для управления медленными механизмами.
Электрическая реализация LIN
Электрически интерфейс LIN реализован так же просто. В каждом узле линия шины подтянута к шине питания +12V. Передача осуществляется опусканием уровня шины до уровня массы GND. Микроконтроллер подключается к шине LIN при помощи специальной микросхемы Трансивера, например TJA1021
Подключение LIN трансивера к микроконтроллеру
Архитектура сети LIN
Master может опрашивать Slave о его состоянии, будить его, отправлять ему команды. Обмен информации на шине LIN происходит в формате обмена пакетами, и на первый взгляд может показаться что механизм идентичен шине CAN, это не так. Объясняем почему:
Структура LIN пакета выглядит так:
Поле Frame-Header состоит из полей:
Идентификатор может принимать значения от 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 и байта контрольной суммы.
На осциллограмме обмен одного Master и одного Slave выглядит так:
Если мы отключим узел 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, о нем мы напишем в следующих статьях.
Видео пример работы с шиной LIN и адаптером CAN-Hacker 3.2
Читайте также: