Приемопередатчики для сетей can-bus

Приемопередатчики для сетей CAN-bus

Справочник

Главная  Справочник  Энциклопедия радиоинженера

“Справочник” – информация по различным электронным компонентам: транзисторам, микросхемам, трансформаторам, конденсаторам, светодиодам и т.д. Информация содержит все, необходимые для подбора компонентов и проведения инженерных расчетов, параметры, а также цоколевку корпусов, типовые схемы включения и рекомендации по использованию радиоэлементов.

Сеть промышленного назначения CAN-bus (Controller Area Network) была создана фирмой Robert Bosch для применения в распределенных системах управления, работающих в режиме реального времени со скоростью передачи до 2 Мбит/с и вначале использовалась исключительно в автомобилестроении.

Высокая помехозащищенность и надежность, а также большой выбор компонентов от крупнейших производителей (Fujitsu, Maxim, Motorola, NEC, Siemens, Texas Instruments и др.

) превратили САN в совокупность программных, схемотехнических и алгоритмических решений для широкого диапазона применений — в САN-технологию. Важное место в сети САN отводится приемопередатчикам (ПП), связывающим САN-контроллер и реальные провода САN-шины.

Рассмотрим ПП фирмы MAXIM, которые могут заинтересовать потребителей в силу традиционно высокого качества всей продукции компании, невысокой стоимости (порядка 2,5 у.е.) и ряда технологических особенностей.

Приемопередатчики МАХ3050/3057 (рис. 1) первоначально предназначались для автомобильной промышленности, где необходимы скорость передачи данных до 2 Мбит/с и защита от короткого замыкания в системах с высоким напряжением питания. ПП характеризуются однополярным питанием +5 В, током потребления 56 мА в активном и 3,6 мА в пассивном состоянии.

Приборы МАХ3050/3057 работают в четырех режимах:

  • высокое быстродействие;
  • регулируемое быстродействие;
  • пониженное потребление;
  • отключение.

Рис. 1
Приемопередатчики МАХ3050/3057

Режим определяется сигналом определенного уровня на выводе RS микросхемы. Передатчик при этом преобразует однополярный сигнал от CAN-контроллера в дифференциальный сигнал для шины CAN (CANH, CANL).

Режим высокого быстродействия (вывод«КБ соединен с общим проводом) позволяет достичь при передаче скорости 2 Мбит/с.

В этом режиме присутствует повышенный уровень электромагнитных помех, который можно снизить, применив экранированную вигую пару.

Снизить уровень помех без использования экранированной витой пары можно в режиме регулируемого быстродействия. В этом режиме скорость передачи (от 40 до 500 кбит/с) определяется резистором, подключенным между выводом RS и общим проводом. Сопротивление резистора вычисляется по формуле:

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

Отключение приемопередатчика МАХ3057 происходит при подаче на вывод SHDN сигнала низкого уровня. В ПП МАХ3050 реализован режим AutoShutdown, разработанный фирмой MAXIM, при котором микросхема отключается при отсутствии приема или передачи в течение заданного времени. Значение этого времени задается внешним конденсатором, подключаемым к выводу SHDN, и определяется по формуле:

где VSHDN – порог срабатывания SHDN.

Подача на вывод SHDN высокого уровня переводит МАХ3050 в рабочий режим.

Приемник считывает дифференциальный сигнал с шины (CANH, CANL) и преобразует его в однополярный (RXD) для CAN-контроллера. Компаратор на входе приемника сравнивает разность напряжений ΔV = (CANH-CANL) с внутренним порогом 0,7 В. Если разность положительна, то на выводе RXD формируется сигнал низкого уровня, если отрицательна, то — высокого.

В ПП МАХ3050/МАХ3057 для приемника реализован режим «эхо», т.е. происходит повтор передаваемых данных.

Диапазон синфазного сигнала для линий CANH и CANL от ~7 до +12 В. В случае короткого замыкания или обрыва в цепи CANH-CANL, а также если входное синфазное напряжение не более 0,5 В, на выводе RXD формируется сигнал высокого уровня. Если входное напряжение более 0,9 В, то на RXD — низкий уровень.

Микросхемы МАХ3050/3057 имеют два типа зашиты. Первый тип – тепловая защита, которая отключает микросхему и устанавливает линии CANH и CANL в третье состояние, если температура кристалла превысит +160°С.

Такое возможно, например, при коротком замыкании на шине. Гистерезис составляет 20°С, т.е. обратное включение произойдет при снижении температуры до +140°С.

Второй тип защиты — ограничение тока выходного каскада при коротком замыкании.

Более упрощенным вариантом микросхемы МАХ3050 является МАХ3053, у которой отсутствует режим пониженного потребления. В остальном – это полный аналог МАХ3050.

Фирма MAXIM выпускает также микросхемы МАХ3054/3055/3056 (их структурная схема приведена на рис. 2), предназначенные для применения в автомобильных системах (в том числе с напряжением бортовой сети 42 В).

Их главная особенность – переход в режим однопро-водной передачи при возникновении различных отказов. Надежность микросхем определяют тепловая и токовая защиты. Тепловая защита аналогична МАХ3050 (гистерезис —15°С). Токовая защита предохраняет выход передатчика при коротком замыкании на шине.

Дополнительно линии CANH и CANL защищены от импульсных помех, характерных для автомобильной электроники.

Приемопередатчики МАХ3054/ 3055/3056 работают в трех режимах, переход в каждый из которых (и выход тоже) задается подачей управляющих сигналов на выводы STB и EN. Для отключения внешнего стабилизатора питания используется вывод INH.

Каждая из микросхем данного семейства рассчитана на определенную скорость передачи данных: МАХ3054 – 250 кбайт/с, МАХЗО55 – 125 кбайт/с, МАХ3056 -40 кбайт/с. Высокая помехозащищенность обеспечивается фильтрами на входе приемников, а встроенная схема регулируемого быстродействия в микросхемах МАХ3055 и МАХ3056 позволяет обойтись без экранированного кабеля.

Работа приемника и передатчика в обычном режиме аналогична работе МАХ3050/3057. Отметим только их отличия.

Для работы от автомобильного аккумулятора (в том числе и 42-вольтового) в микросхеме предусмотрен вывод ВАТТ, через который и подается питание (до +80 В).

С целью снижения потребления в режиме ожидания в микросхемах МАХ3054-МАХ3056 реализована функция управления внешним источником питания.

При переходе в режим ожидания потенциал на выходе INH изменяется с низкого на высокий в трех случаях: при «холодном» запуске, по фронту или спаду сигнала на выводе WAKE и если длительность доминирующего сигнала больше 38 мкс при низких уровнях на выводах EN и STB.

После включения питания сигнал на выводе INH становится «высоким» и устанавливается внутренний флаг включения питания. Значение этого флага может быть считано в режиме ожидания на выводе ERR (STB = 1, EN = 0), а сброс происходит при переходе в нормальный рабочий режим.

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

Отказы и что с ними делать

 Схема обнаружения отказов полностью задействована в нормальном рабочем режиме. При обнаружении отказа она переключается в соответствующее состояние, как показано в табл. 1. Типовое пороговое напряжение составляет -3,2 В (Vcc = 5 В), что обеспечивает корректный прием данных с предельной помехоустойчивостью в нормальном режиме или при отказах 1, 2, 5 и 9.

Таблица 1

№ отказа Описание Режим работы Состояние внутренних ключей (0 — выключен, 1 — включен) Состояние выходов (0 — запрет, 1 — разрешение)
CANH CANL
1 Обрыв линии CANH Нормальный RTH, RTL-1 1 1
2 Обрыв линии CANL Нормальный RTH, RTL-1 1 1
3 Короткое замыкание CANH на шину ВАТТ Все RTH-0 1
4 Короткое замыкание CANL на общую шину Все RTH или RTL-0 1
5 Короткое замыкание CANH на общую шину Нормальный RTH,RTL-1 1 1
6 Короткое замыкание CANL нa шину ВАТТ Нормальный RTH-1, RTL-0 1 1
7 Короткое замыкание линии CANL на CANH Все RTH или RTL-0 1
8 Короткое замыкание CANH на шину питания Все RTH-0 1
9 Короткое замыкание CANL на шину питания Нормальный RTH,RTL-1 1 1

Режимы пониженного энергопотребления

Приемопередатчики МАХ3054-МАХ3056 могут работать в одном из трех режимов пониженного потребления, которые выбираются подачей сигналов на выводы STB и EN (табл. 2).

Таблица 2

Режим Уровни сигналов на выводах Шины, к которым прдключается вывод RTL
STB EN ERR RXD
1 1
Переход в дежурный 1 Выход по прерыванию Выход по прерыванию VВАТТ
Дежурный
Ожидания
Ожидание включения питания 1 Флаг включения VВАТТ Выход по прерыванию VВАТТ
Нормальный 1 1 Флаг ошибки Нет флага Доминирующие принимаемые данные Рецессивные принимаемые данные Vсс

Дежурный (спящий) режим -режим с минимальным потреблением. В этом режиме отключается внешний стабилизатор напряжения переводом выхода INH в третье состояние, смещение на выход CANL от источника питания подается через выход RTL. Если подается питание, то на выводах RXD и ERR формируется прерывание на запуск системы.

Режим ожидания может применяться в том случае, когда необходим внешний стабилизатор напряжения для сохранения активного состояния при малом потреблении (аналогичен дежурному режиму, но на выходе INH устанавливается высокий уровень).

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

Особенности применения в сети

МАХ3054/3055/3056 могут работать в сети с общим числом приемопередатчиков до 32 на одной шине. Эти ПП спроектированы для работы с суммарным сопротивлением согласующих резисторов 100 Ом (для каждой из линий CANH и CANL).

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

Источник: http://www.radioradar.net/hand_book/hand_books/can.html

Введение в протокол CAN

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

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

Рис. 1. Топология сети CAN.

CAN контроллеры соединяются с помощью дифференциальной шины, которая имеет две линии – CAN_H (can-high) и CAN_L (can-low), по которым передаются сигналы. Логический ноль регистрируется, когда на линии CAN_H сигнал выше, чем на линии CAN_L.

Логическая единица – в случае когда сигналы CAN_H и CAN_L одинаковы (отличаются менее чем на 0.5 В). Использование такой дифференциальной схемы передачи делает возможным работу CAN сети в очень сложных внешних условиях.

Логический ноль – называется доминантным битом, а логическая единица – рецессивным. Эти названия отражают приоритет логической единицы и нуля на шине CAN. При одновременной передаче в шину лог.

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

Типы сообщений сети CAN

Данные в CAN передаются короткими сообщениями-кадрами стандартного формата. В CAN существуют четыре типа сообщений:

  • Data Frame
  • Remote Frame
  • Error Frame
  • Overload Frame

Data Frame – это наиболее часто используемый тип сообщения. Он состоит из следующих основных частей:

  • поле арбитража (arbitration field) определяет приоритет сообщения в случае, когда два или более узлов одновременно пытаются передать данные в сеть. Поле арбитража состоит в свою очередь из:
    • для стандарта CAN-2.0A, 11-битного идентификатора + 1 бит RTR (retransmit)
    • для стандарта CAN-2.0B, 29-битного идентификатора + 1 бит RTR (retransmit)

    Следует отметить, что поле идентификатора, несмотря на свое название никак не идентифицирует само по себе ни узел в сети, ни содержимое поля данных. Для Data кадра бит RTR всегда выставлен в логический ноль (доминантный сигнал).

  • поле данных (data field) содержит от 0 до 8 байт данных
  • поле CRC (CRC field) содержит 15-битную контрольную сумму сообщения, которая используется для обнаружения ошибок
  • слот подтверждения (Acknowledgement Slot) (1 бит), каждый CAN-контроллер, который правильно принял сообщение посылает бит подтверждения в сеть. Узел, который послал сообщение слушает этот бит, и в случае если подтверждение не пришло, повторяет передачу. В случае приема слота подтверждения передающий узел может быть уверен лишь в том, что хотя бы один из узлов в сети правльно принял его сообщение.

Рис. 2. Data frame стандарта CAN 2.0A.

Remote Frame – это Data Frame без поля данных и с выставленным битом RTR (1 – рецессивные бит).

Основное предназначение Remote кадра – это инициация одним из узлов сети передачи в сеть данных другим узлом. Такая схема позволяет уменьшить суммарный трафик сети.

Однако, на практике Remote Frame сейчас используется редко (например, в DeviceNet Remote Frame вовсе не используется).

Error Frame – это сообщение которое явно нарушает формат солобщения CAN. Передача такого сообщения приводит к тому, что все узлы сети регистрируют ошибку формата CAN-кадра, и в свою очередь автоматически передают в сеть Error Frame.

Результатом этого процесса является автоматическая повторная передача данных в сеть передающим узлом. Error Frame состоит из поля Error Flag, которое состоит из 6 бит одинакового значения (и таким образом Error frame нарушает проверку Bit Stuffing, см. ниже), и поля Error Delimiter, состоящее из 8 рецессивных битов.

Error Delimiter дает возможность другим узлам сети обнаружив Error Frame послать в сеть свой Error Flag.

Overload Frame – повторяет структуру и логику работы Error кадра, с той разницей, что он используется перегруженным узлом, который в данный момент не может обработать поступающее сообщение, и поэтому просит при помощи Overload-кадра о повторной передаче данных. В настоящее время Overload-кадр практически не используется.

Контроль доступа к среде передачи (побитовый арбитраж)

Поле арбитража CAN-кадра используется в CAN для разрешения коллизий доступа к шине методом не деструктивного арбитража. Суть метода не деструктивного арбитража заключается в следующем.

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

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

Конечно, если шина в данный момент занята, то контроллер не начнет передачу до момента её освобождения.

Рис. 3. Побитовый арбитраж на шине CAN.

Методы обнаружения ошибок

CAN протокол определяет пять способов обнаружения ошибок в сети:

  • Bit monitoring
  • Bit stuffing
  • Frame check
  • ACKnowledgement Check
  • CRC Check

Bit monitoring – каждый узел во время передачи битов в сеть сравнивает значение передаваемого им бита со значением бита которое появляется на шине. Если эти значения не совпадают, то узел генерирует ошибку Bit Error. Естественно, что во время арбитража на шине (передача поля арбитража в шину) этот механизм проверки ошибок отключается.

Bit stuffing – когда узел передает последовательно в шину 5 бит с одинаковым значением, то он добавляет шестой бит с противоположным значением. Принимающие узлы этот дополнительный бит удаляют. Если узел обнаруживает на шине больше 5 последовательных бит с одинаковым значением, то он генерирует ошибку Stuff Error.

Frame Check – некоторые части CAN-сообщения имеют одинаковое значение во всех типах сообщений. Т.е. протокол CAN точно определяет какие уровни напряжения и когда должны появляться на шине. Если формат сообщений нарушается, то узлы генерируют ошибку Form Error.

ACKnowledgement Check – каждый узел получив правильное сообщение по сети посылает в сеть доминантный (0) бит. Если же этого не происходит, то передающий узел регистрирует ошибку Acknowledgement Error.

CRC Check – каждое сообщение CAN содержит CRC сумму, и каждый принимающий узел подсчитывает значение CRC для каждого полученного сообщения. Если подсчитанное значение CRC суммы, не совпадает со значением CRC в теле сообщения, принимающий узел генерирует ошибку CRC Error.

Механизм ограничения ошибок (Error confinement)

Каждый узел сети CAN, во время работы пытается обнаружить одну из пяти возможных ошибок. Если ошибка обнаружена, узел передает в сеть Error Frame, разрушая тем самым весь текущий трафик сети (передачу и прием текущего сообщения). Все остальные узлы обнаруживают Error Frame и принимают соответствующие действия (сбрасывают принятое сообщение).

Кроме того, каждый узел ведет два счетчика ошибок: Transmit Error Counter (счетчик ошибок передачи) и Receive Error Counter (счетчик ошибок приема). Эти счетчики увеличиваются или уменьшаются в соответствие с несколькими правилами.

Сами правила управления счетчиками ошибок достаточно сложны, но сводятся к простому принципу, ошибка передачи приводит к увеличению Transmit Error счетчика на 8, ошибка приема увеличивает счетчик Receive Error на 1, любая корректная передача/прием сообщения уменшают соответствующий счетчик на 1.

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

Каждый узел CAN сети может находится в одном из трех состояний. Когда узел стартует он находится в состоянии Error Active. Когда, значение хотя бы одного из двух счетчиков ошибок превышает предел 127, узел переходит в состояние Error Passive. Когда значение хотя бы одного из двух счетчиков превышает предел 255, узел переходит в состояние Bus Off.

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

Узел в состоянии Passive Error передает в сеть Passive Error Flags при обнаружении ошибки в сети. Passive Error Flags состоит из 6 рецессивных бит, поэтому остальные узлы сети его не замечают, и Passive Error Flags лишь приводит к увеличению Error счетчика узла.

Узел в состоянии Bus Off ничего не передает в сеть (не только Error кадры, но вообще никакие другие).

Адресация и протоколы высокого уровня

В CAN не существует явной адресации сообщений и узлов. Протокол CAN нигде не указывает что поле арбитража (Identification field + RTR) должно использоваться как идентификатор сообщения или узла.

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

Точно также протокол не запрещает использовать поле арбитража для передачи данных.

Утилизация поля арбитража и поля данных, и распределение адресов узлов, идентификаторов сообщений и приоритетов в сети является предметом рассмотрений так называемых протоколов высокого уровня (HLP – Higher Layer Protocols). Название HLP отражает тот факт, что протокол CAN описывает только два нижних уровня эталонной сетевой модели ISO/OSI, а остальные уровни описываются протоколами HLP.

Рис. 4. Логическая структура протокола CAN.

Существует множество таких высокоуровневых протоколов. Наиболее распространенные из них это:

  • DeviceNet
  • CAL/CANopen
  • SDS
  • CanKingdom

Физичекий уровень протокола CAN

Физический уровень (Physical Layer) протокола CAN определяет сопротивление кабеля, уровень электрических сигналов в сети и т.п. Существует несколько физических уровней протокола CAN (ISO 11898, ISO 11519, SAE J2411).

В подавляющем большинстве случаев используется физический уровень CAN определенный в стандарте ISO 11898. ISO 11898 в качестве среды передачи определяет двухпроводную дифференциальную линию с импедансом (терминаторы) 120 Ом (допускается колебание импеданса в пределах от 108 Ом до 132 Ом.

Физический уровень CAN реализован в специальных чипах – CAN приемо-передатчиках (transceivers), которые преобразуют обычные TTL уровни сигналов используемых CAN-контроллерами в уровни сигналов на шине CAN.

Наиболее распространенный CAN приемо-передатчик – Phillips 82C250, который полностью соответствует стандарту ISO 11898.

Махимальная скорость сети CAN в соответствие с протоколом равна 1 Mbit/sec. При скорости в 1 Mbit/sec максимальная длина кабеля равна примерно 40 метрам.

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

скорость передачи максимальная длина сети
1000 Кбит/сек 40 метров
500 Кбит/сек 100 метров
250 Кбит/сек 200 метров
125 Кбит/сек 500 метров
10 Кбит/сек 6 километров

Разъемы для сети CAN до сих пор НЕ СТАНДАРТИЗОВАНЫ. Каждый протокол высокого уровня обычно определяет свой тип разъемов для CAN-сети.

Источник: http://can.marathon.ru/page/can-protocols/canbus/canintro

CAN – шина, CAN – интерфейс

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

Протокол CAN был разработан для автомобильной промышленности и впоследствии стал стандартом в области создания бортовых сетей автомобилей, железнодорожного транспорта и т.д. CAN позволяет создавать сети с развитыми средствами контроля ошибок, скоростью передачи до 1Мбит/с и пакетами содержащими не более восьми байтов данных.

Не дай своей идее погаснуть

Канальный и физический уровни CAN

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

осуществляет формирование пакетов сообщений, ограничение распространения ошибок, подтверждение приема и арбитража.

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

Структура узла сети CAN

Рассматриваемый нами узел сети CAN состоит из микроконтроллера, CAN контроллера и приемопередатчика (рисунок 1).

Чаще всего мы используем микроконтроллеры с встроенным CAN контроллером для упрощения схемы, но иногда используется автономный контроллер CAN  с интерфейсом SPI (MCP2510).

  Далее приемопередатчик подключается к витой паре, на концах которой размещены согласующие резисторы (терминатор) с сопротивлением 120 Ом.

Рисунок 1 – Узел сети CAN

Для формирования логической единицы в витой паре, или свободной шине, на оба провода подается напряжение, равное половине разности напряжения между 0 или Vcc. Логическому нулю соответствует подача на провода линии дифференциального напряжения (рисунок 2).

Рисунок 2 – Логические уровни на CAN-шине

Шина CAN позволяет передавать данные со скоростью 1 Мбит/c при длине кабеля не более 40 м. В обучающей литературе написано, что при снижении скорости передачи до 10кбит/с можно добиться длины сети в 1.5км. 

Пакет сообщения CAN

Формат сообщения CAN показан на рисунке 3.

Рисунок 3 – Пакет сообщения CAN

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

Поле Диапазон
Идентификатор (11 – битный ) 0 – 0x7FF
Или идентификатор (29 – битный) 0 – 0x1FFFFFFF
Длина сообщения 0 – 8
Данные пакета от 0 до 8 байт данных в пакете

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

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

Максимальная длина сообщения 8 байт, но можно уменьшить это значение для сохранения пропускной способности шины CAN. Для примера ниже по тексту есть несколько скриншотов CAN сообщений из автомобильной сети.

Арбитраж на шине CAN

Если без подробностей, то первым по шине CAN всегда передается сообщение с наименьшим идентификатором.

Настройка скорости передачи данных по шине CAN

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

В большинстве случаев используются скорости 10Кбит/c, 20Кбит/c, 50Кбит/c, 100Кбит/c, 125Кбит/c, 500Кбит/c, 800Кбит/c, 1MBaud и настройки для этих скоростей уже посчитаны.

На рисунке 4 изображено окно выбора скорости в программе PcanView.

Рисунок 4 – Выбор скорости передачи данных в программе PcanView

Как мы видим при установке стандартной скорости настройки проставляются автоматически, но бывают случаи когда необходимо использовать другую скорость передачи данных. Например бортовой CAN автомобиля может работать со скоростью 83Кбит/c.

В этом случае придется провести расчет настроек самостоятельно или поискать специализированный калькулятор скорости в интернете.

Для самостоятельного расчета скорости необходимо понимать, что для передачи одного бита сообщения используется несколько квантов, а интервал передачи состоит из трех сегментов (рисунок 5).

Рисунок 5 – Время передачи одного бита

Первый сегмент всегда фиксирован и равняется одному кванту. Далее идет два сегмента Tseg1 и Tseg2 и количество квантов в каждом сегменте определяется пользователем и может быть равно от 8 до 25.  Точка выборки находится между Tseg1 и Tseg2, т.е.

в конце первого и в начале второго сегмента.

Так же пользователь может определить ширину скачка синхронизации (Synchronization Jump Width – SJW) для подстройки битовой скорости принимающего устройства, который может быть в диапазоне 1 – 4 квантов времени.

Теперь приведем формулу расчета скорости (Пример расчета скорости для CAN контроллера SJA1000):

BTR = Pclk/(BRP * (1 + Tseg1  + Tseg2))

Где

BTR – скорость передачи данных,

Pclk – частота работы CAN контроллера,

BRP – значение предделителя частоты генератора скорости передачи

Tseg1 – первый сегмент

Tseg2 – Второй сегмент

Для проверки возьмем уже посчитанную скорость 125Кбит/c и попробуем получить настройки вручную. Pclk возьмем 16 МГц.

BRP = 16МГц /(125K * (1 + Tseg1 + Tseg2))

Затем подбираем интервал передачи бита находящийся в диапазоне от 8 до 25 квантов времени, так что бы получилось целое значение BRP. В нашем случае если взять (1 + Tseg1 + Tseg2) = 16, то BRP будет равен 30.

Далее нужно подобрать соотношение между Tseg1 и Tseg2, которое даст нам желаемое положение точки выборки (Sample Point – SP).

SP = ((1 + Tseg1 + Tseg2) * 70)/100

Подставляем значения и получаем 16 * 0.7 = 11.2, что соответствует соотношению Tseg1 = 10, Tseg2 = 5, т.е. 1 + 10 + 5 = 16. Далее смотрим если  Tseg2 >= 5, то SJW = 4, если Tseg2 < 5, то SJW = (Tseg2 – 1). В нашем случае SJW = 4.

Итого для получения скорости 125Кбит/c необходимо в параметрах указать, BRP = 30, Tseg1 = 10, Tseg2 = 5, SJW = 4.

P.S. Конфигурирование baud rate значительно отличается между старыми модулями USB-CANmodul (GW-001 и GW-002) с контроллером SJA1000 и новыми модулями sysWORXX с контроллером AT91SAM7A3. В статье описывающей работу с бортовым CAN автомобиля на скорости 83кбит/c приведен расчет скорости для контроллера AT91SAM7A3.

Пример получения и передачи данных по CAN-интерфейсу

В примере будем использовать CAN-адаптер с программой PcanView от SYSTEC и подключимся к салонному CAN автомобиля, работающему со скоростью 125Кбит/с. Рассматриваемый нами автомобиль оснащен креслами с электроприводом и поэтому исследуем данные отвечающие за положение кресел и постараемся изменить положение спинки подменив пакет с помощью компьютера .

Для начала на схеме автомобиля находим наиболее удобно расположенный разъем с линиями CANH и CANL и подключаем к нему наш адаптер. Если разъем и провода найти не получилось, то можно подлезть к блоку управления кресла, найти там два скрученных между собой провода и аккуратно надрезав провода подключить адаптер.

Если после подключения и настройки адаптера сообщения не приходят, то в первую очередь попробуйте поменять между собой CANH CANL и проверить включено ли зажигание.
Далее запускаем программу PcanView, в открывшемся окне настроек устанавливаем Baudrate = 125Кбит/c и нажимаем ОК (рисунок 4).

В следующем окне устанавливаем Message filter = Standard, диапазон адресов от 000 до 7FF и нажимаем ОК (рисунок 6).

Рисунок 6 – Настройка CAN фильтра

Если все сделано правильно, то мы увидим сообщения от кресел (рисунок 7), а при нажатии кнопки наклона спинки на пульте управления мы увидим еще одно сообщение с адресом 1F4 идущее от пульта к креслу (рисунок 8).

Рисунок 7 – CAN сообщения от кресла с электроприводом

Рисунок 8 – CAN сообщения от кресла с электроприводом и сообщение от пульта управления к креслу

Теперь мы знаем какие должны быть адрес, длина и данные в CAN пакете для имитации нажатия кнопки изменения положения спинки. Во вкладке Transmit нажимаем NEW и в открывшемся окне создаем копию пакета 1F4, т.е. ID = 1F4, Length = 3, Data = 40 80 00. Period можно оставить 0 ms, тогда сообщения будут отправляться по факту нажатия кнопки пробел (рисунок 9).

Рисунок 9 – Создание CAN сообщения

На рисунке 10 отображено поле Transmit главного окна содержащее все отправляемые сообщения в CAN и информацию о них. При выделении сообщения и нажатии кнопки пробел произойдет отправка пакета в CAN сеть и кресло немного сдвинется в нужном направлении.

Рисунок 10 – Поле Transmit

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

Итог

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

Пример работы с бортовым CAN автомобиля на скорости 83кбит/c

Источник: http://embeddedsystem.ru/index.php?page=can-bus-can-interface

CAN BUS в автомобиле: для чего он нужен

CAN BUS в автомобиле: для чего он нужен.

В настоящее время авто производители все чаще и чаще добавляют различные новшества и улучшения в свои автомобили. Это могут быть дополнительные устройства, или расширение функционала уже ранее используемых устройств. Для того, чтобы не прокладывать новую проводку к подключаемому устройства, его подключают уже к имеющимся сигнальным/управляющим проводам, так называемой Кан-шине (Can Bus).

Немецкая компания BOSCH в середине 80-х предложила автопроизводителям новую архитектуру обмена данными между устройствами — Controller Area Network или, как принято сокращенно называть — CAN BUS. Это новшество решило сразу несколько проблем.

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

Конечно же, производители магнитол не упустили возможности использовать этот дополнительный потенциал CAN шины и в своих продуктах. Как правило, если в автомобиле присутствует CAN BUS, то необходимо использовать автомагнитолу со встроенным декодером сигналов от этой шины.

В противном случае, пользователь может столкнуться с рядом существенных проблем, при подключении обыкновенной магнитолы. В частности не будет работать штатный цифровой усилитель (KIA, JBL, Pioneer, Rockford, BOSE), т.к. управление этими усилителями (включение, баланс, управление звуковыми сценами) происходит посредством передачи данным по CAN шине.

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

Еще одной из проблем может стать разрядка АКБ автомобиля вследствие постоянно включенной автомагнитолы, т.к. сигнал на включение/выключение головного устройства так же может поступать по этой шине.

Как видите, проблем могут возникнуть достаточно много, что однозначно полностью перечеркнет удовольствие от покупки новой автомагнитолы.

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

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

 Если же в автомобиле присутствует CAN BUS, то нужно будет докупать отдельные декодеры кан-шины (питания АСС, декодер камеры, рулевого управления и т.д.), либо приобрести автомагнитолу с уже установленным декодером CAN BUS.

Источник: https://newsmy.com.ua/can-bus-v-avtomobile-dlya-chego-on-nuzhen/

CAN Bus Transcievers

The CAN bus transceiver adapts the signals from the CAN controller, which usually uses ordinary TTL levels, to the physical layer used.

AMI Semiconductors

AMIS-30660
CAN High Speed Transceiver. This transceiver is the interface between a controller area network (CAN) protocol controller and the physical bus and may be used in both 12V and 24V systems.

AMIS-30663
CAN High Speed Transceiver with true 3.3V and 5.0V logic level interface. This transceiver is the interface between a controller area network (CAN) protocol controller and the physical bus and may be used in both 12V and 24V systems.

AMIS-4168x
Fault Tolerant CAN Transceiver. The AMIS-41682 and AMIS-41683 work as the interface between the CAN protocol controller and the physical wires of the CAN bus.

Bosch

CF150C, CF151, CF161, CF163, CF173/175
CAN transceivers, ISO11898-2 compatible. Several models with different features.

Infineon

TLE6250G
82C251-type, for 12 or 24V systems. Version for both 5 and 3.3V. P-DSO-8-3 package.

TLE6252G
Similar to the TJA1053 from Philips. Switches to single-wire mode during bus line failure events. Supports one-wire transmission mode with ground offset voltages up to 1.5V. Low-power sleep mode. Packaged in P-DSO-14-2.

TLE6255G
Single-Wire up to 40kbit/s. -40 to +125 Celsius operating temp. Vcc range 5.5 to 28V. Low power sleep mode. Programmable bus out slew rate. 100kbit/s diagnostic mode. P-DSO-14-4 package.

Philips

PCA82C250
A very common driver chip. Implements the ISO 11898-2 physical layer. May be used with bus speeds up to 1 Mb/s. Available in DIL-8 and SO-8 packages. PDF-data sheet

82C251
Almost as the 82C250 but tolerates higher voltages – up to 28V, which makes it especially suited for trucks and bus (note the pun!) applications. PDF- data sheet

PCA82C252
A “low-speed CAN” (ISO11898-3) transceiver. Magnificent fault tolerance and fault detection. 24V-tolerant. Supports one-wire transmission. Available in SO-14 package. PDF-data sheet

TJA1040
High-speed (ISO11898-2) transceiver comparable to the TJA1050, but with the following differences: An ideal passive behaviour when supply voltage is off; A very low-current standby mode with remote wake-up capability via the bus.

TJA1041
High-speed (ISO11898-2) transceiver featuring low-power management, supporting local and remote wake-up with wake-up source recognition and the capability to control the power supply in the rest of the node; Several protection and diagnosis functions including short circuits of the bus lines and first battery connection; Automatic adaptation of the I/O-levels, in line with the supply voltage of the controller.

TJA1050
High-speed (ISO11898-2) transceiver comparable to the 82C251, but with the following differences: Much lower electromagnetic emission due to optimal matching of the output signals CANH and CANL; Improved behaviour in case of an unpowered node; No standby mode.

TJA1053, TJA1054
Very similar to 82C252 (that is, these are low-speed fault-tolerant transceivers that follow ISO11898-3) but is better prepared to handle systems with more than 15 nodes. There is also a timer to prevent outputting a permanent dominant level.

AU5790
A Single-Wire CAN (SWC) transceiver.

Vishay Siliconix

Si9200EY
Implements ISO11898-2, compatible with 82C250. Available in SO-8.

Temic

B10011S

Источник: https://www.kvaser.com/about-can/can-controllers-transceivers/can-bus-transceivers/

Ссылка на основную публикацию
Adblock
detector
",css:{backgroundColor:"#000",opacity:.6}},container:{block:void 0,tpl:"
"},wrap:void 0,body:void 0,errors:{tpl:"
",autoclose_delay:2e3,ajax_unsuccessful_load:"Error"},openEffect:{type:"fade",speed:400},closeEffect:{type:"fade",speed:400},beforeOpen:n.noop,afterOpen:n.noop,beforeClose:n.noop,afterClose:n.noop,afterLoading:n.noop,afterLoadingOnShow:n.noop,errorLoading:n.noop},o=0,p=n([]),h={isEventOut:function(a,b){var c=!0;return n(a).each(function(){n(b.target).get(0)==n(this).get(0)&&(c=!1),0==n(b.target).closest("HTML",n(this).get(0)).length&&(c=!1)}),c}},q={getParentEl:function(a){var b=n(a);return b.data("arcticmodal")?b:(b=n(a).closest(".arcticmodal-container").data("arcticmodalParentEl"),!!b&&b)},transition:function(a,b,c,d){switch(d=null==d?n.noop:d,c.type){case"fade":"show"==b?a.fadeIn(c.speed,d):a.fadeOut(c.speed,d);break;case"none":"show"==b?a.show():a.hide(),d();}},prepare_body:function(a,b){n(".arcticmodal-close",a.body).unbind("click.arcticmodal").bind("click.arcticmodal",function(){return b.arcticmodal("close"),!1})},init_el:function(d,a){var b=d.data("arcticmodal");if(!b){if(b=a,o++,b.modalID=o,b.overlay.block=n(b.overlay.tpl),b.overlay.block.css(b.overlay.css),b.container.block=n(b.container.tpl),b.body=n(".arcticmodal-container_i2",b.container.block),a.clone?b.body.html(d.clone(!0)):(d.before("
"),b.body.html(d)),q.prepare_body(b,d),b.closeOnOverlayClick&&b.overlay.block.add(b.container.block).click(function(a){h.isEventOut(n(">*",b.body),a)&&d.arcticmodal("close")}),b.container.block.data("arcticmodalParentEl",d),d.data("arcticmodal",b),p=n.merge(p,d),n.proxy(e.show,d)(),"html"==b.type)return d;if(null!=b.ajax.beforeSend){var c=b.ajax.beforeSend;delete b.ajax.beforeSend}if(null!=b.ajax.success){var f=b.ajax.success;delete b.ajax.success}if(null!=b.ajax.error){var g=b.ajax.error;delete b.ajax.error}var j=n.extend(!0,{url:b.url,beforeSend:function(){null==c?b.body.html("
"):c(b,d)},success:function(c){d.trigger("afterLoading"),b.afterLoading(b,d,c),null==f?b.body.html(c):f(b,d,c),q.prepare_body(b,d),d.trigger("afterLoadingOnShow"),b.afterLoadingOnShow(b,d,c)},error:function(){d.trigger("errorLoading"),b.errorLoading(b,d),null==g?(b.body.html(b.errors.tpl),n(".arcticmodal-error",b.body).html(b.errors.ajax_unsuccessful_load),n(".arcticmodal-close",b.body).click(function(){return d.arcticmodal("close"),!1}),b.errors.autoclose_delay&&setTimeout(function(){d.arcticmodal("close")},b.errors.autoclose_delay)):g(b,d)}},b.ajax);b.ajax_request=n.ajax(j),d.data("arcticmodal",b)}},init:function(b){if(b=n.extend(!0,{},a,b),!n.isFunction(this))return this.each(function(){q.init_el(n(this),n.extend(!0,{},b))});if(null==b)return void n.error("jquery.arcticmodal: Uncorrect parameters");if(""==b.type)return void n.error("jquery.arcticmodal: Don't set parameter \"type\"");switch(b.type){case"html":if(""==b.content)return void n.error("jquery.arcticmodal: Don't set parameter \"content\"");var e=b.content;return b.content="",q.init_el(n(e),b);case"ajax":return""==b.url?void n.error("jquery.arcticmodal: Don't set parameter \"url\""):q.init_el(n("
"),b);}}},e={show:function(){var a=q.getParentEl(this);if(!1===a)return void n.error("jquery.arcticmodal: Uncorrect call");var b=a.data("arcticmodal");if(b.overlay.block.hide(),b.container.block.hide(),n("BODY").append(b.overlay.block),n("BODY").append(b.container.block),b.beforeOpen(b,a),a.trigger("beforeOpen"),"hidden"!=b.wrap.css("overflow")){b.wrap.data("arcticmodalOverflow",b.wrap.css("overflow"));var c=b.wrap.outerWidth(!0);b.wrap.css("overflow","hidden");var d=b.wrap.outerWidth(!0);d!=c&&b.wrap.css("marginRight",d-c+"px")}return p.not(a).each(function(){var a=n(this).data("arcticmodal");a.overlay.block.hide()}),q.transition(b.overlay.block,"show",1*")),b.overlay.block.remove(),b.container.block.remove(),a.data("arcticmodal",null),n(".arcticmodal-container").length||(b.wrap.data("arcticmodalOverflow")&&b.wrap.css("overflow",b.wrap.data("arcticmodalOverflow")),b.wrap.css("marginRight",0))}),"ajax"==b.type&&b.ajax_request.abort(),p=p.not(a))})},setDefault:function(b){n.extend(!0,a,b)}};n(function(){a.wrap=n(document.all&&!document.querySelector?"html":"body")}),n(document).bind("keyup.arcticmodal",function(d){var a=p.last();if(a.length){var b=a.data("arcticmodal");b.closeOnEsc&&27===d.keyCode&&a.arcticmodal("close")}}),n.arcticmodal=n.fn.arcticmodal=function(a){return e[a]?e[a].apply(this,Array.prototype.slice.call(arguments,1)):"object"!=typeof a&&a?void n.error("jquery.arcticmodal: Method "+a+" does not exist"):q.init.apply(this,arguments)}}(jQuery)}var debugMode="undefined"!=typeof debugFlatPM&&debugFlatPM,duplicateMode="undefined"!=typeof duplicateFlatPM&&duplicateFlatPM,countMode="undefined"!=typeof countFlatPM&&countFlatPM;document["wri"+"te"]=function(a){let b=document.createElement("div");jQuery(document.currentScript).after(b),flatPM_setHTML(b,a),jQuery(b).contents().unwrap()};function flatPM_sticky(c,d,e=0){function f(){if(null==a){let b=getComputedStyle(g,""),c="";for(let a=0;a=b.top-h?b.top-h{const d=c.split("=");return d[0]===a?decodeURIComponent(d[1]):b},""),c=""==b?void 0:b;return c}function flatPM_testCookie(){let a="test_56445";try{return localStorage.setItem(a,a),localStorage.removeItem(a),!0}catch(a){return!1}}function flatPM_grep(a,b,c){return jQuery.grep(a,(a,d)=>c?d==b:0==(d+1)%b)}function flatPM_random(a,b){return Math.floor(Math.random()*(b-a+1))+a}