Lin bus что это
Перейти к содержимому

Lin bus что это

  • автор:

Мир автомобилей Volkswagen

Автомобильное зеркало заднего вида Blackview с видеорегистратором и GPS

Автомобильное зеркало заднего вида Blackview с видеорегистратором и GPS

Ознакомьтесь

  • Массаж выезд круглосуточно 24 часа массаж для мужчин 24 часа.
  • Описание полотенцесушитель электрический лесенка на сайте.

Популярные записи

  • Магнитола RCD 310
  • Датчик частоты вращения выходного вала G195
  • Переключатель Tiptronic F189
  • Магнитола RCD 210
  • Клапан управления фазами газораспределения N205
  • Аккамулятор Crafter VW
  • Бензиновый двигатель модели AQY
  • Датчики температуры охлаждающей жидкости
  • Датчик температуры масла G93
  • Освещение Volkswagen Crafter
  • Бензиновый двигатель (V6, 3.2 л)
  • Система отопления и вентиляции VW Crafter
  • Системы шин данных CAN, применяемые на автомобилях концерна VW
  • Охлаждение топлива в двигателе 1.9 л TDI Volkswagen
  • Замена батареи

Электрооборудование: шина LIN-Bus

LIN — это сокращение от Local Interconnect Network.

LIN — это сокращение от Local Interconnect Network.

Расширенное применение электроники на автомобиле обусловлено повышением требований к расширению функциональных и эргономических характеристик систем управления.

Применение многочисленных электронных приборов вызвало необходимость поиска новых способов обмена данными между ними.

Эта ситуация оказалась актуальной также для автомобиля Audi A8 модели 2003 года, на котором установлено более 70 электронных блоков управления, нуждающихся в обмене данными между ними.

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

– однопроводная шина LIN,
– оптическая шина MOST,
– беспроводная связь BluetoothTM

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

– однопроводная шина LIN,
– оптическая шина MOST,
– беспроводная связь BluetoothTM

LIN — это сокращение от Local Interconnect Network. Local Interconnect означает, что все связанные между собой блоки управления расположены в пределах определенного ограниченного пространства (например, крыши). Для этого применяется также выражение «lokales Subsystem».

Обмен данными между различными шинами LIN конкретного автомобиля производится посредством специального блока управления через шину CAN.

Шина LIN является однопроводной. Eе провод окрашен в фиолетовый цвет, поверх которого нанесена цветная маркировка. Сечение провода равно 0,35 мм2. Применение экрана для этой шины не обязательно.

Шина обеспечивает обмен данными между ведущим блоком управления LIN-Master и ведомыми блоками управления LIN-Slave, число которых может достигать 16.

Lin bus что это

Как следует из этих экранов, системы, в памяти которых отсутствуют коды неисправностей, можно пересчитать по пальцам. А всё остальное «горит» красным цветом, сигнализируя о наличии проблем. Куда «стучаться» в такой ситуации? Опыт подсказывает, что в первую очередь опрашивать надо межсетевой шлюз, т.е. по-нашему Gateway. Ведь именно этот модуль «рулит» всеми шинами данных и именно он фиксирует проблемы, связанные с обменом информацией между блоками.
Прямо из экрана 1, нажав на клавишу с символом « > », входим в блок «Diagnostic Interface For Data-Bus» (это и есть Gateway) и нажимаем на клавишу «Fault Codes» (экран 5).

Экран 5 — Функциональное Меню межсетевого шлюза

Экран 6 — коды неисправностей

В памяти блока имеются три кода (экран 6), и все они, похоже «из одной оперы». Межсетевой шлюз, по сути, жалуется на наличие какой-то электрической проблемы в цепи так называемой локальной шины данных. Общепринятое название этой шины – LIN Bus. Звучит солидно, хотя с физической точки зрения это всего лишь отрезок простого медного провода. Ну а с точки зрения передачи информации, это простецкая 12-ти вольтовая однопроводная шина, с очень низкой скоростью обмена данными (не более 20 кбит в секунду). Тем не менее, данная шина является двунаправленной, т.е. по ней можно как отправлять, так и принимать цифровую информацию.

На автомобиле Audi A5 применяется несколько локальных шин, в частности, их используют блоки климат-контроля, комфорта, бортовой сети и т.п. Но межсетевой шлюз (Gateway) работает только с одной LIN-шиной, и используется она для управления системой зарядки и контроля энергопотребления автомобиля. Другими словами, на этой шине «сидят» только два компонента – генератор с цифровым управлением и блок контроля АКБ, который именуется BDM (Battery Data Module). По сути, данный модуль является встроенным в массовый провод цифровым датчиком тока (фото 2). Модуль BDM по шине LIN передаёт информацию в межсетевой шлюз, а уже тот «рулит» процессом оптимизации зарядки АКБ, причём использует для этого всё ту же локальную шину.

Фото 2 — датчик тока, он же модуль BDM

Вернёмся к кодам неисправностей. Их наличие чрезвычайно сильно упрощает ситуацию и позволяет с большой долей вероятности предположить, что именно неисправность в цепи шины LIN является первопричиной имеющихся проблем с недозарядкой АКБ. Вопрос собственно сводится к следующему: какой именно из двух компонентов (генератор или модуль BDM) «сажает» шину? А если это не делает ни тот и ни другой, то проблема, очевидно, в самой шине, т.е. в проводке.
Надо бы посмотреть что там, на шине происходит. Берём осциллограф и с помощью акупунктурного адаптера подключаем его измерительный кабель к разъёму генератора (фото 3).

Фото 3 — подключение к шине LIN-bus

Собственно, к генератору больше никаких проводов не подходит (кроме силового плюса, естественно). Согласитесь, есть в цифровых шинах свое скромное обаяние. Один провод и всё – больше ничего не нужно. Изящно, ничего не скажешь. Итак, что там у нас на этом проводе? А на этом проводе имеется постоянное напряжение порядка 14 Вольт (экран 7).

Экран 7 — напряжение на шине Lin-bus

А что показывает сканер? Для контроля состояния данной шины входим в режим текущих параметров «Dynamic Requests», и выбираем группу 6. Да, всё верно, статусы коммуникации и с генератором, и с модулем BDM имеют значение 0, а это значит, что коммуникация как таковая, отсутствует (экран 8).

Экран 8 — статусы коммункации по шине LIN-bus

Всё сходится. Похоже, шина просто замкнута на «плюс». Где именно? Либо в генераторе, либо в датчике тока, либо в жгуте. Что в этой ситуации самое простое? Конечно, отключить разъём от генератора (фото 4).

Фото 4 — отсоединяем разъём, но остаёмся на шине

Вот собственно и всё – сразу пошёл обмен данными (экран 9). И сканер это подтверждает (экран 10). Появилась связь с датчиком тока, ну а с генератором, понятное дело коммуникация отсутствует, разъём-то от него отключен.

Экран 9 — обмен данными восстановился
Экран 10 — теперь Gateway «видит» модуль BDM

Яснее ясного, что проблема кроется где-то внутри генератора. Демонтируем его с автомобиля, чтобы отвезти в ремонт (фото 5).

Фото 5 — демонитруем генератор

И при внимательном рассмотрении обнаруживаем, что там уже побывали шаловливые ручонки. На внутренней поверхности разъёма отчётливо видны следы работы паяльником (фото 6).

Фото 6 -следы работы паяльником

Связываемся с хозяйкой автомобиля – оказывается, недавно генератор уже ремонтировали по причине полного отсутствия зарядки. Теперь, какая-никакая зарядка есть, да вот незадача — локальная шина села на «плюс». Не знаю, в какой компании производился ремонт, но что-то там ребята намутили. И в целом, энергетический баланс хотя и положительный, но, очевидно, полного соответствия условиям эксплуатации добиться не удаётся. Поэтому батарея всегда полупустая.
Повторно отремонтированный генератор мои коллеги устанавливали уже без моего участия. Так что никаких дополнительных экранов или осциллограмм привести не могу. Но, надеюсь и так всё понятно. А что же автомобиль? Автомобиль уже почти месяц работает как часы.

CAN, LIN и сигнализация: объясняем на пальцах

Стандартные шины CAN и LIN объединяют электронику автомобиля в единую систему. Это экономит километры проводов, спасает инженеров от лишней головной боли и открывает им новые возможности. Например, в совершенствовании противоугонных систем.

Салон автомобиля

CAN-шины: зачем нужны и как работают?

На рубеже 80-90х годов компании Bosch и Intel разработали для автомобильной отрасли единый промышленный стандарт CAN (сокращенно от Controller Area Network). Это сеть микроконтроллеров для ключевых систем автомобиля, шина, соединяющая модули ЭБУ (электронные блоки управления). Она следит практически за всем происходящим у него под обшивкой: за работой двигателя, коробки передач, топливного насоса, рулевого механизма, системы безопасности, а также звуком, мониторами и другими мультимедийными примочками. Конечно, к шине подключается и автосигнализация.

CAN LIN шина в автомобиле

Самая простая CAN-шина представлена витой парой с линиями High (чаще всего оранжевый провод) и Low (черный провод). Собственно, «high» (высокий) и «low» (низкий) обозначают напряжение, с которым работает каждый провод. Разница этих напряжений на выходе помогает модулям ЭБУ считывать сигнал. Витых пар может быть (и обычно бывает) более двух, что усложняет работу с ними. Но и это небольшая цена за единый промышленный стандарт, избавляющий от килограммов лишних проводов и дублированных датчиков и систем контроля. Стоит упомянуть, что производители экспериментируют с заменой витой пары на оптоволокно (такая шина называется MOST) с более продвинутым протоколом FlexRay, который позволяет значительно ускорить обмен информацией в пределах шины. Но пока что в них нет такой уж острой необходимости.

CAN LIN шина и оптоволокно

LIN-шины: как CAN, только проще

У LIN-шины (Local Interconnect Network) провод всего один. По сути, это упрощенная версия вышеописанного стандарта, хотя ее можно считать и интегрированной в него. Она используется для систем, не требующих обмена слишком сложными сигналами. Это замки, стеклоподъемники дверей, заслонки климат-контроля, корректоры фар и подобные. Впрочем, LIN-шины используют и для соединения более сложных систем, чтобы снизить себестоимость автомобиля. Так, например, делают российские производители, но это в принципе общемировая практика.

CAN LIN шина

2CAN 2LIN – комбинация шин. Подключаем к ним сигнализацию

Оптимальным вариантом остается комбинирование шин в управлении электроникой автомобиля. В принципе, современной машине хватает одной шины CAN и одной шины LIN, но иногда этого недостаточно. Тем более, дополнительные системы – дополнительная надежность. Так появилось сочетание «2CAN 2LIN» и ему подобные. Все довольно просто: 2CAN2LIN значит, что автомобиль оснащен двумя шинами CAN и двумя шинами LIN. 2CAN LIN – две шины CAN и одна LIN и так далее. Можно увидеть автомобили и с 4LIN. В зависимости от числа шин потребуются и разные модули для прямого подключения к автомобилю сторонних систем.

Диагностика автомобиля

Модуль 2CAN 2LIN в сигнализации StarLine, например, позволит подключить ее к двум шинам каждого стандарта. Без такого модуля установка охранной системы происходит гораздо сложнее: придется создавать 10-20 дополнительных точек врезки в центральную проводку автомобиля. Кстати, у Старлайн этот модуль установлен непосредственно на самой плате сигнализации, что повышает ее надежность: у злоумышленников просто не получится подсоединить к сети автомобиля внешние устройства. Модули 2CAN 2LIN у StarLine также поддерживают дополнительные функции, такие как SUPER SLAVE и использование иммобилайзера с валидатором. Что это такое и как правильно подобрать сигнализацию для вашего автомобиля – мы рассказываем в этой статье.

AVR308

В данном примере применения описано как реализовать подчиненную LIN (локальная коммутационная сеть) задачу на 8 разрядном AVR RISC микроконтроллере без всяких внешних компонентов.

Протокол LIN — последовательный коммуникационный протокол, который эффективно поддерживает управление механическими узлами распределенных сетей. Это делает его идеальным протоколом для использования в автомобильных системах. LIN сеть состоит из единственного ведущего и множества подчиненных узлов. В данном примере применения описывается как реализовать протокол на физическом уровне и на уровне передачи данных в соответствии с двумя эталонными моделями низкого уровня ISO/OSI. Это фундаментальная основа для реализации передачи сообщений между точками распределенной сети. Физический уровень ISO/OSI моделей обеспечивает только передачу необработанных пакетов между двумя точками распределенной сети. Уровень передачи данных делает физический уровень более надежным за счет реализации обнаружения ошибок и управления. Также этот уровень добавляет средства для активизации, поддержания в активном состоянии и отключения соединения. Высшие уровни эталонных моделей ISO/OSI не относятся к LIN протоколу и поэтому в данном примере применения не рассматриваются.

  • Один ведущий, множество подчиненных.
  • Низкая стоимость полупроводниковых приборов.
  • Для синхронизации подчиненных узлов не требуются кварцевые или керамические резонаторы.
  • Гарантия времени ожидания для передачи сигналов.
  • Однопроводная линия связи.
  • Скорость передачи данных до 20 кбит/с.

Рисунок 1. Топология LIN сети

Концепция протокола LIN

Один ведущий, несколько ведомых

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

Переменная длина кадров данных

На длину поля сообщения указывают два бита, включенные в поле идентификатора (см. таблицу 1). Это добавляет гибкость системе и снижает количество байт сообщения, содержащего малое количество данных.

После того, как кадр сообщения послан ведущим или ведомым, все подключенные узлы могут его получить. В зависимости от содержимого байта идентификатора, принимающие точки определяют, должны ли они реагировать на данное сообщение или нет. Например, в автомобильной охранной системе одна команда «CLOSE ALL», переданная ведущим, приведет к тому, что все подчиненные выполнят соответствующие действия по закрытию дверей и окон.

Временная синхронизация, не требующая применения в едущих узлах кварцевых или керамических резонаторов

После поля разрыва синхронизации ведущий передает поле синхронизации, которое позволяет всем подчиненным синхронизироваться с ведущим. Такие поля синхронизации передаются в начале каждого кадра сообщения. Стабильность рабочей частоты ведомых должна быть таковой, чтобы сохранить синхронизацию только в течение кадра сообщения. Это позволяет ведомым устройствам синхронизироваться от внутренних RC генераторов.

Проверка контрольной суммы и детектирование ошибок

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

Обнаружение поврежденных точек сети

Ведущая задача ответственна за инициализацию передачи кадров сообщения и, таким образом несет ответственность, за информацию и проверяет, все ли узлы сети подключены к питанию и работают правильно.

Минимальная стоимость системы

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

Шина LIN состоит из одного канала, по которому передаются синхросигналы и данные. Физическая среда этого канала — однопроводная линия, подключенная через подтягивающий резистор к шине питания VCC (см. рисунок 1). Высокий или «рецессивный» сигнал на шине показывает, что она свободна, а низкий или «доминантный» — что она занята. Обычно в автомобильных системах VCC является положительным потенциалом.

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

В соответствии с требованиями к уровню паразитных ЭМИ, возникающих при передаче данных по однопроводным линиям связи, скорость передачи данных равняется 20 кбит/с.

  • Разрыв синхронизации
  • Поле синхронизации
  • Идентификационное поле
  • Поле данных
  • Поле контрольной суммы

Рисунок 2. Кадр сообщения LIN

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

Формат байтовых полей, показанный на рисунке 3, идентичен формату данных стандарта UART с кодированием 8N1. Это означает, что каждое байтовое поле содержит старт бит, 8 бит данных, стоп бит и не содержит бита проверки на четность. Таким образом, каждое байтовое поле содержит 10 бит (Tbit). Как показано на рисунке 3, старт бит указывает на начало байтового поля и является «доминирующим», в то время как стоп бит является «рецессивным». Восемь информационных битов могут быть как «доминирующими», так и «рецессивными».

Рисунок 3. Байтовое поле LIN

Поле разрыва синхронизации

Поле разрыва синхронизации указывает на начало передачи кадра сообщения. Это поле всегда передается ведущей задачей и указывает на необходимость подчиненным подготовиться к приему поля синхронизации. Поле разрыва синхронизации состоит из двух частей: первая часть имеет доминирующей (низкий) уровень, длительность которого должна быть не менее 13 периодов байтового поля (Tbit), а вторая — рецессивной (высокий) уровень, длительность которого должна быть не менее четырех Tbit. Вторая часть поля необходима для обеспечения возможности обнаружения стартового бита следующего поля синхронизации.

Рисунок 4. Поле разрыва синхронизации

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

Поле синхронизации содержит сигналы, необходимые для синхронизации задающих генераторов подчиненных устройств сети. Поле синхронизации является байтовым полем, имеющем значение «0x55». Временная диаграмма этого поля приведена на рисунке 5.

Рисунок 5. Поле синхронизации

Как видно из рисунка, поле синхронизации содержит пять спадающих фронтов (пять переходов от рецессивного к доминантному состоянию).

Эти спадающие фронты должны использоваться подчиненными устройствами для настройки скорости обмена данными.

Идентификационное поле содержит информацию о содержимом и длине сообщения. Как показано на рисунке 6, это поле разделено на три секции: идентификационные биты (4 бита), служебные биты, указывающие на длину сообщения (2 бита) и биты проверки на четность (2 бита). Таким образом происходит деление 64 идентификационных номеров на четыре комплекта, каждый из которых содержит 16 идентификаторов.

Рисунок 6. Идентификационное поле

В соответствии с LIN протоколом количество полей данных в кадре данных определяется по приведенной ниже таблице 1.

Таблица 1. Количество полей данных в кадре данных

ID5 ID4 NDATA (количество полей данных)
0 0 2
0 1 2
1 0 4
1 1 8

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

Биты проверки на четность формируются в соответствии с приведенными ниже формулами:

P0 = ID0 xor ID1 xor ID2 xor ID4 P1 = ID1 xor ID3 xor ID4 xor ID5

Кадр данных включает в себя от двух до восьми полей данных, каждое из которых содержит восемь бит. Передача данных осуществляется старшим значащим битом (СЗБ) вперед. Поля данных записываются соответствующими подчиненными задачами. Так как нет никакого управления доступом к шине, то только одна подчиненная задача должна реагировать на идентификатор. Все остальные подчиненные задачи могут только принимать ответное сообщение и выполнять соответствующие действия.

Рисунок 7. Поле данных

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

Последним полем в кадре сообщения является поле контрольной суммы. Этот байт содержит инвертированную сумму по модулю 256 всех байтов данных (кадр данных не включает идентификатор). Эта сумма рассчитывается путем суммирования с переносом всех байтов и инвертирования полученного результата. Свойства инвертированной суммы по модулю 256 таково, что если ее сложить с суммой всех байтов данных, то результат будет равен «0xFF».

Рисунок 8. Поле контрольной суммы

Кадр дежурного режима

Структура кадра дежурного режима идентична обыкновенному кадру сообщения, за исключением того, что идентификационный байт равняется «0x80». Содержимое полей данных не определено и может использоваться для передачи в системе различных параметров.

Рисунок 9. Кадр дежурного режима

Режим сна (дежурный режим) может быть закончен путем посылки любой подчиненной задачей сигнала активизации (пробуждения). Сигнал пробуждения возможно сформировать только в том случае, когда шина находится в режиме сна и внутренние узлы отслеживают его. Сигнал пробуждения — это кодовая комбинация «0x80».

Рисунок 10. Кадр сигнала активизации

В зависимости от того, синхронизирована ли подчиненная задачи с ведущей задачей, скорость ее может быть отличной от скорости приемника ведущего устройства. По этой причине приемник ведущего устройства может идентифицировать переданный сигнал «0x80» как «0xC0», «0x80» или «0x00». Все эти сигналы будут восприняты как правильный сигнал пробуждения, и подчиненные устройства будут ожидать поля разрыва синхронизации от ведущего. Если в течение 128 Tbit не будет обнаружен этот сигнал, то сигнал пробуждения будет игнорирован. Так будет повторяться трижды. Перед посылкой нового запроса на пробуждения ведущее устройство будет ждать не менее 15 000 Tbit. В описываемом примере применения разграничитель пробуждения имеет значение 64 Tbit.

LIN протокол обеспечивает обнаружение ошибок как в идентификационном поле, так и в поле данных. Исправление ошибок не предусмотрено, поэтому единственный путь — автоматический повтор передачи поврежденных данных. Для выяснения правильности приема ведущий опрашивает подчиненных.

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

Если несоответствие обнаруживает подчиненное устройство, то эта информация сохраняется и ведущему посылается запрос. Эта неверная информация может быть передана как часть кадра данных.

Теоретически максимальное количество узлов в LIN сети не ограничено. Реально же, количество узлов будет ограничено шумами, задержками и электрической нагрузкой шины. Желательно, чтобы количество узлов в сети не превышало 16. В принципе, протокол поддерживает до 63 удаленных точек. Также LIN протокол требует, чтобы общая длина проводов не превышала 40 метров. Импеданс ведущего устройства должен быть порядка 1 кОм, а подчиненных — 20 — 47 кОм.

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

Сообщение считается правильным если в пределах кадра сообщения не было обнаружено ошибок. Если в сообщении имеется ошибка, то принимается решение, что передачу данных не осуществлял ни ведущий, ни ведомый.

  • «Ошибочный бит» в данных или контрольной сумме при считывании своего собственного сообщения.
  • «Ошибка контроля четности идентификатора» или «Ошибка контрольной суммы» при считывании данных с шины.
  • «Ведущий не реагирует на ошибку» при считывании данных с шины.
  • «Противоречивая ошибка байта синхронизации» при отсутствии обнаружения в допустимых пределах фронта сигнала синхронизации.

Обычно встроенные RC генераторы имеют большой допустимый диапазон (например, от -50 % до +100 %). LIN протокол требует, чтобы частота подчиненного отличалась от частоты ведущего не более, чем на 15 %. В длительности кадра отклонение частоты не должно превышать +-2 %. Эти требования должны выполняться во всем рабочем температурном диапазоне и при всех допустимых напряжениях питания.

В данном разделе описывается реализация различных частей программы. Управляющая программа состоит из семи различных подпрограмм.

Таблица 2. Реализованные функции

Функция Описание Вызывающее событие
main Основная программа Сброс
ext_int0 Обработчик внешнего прерывания INT0 Спадающий фронт на выводе PIND2
check_parity Высчитывает количество доминантных бит в переданной переменной ext_int0
tim0_ovf Вызывается при переполнении нулевого таймера/счетчика при расчете длительности бита аппаратный нулевой таймер/счетчик
putchar Передача данных по LIN шине ext_int0
delay Основная подпрограмма формирования задержки ext_int0
wakeup Посылает ведущему сигнал пробуждения Пользовательская подпрограмма

В описываемом примере применения основная программа не выполняет никаких действий. В нее можно поместить код прикладной программы пользователя. Обратите внимание, что микроконтроллер AT90S1200 не имеет СОЗУ, а использует вместо него трехуровневый аппаратный стек. Если используется более трех уровней, то происходит перезапись первого значения последним. Это ведет к непредсказуемости выполняемой программы. Когда происходит внешнее прерывание, то вызывается подпрограмма обработки прерывания. При приеме данных вызывается подпрограмма check_parity, а при передаче — подпрограмма putchar. Таким образом, два уровня стека используется под внешние прерывания. Поэтому важно, чтобы прикладная программа пользователя не использовала больше одного уровня стека.

Рисунок 11. Байт состояния

При обнаружении ошибки бита или ошибки контрольной суммы устанавливаются соответствующие биты регистра состояния (Status: r20). После считывания эти биты должны быть сброшены. Основная программа должна непрерывно опрашивать флаг дежурного режима. Когда обнаруживается, что этот флаг установлен, то микроконтроллер AT90S1200 может быть введен в режим сна при помощи следующей последовательности команд:

ldi r23, (1 <

При обнаружении активности шины микроконтроллер выходит из дежурного режима и запускает подпрограмму ext_int0. Подпрограмма LIN интерфейса имеет размер 181 слово, поэтому размер пользовательской программы может достигнуть 331 слова (662 байта). В сумме получается 512 слов (1 Кбайт).

Подпрограмма обслуживания нулевого внешнего прерывания: ext_int0

  • Режим 1: программа ожидает принятие секции разрыва синхронизации.
  • Режим 2: программа ожидает принятия синхронизирующего байта.
  • Режим 4: программа ожидает принятия идентификатора.

На рисунке 12 показана блок-схема программы ext_int0.

В режиме 1 подпрограмма отслеживает последующие 11 бит. Длительность бита принимается такой же, как и при последней передаче. После принятии 11 битов устанавливается режим 2.

В режиме 2 по первому срезу сигнала запускается таймер. Программа отслеживает пять спадающих фронтов и после этого останавливает таймер (см. рисунок 5). Содержимое таймера делится на 8 и таким образом вычисляется длительность импульса.

В режиме 4 считывается принятый идентификатор. Сначала проверяется, не является ли принятый идентификатор командой активизации режима сна. Если же принятая секция не является такой командой, то идентификатор сравнивается с внутренним шаблоном. Если переданный идентификатор принадлежит устройству, то выполняется проверка на четность. После этого формируется контрольная сумма и пересылается вместе с данными.

Рисунок 12. Блок-схема подпрограммы обработки прерывания ext_int0

Эта подпрограмма считает количество принятых бит во внутреннюю переменную. Если количество четное, то МЗБ переменной количества битов будет равно 0. Если количество нечетное, то МЗБ переменной будет равняться 1. Этот бит используется для формирования бита контроля на четность.

Подпрограмма обработки переполнения нулевого таймера: tim0_ovf

Нулевой таймер/счетчик, используемый в данном примере применения является восьмибитным. Для обеспечения возможности отслеживания восьми длительностей бита эта подпрограмма, вызываемая при переполнении нулевого таймера, увеличивает значение вспомогательной переменной. Объединение вспомогательной переменной с содержимым первого таймера/счетчика дает 16 битное число, используемое для формирования длительности восьми бит. Деление этого значения на восемь формирует длительность бита. AVR микроконтроллер работает на частоте 1 МГц, и его счетчик увеличивает каждый тактовый цикл. Таким образом, длительность бита формируется непосредственно в микросекундах.

Подпрограмма putchar используется для передачи данных по LIN шине. При передаче нуля в регистре Port Register вывод PIND2 устанавливается на работу в режиме выхода. При передаче единицы линия порта устанавливается на работу в режиме входа, и встроенный подтягивающий резистор подтягивает линию к положительной шине питания. Это эквивалентно закрытому выходу каскада с открытым коллектором. Передаваемые и принимаемые данные накапливаются в регистрах data1 - datan и rx - rx+n. В зависимости от того, какое количество определено в идентификационном поле, подчиненное устройство передает два, четыре или восемь байт. Константа data_addr определяет адрес первого передаваемого регистра.

Эта подпрограмма формирует задержку в циклах, определяемую выражением [temp2] +- 1. Используется она для формирования задержки между выбираемыми битами.

Вызвав эту подпрограмму из основной программы, можно сформировать сигнал пробуждения шины. Программа не используется подпрограммой ext_int0.

Размышления по поводу аппаратной части

Стандарт LIN определяет диапазон уровня доминантного сигнала от 9 В до 18 В (40 В в нерабочем состоянии). Описываемое устройство предназначено для работы на 5 В LIN шине. Так как AVR микроконтроллер, используемый в этом применении, работает от 5 В источника питания, то самым разумным было бы использовать 5 В LIN шину. Если же такая шина не может быть использована, то необходимо обеспечить преобразование уровней LIN шины. Существует два простейших метода обеспечения такого преобразования

В нем используется один полевой транзистор. Схема включения его показана на рисунке 13.

Рисунок 13. Преобразование 5 В интерфейса в 12 В при помощи одного полевого транзистора

На рисунке 14 показано, как можно обеспечить преобразование уровней при помощи двух биполярных транзисторов. Следует заметить, что при этом у микроконтроллера разделяются линии приема и передачи.

Рисунок 14. Преобразование 5 В интерфейса в 12 В при помощи двух биполярных транзисторов

  • Подпрограмма putchar должна формировать передаваемые данные на выводе Tx, а не на выводе PIND2 (Rx).
  • Данные на вывод Tx должны поступать без инверсии.
  • Вывод Tx должен быть установлен на работу в режиме выхода.
  • Принятые данные должны быть инвертированы.
141 Kb Engl AVR308 Исходный фаил
Пример программы

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

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