Как включить шину данных can

Использование шины CAN: как программно управлять автомобилем

Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.

Как включить шину данных can

Автор: Ariel Nuñez
Изменение температуры кондиционера Ford Fusion при помощи команд через шину CAN.
Как включить шину данных can
Рисунок 1: Как при помощи приложения управлять ключевыми функциями автомобиля?
Недавно я вместе со своими друзьями из компании Voyage работал над реализацией программного управления системой кондиционирования в Ford Fusion. На данный момент Voyage занимается разработкой бюджетных самоуправляемых автомобилей. Конечная цель: чтобы каждый смог вызвать автомобиль к своей входной двери и безопасно путешествовать туда, куда вздумается. В компании Voyage считают крайне важной возможностью предоставление доступа к ключевым функциям автомобиля с заднего кресла, поскольку не за горами тот день, когда работа водителя будет полностью автоматизирована.
Зачем нужна шина CAN
Современные автомобили используют множество систем управления, которые во многих случаях функционируют подобно микро-службам в веб-разработке. Например, подушки безопасности, тормозные системы, регулирование скорости движения (круиз контроль), электроусилитель руля, аудиосистемы, управление окнами и дверями, подстройка стекл, системы зарядки для электрических автомобилей и т. д. Эти системы должны уметь осуществлять коммуникацию и считывать параметры друг друга. В 1983 в компании Bosch началась разработка шины CAN (Controller Area Network; Локальная сеть контролеров) для решения этой сложной задачи.
Можно сказать, что шина CAN представляет собой простую сеть, где каждая система автомобиля может считывать и отсылать команды. Эта шина интегрируется все сложные компоненты элегантным образом, что дает возможность реализовать всеми любимые функции автомобиля, которыми мы пользуемся.
Как включить шину данных can
Рисунок 2: Впервые шина CAN стала использоваться в 1988 году в БМВ 8 серии
Самоуправляемые автомобили и шина CAN
Поскольку интерес к разработке самоуправляемых автомобилей серьезно вырос, соответственно, словосочетание «шина CAN» также становится популярным. Почему? Большинство компаний, создающих самоуправляемых автомобилей, не занимаются производством с нуля, а пытаются научиться программно управлять машинами после выхода с конвейера фабрики.
Понимание внутреннего устройства шины CAN, используемой в автомобиле, позволяет инженеру формировать команды при помощи программного обеспечения. Самые нужные команды, как вы можете догадаться, связаны с управлением рулем, ускорением и торможением.

Как включить шину данных can

Рисунок 3: Введение в LIDAR (ключевой сенсор самоуправляемого автомобиля)
При помощи сенсоров наподобие LIDAR (light detecting and ranging; оптическая локационная система) машина способна смотреть на мир как суперчеловек. Затем компьютер внутри автомобиля на базе полученной информации принимает решения и посылается команды в шину CAN для управления рулем, ускорение и торможением.
Не каждый автомобиль способен стать самоуправляемым. И по некоторым причинам компания Voyage выбрала модель Ford Fusion (подробнее о причинах можно почитать в этой статье).
Исследование шины CAN в Ford Fusion
Перед началом исследования систем кондиционирования воздуха в Ford Fusion я открыл мою любимую книгу The Car Hacker’s Handbook. Перед погружением в суть вопроса заглянем в Главу 2, где описываются три важные концепции: протоколы шины, шина CAN и CAN-фреймы.
Шина CAN
Шина CAN начала использоваться в американских легковых машинах и небольших грузовиках с 1994 года и с 2008 года в обязательном порядке (в европейских автомобилях с 2001 года). В этой шине предусмотрено два провода: CAN high (CANH) и CAN low (CANL). Шина CAN использует дифференциальный сигналинг, суть которого заключается в том, что при поступлении сигнала на одном проводе вольтаж повышается, а на другом понижается на одну и ту же величину. Дифференциальный сигналинг используется в средах, которые должны быть малочувствительны к шуму, например, в автомобильных системах или при производстве.

Рисунок 4: Необработанный сигнал шины CAN, отображаемый на осциллографе
С другой стороны, пакеты, передаваемые по шине CAN, не стандартизированы. Каждый пакет содержит 4 ключевых элемента:

  • АрбитражныйID (ArbitrationID) представляет собой широковещательно сообщение, идентифицирующее устройство, которое пытается начать коммуникацию. Любое устройство может отсылать несколько арбитражных ID. Если в единицу времени по шине отсылаются два CAN-пакета, пропускается тот, у которого ниже арбитражный ID.
  • Расширение идентификатора (Identifierextension;IDE) – в случае с шиной CAN стандартной конфигурации этот бит всегда равен 0.
  • Код длины данных (Datalengthcode;DLC) определяет размер данных, который варьируется от 0 до 8 байт.
  • Данные. Максимальный размер данных, переносимых стандартной шиной CAN, может быть до 8 байт. В некоторых системах происходит принудительное дополнение пакета до размера 8 байт.

Как включить шину данных can
Рисунок 5: Формат стандартных CAN-пакетов
CAN фреймы
Для того чтобы включить / выключить климатическую систему мы должны найти нужную шину CAN (в автомобиле таких шин несколько). В Ford Fusion есть как минимум 4 задокументированные шины. 3 шины работают на высокой скорости 500 кбит/с (High Speed CAN; HS) и 1 шина на средней скорости 125 кбит/с (Medium Speed CAN; MS).
К порту OBD-II подключено две высокоскоростные шины HS1 и HS2, однако там стоит защита, которая не позволяет подделывать команды. Вместе с Аланом из компании Voyage мы вынули порт OBD-II и нашли места соединения со всеми шинами (HS1, HS2, HS3 и MS). На задней стенке OBD-II все шины подключались к модулю шлюза (Gateway Module).
Как включить шину данных can
Рисунок 6: Homer – первое самоуправляемое такси от компании Voyage
Поскольку климатическая система управляется через медиа-интерфейс (SYNC), нам придется отсылать команды через среднескоростную шину (MS).
Чтение и запись CAN-пакетов осуществляется при помощи драйвера и сетевого стека SocketCAN, созданного исследовательским отделом компании Volkswagen для ядра в Linux.
Мы будем подсоединять три провода от машины (GND, MSCANH, MSCANL) к переходнику Kvaser Leaf Light HSv2 (можно купить за 300$ на Амазоне) или к CANable (продается за 25$ на Tindie) и загружать на компьютере со свежим Linux-ядром шину CAN в качестве сетевого устройства.

После загрузки запускаем команду candump can0 и начинаем отслеживать трафик:

Несмотря на то, что вышеуказанная информация эквивалентна амплитуде звукового сигнала, довольно трудно понять, что происходит, и обнаружить какие-либо закономерности. Нам нужно нечто похожее на частотный анализатор, и такой эквивалент есть в виде утилиты cansniffer. Cansniffer показывает список идентификаторов и позволяет отслеживать изменения в секции данных внутри CAN-фрейма. По мере того как мы будем изучать определенные идентификаторы, мы можем установить фильтр нужных ID, которые имеют отношение к нашей задаче.
На рисунке ниже показан пример информации, снятой при помощи cansniffer с шины MS. Мы отфильтровали все, что имеет отношение к идентификаторам 355, 356 и 358. После нажатия и отпускания кнопок, связанных с подстройкой температуры, в самом конце появляется значение 001C00000000.

Рисунок 7: Информация с шины MS, снятая при помощи утилиты cansniffer
Далее необходимо объединить функционал для управления климатической системой с компьютером, работающим внутри автомобиля. Компьютер работает на операционной системе ROS (Robot Operating System; Операционная система для роботов). Поскольку мы используем SocketCAN, то модуль socketcan_bridge серьезно упрощает задачу по преобразованию CAN-фрейма в блок информации, понимаемый операционной системой ROS.
Ниже показан пример алгоритма декодирования:

Полученные данные хранятся в CelsiusReport.msg:

После нажатия всех нужных кнопок в машине, у нас появляется следующий список:

Читайте также: Ремонт грузовой бескамерной шины жгутом

Затем эти строки отсылаются на узел под управлением операционной системы ROS и далее происходит трансляция в коды, понимаемые автомобилем:

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

Рисунок 8: Удаленное управление климатической системой автомобиля
Это лишь небольшой шаг при создании самоуправляемого такси вместе со специалистами компании Voyage. Я получил массу положительных эмоций во время работы над этим проектом. Если вы тоже интересуетесь этой темой, можете ознакомиться со списком вакансий в компании Voyage.

Видео:CAN шина👏 Как это работаетСкачать

CAN шина👏 Как это работает

Сделаем мир удобнее. —>

Видео:Кан шина, что это? Поймет школьник! принцип работыСкачать

Кан шина, что это? Поймет школьник! принцип работы

STM32. Реализация протокола CAN на базе МК STM32F103

По реализации работы CAN протокола на МК STM32 публикаций в интернете достаточно много. Но довольно тяжело настроить готовый код под свое устройство, особенно если пытаемся это сделать впервые.

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

Физическая связь

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

Большинство контроллеров семейства STM32 имеют одно или несколько модулей CAN. Каждый порт — это две ножки: TX — для передачи данных и RX — для приема данных с шины. CAN-порт для удобства можно перенаправить на другие ножки контроллера, это может облегчить разводку платы. Например в stm32f103c8 «по умолчанию» это пины PA11 (CAN_RX) и PA12 (CAN_TX), но их можно перенаправить на пины PB8 и PB9 соответственно.

Для связи микроконтроллера с шиной недостаточно настроить ножки и подцепить их к CAN — в лучше случае может выгореть порт контроллера, а в худшем и все наше устройство целиком. Для подсоединения контроллера к шине требуется еще один электронный компонент — приемопередатчик физического уровня сети (трансивер), как правило -это 8-ми контактная микросхема в корпусе SOIC-8 или DIP-8. также встречаются в корпусах SOT23-8 и SOIC-14, но намного реже.

Трансивер в виде отдельной микросхемы является необходимостью. Объясняется это, прежде всего, высокими требованиями к его надежности и рабочим характеристикам, поскольку работает он с цепями, физически выходящими за пределы устройства (в данном случае это сама шина CAN). А условия, в которых находятся эти цепи, зачастую не определены: например, сильные магнитные поля или пролегающие рядом силовые высоковольтные цепи. Более того, при необходимости гальванической развязки ее удобнее всего осуществлять именно между трансивером и контроллером CAN-сети.

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

Программная часть

Поняв как это все работает физически, приступим к рассмотрению программной части.

Программную часть можно разделить на несколько частей:

Настройка порта и инициализация CAN шины;
• Настройка фильтрации сообщений;
• Прием сообщений;
• Передача сообщений.

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

Разберем теперь каждый этап подробнее.

Настройка порта

Приведу пример настройки портов и инициализации CAN шины в микроконтроллере STM32F103

В определениях сразу предусмотрим возможность переопределения портов обмена с CAN шиной. Если нам не нужен ремап, то строка «#define CAN1_ReMap» должна быть закомментирована, а если же мы используем переадресацию, то просто раскомментируем эту строку и CAN будет настроен на работу через порт GPIOB на пинах PB8 и PB9.

Следует обратить внимание на то, что если в Вашем микроконтроллере несколько CAN устройств, то настройка переадресации, как и настройка CAN в целом, может немного отличаться.

Далее в процедуре инициализации мы включаем тактирование альтернативных функций, CAN-шины и порта, на котором будет «висеть» наша шина, иначе у нас ничего не заработает, так как контроллер не будет знать, что эту периферию нужно активировать.

Затем настраиваем ножки контроллера:

Для CAN RX настраиваем режим работы как GPIO_Mode_IPU — вход с подтяжкой к питанию,
а для CAN TX настраиваем режим работы как GPIO_Mode_AF_PP — выход с двумя состояниями (Push-Pull) для альтернативных функций.

Если у нас включена переадресация, то компилятор добавит в код еще и команду ремапинга портов шины.

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

Инициализация CAN

Определяем структуру описания CAN, затем «отключаем» его для настройки.

Нам необходимо задать несколько параметров протокола, а также режим работы и тайминги.

Здесь мы немного подробнее рассмотрим настройки инициализации.

Начнем с параметров работы CAN:

ПараметрРасшифровкаПояснение
CAN_TTCMEnable or disable the time triggered communication mode.
Включение или отключение режима Time Triggered Mode.

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

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

Если же «CAN_NART» выключен, то при включенном параметре «CAN_ABOM» будет предпринято всего 128 попыток передать пакет, а потом микроконтроллер отключит модуль Can (если Вы не будете обрабатывать ошибки и сбрасывать счетчики ошибок). При выключенном «CAN_ABOM» автоматического отключения модуля Can не произойдет.

Если же устройство не будет получать подтверждение о получении пакетов, то осциллограф нарисует «расческу», так как устройство будет бесконечно пытаться передать пакеты, пока не получит подтверждения.

Следующий параметр CAN_Mode определяет в каком режиме контроллер будет работать с CAN-шиной:

Повторюсь, если Вы только начинаете работать с CAN и у Вас нет готового устройства с трансивером, Вы можете научится работать с шиной на любой отладочной плате с микроконтроллером STM32, который поддерживает CAN. Для этого достаточно выбрать при настройке режим работы CAN_Mode_Silent_LoopBack или CAN_Mode_LoopBack. В этих режимах Вы сможете отправлять пакеты данных и принимать их же на одном устройстве.

Настройка таймингов

Синхронизация и тайминги в CAN — отдельный, важный и сложный вопрос. Однако, благодаря сложности и продуманности становится не так важна возможная рассинхронизация и нестабильность тактовых частот узлов сети, и связь становится возможной даже в тяжёлых условиях.

Вкратце разберем как выглядит передача одного бита информации при передаче сообщения в CAN шине.

Как включить шину данных can

Всё время делится на кванты длиной t_q, и номинальная длительность бита равна 1+BS1+BS2 квантов. Захват значения бита происходит на границе BS1 и BS2. В процессе приёма приёмник определяет, в какой из временных периодов произошёл перепад сигнала (т.е. начало приёма нового бита). В норме перепад должен произойти на границе SYNC и BS1, если он произошёл раньше — контроллер уменьшает BS1, если позже — увеличивает BS2 на величину SJW (от 1 до 4 квантов времени). Таким образом, происходит постоянная пересинхронизация с частотой других приёмников.

В нашем примере мы настраиваем тайминги с учетом того, что перефирия настроена на частоту 8MHz. С помощью калькулятора таймингов, выбираем оптимальные под нашу шину и микроконтроллер.

Скорость шины настраивается с помощью прескалера. При указанных параметрах тайминга и CAN_Prescaler равным 50 — скорости передачи по шине составит 10 Кбит.

Для изменения скорости передачи, в нашем примере достаточно изменить CAN_Prescaler, например при значении равном «1», скорость передачи составит 500 Кбит, при «2» — 250 Кбит, ну и так далее. В примере кода, предоставленном во вложении к данной статье, расписаны все значения CAN_Prescaler, доступные для данного проекта. В принципе можно добится скорости вплоть до 1 Мбита.

За настройку таймингов при инициализации CAN устройства отвечают четыре параметра:

ПараметрРасшифровкаПояснение
CAN_SJWРазмер SJWSJW (reSynchronization Jump Width) определяет максимальное количество квантов времени, на которое может быть увеличено или уменьшено количество квантов времени битовых сегментов. Возможные значения этого показателя от 1-го до 4-х квантов.
CAN_BS1Длина сегмента фазы 1BS1 (Bit Segment 1) — определяет местоположение точки захвата (Sample Point). Он включает в себя Prop_Seg и PHASE_SEG1 стандарта CAN. Его продолжительность программируется от 1 до 16 квантов времени.
CAN_BS2Длина сегмента фазы 2BS2 (Bit Segment 2) — определяет местоположение точки передачи. Он представляет собой PHASE_SEG2 стандарта CAN. Его продолжительность программируется от 1 до 8 квантов времени.
CAN_PrescalerМножительМножитель, из значения которого рассчитывается размер кванта времени. Рассчитывается исходя от частоты работы периферии микроконтроллера.
Важно не путать с частотой работы самого контроллера!

Для тестирования достаточно будет использовать параметры настройки таймингов, предложеные в примере. Более подробно о том что такое тайминги, а также как их правильно выставить описано в отдельной статье (STM32. Настройка таймингов работы CAN).

Настройка фильтрации пакетов CAN

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

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

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

Настройка прерываний на прием сообщений CAN

С прерываниями дела обстоят ни чуть не сложнее, чем со структурой инициализации. Для начала надо настроить и проинициализировать контроллер прерываний (NVIC — Nested vectored interrupt controller). В архитектуре STM32 каждому прерыванию можно выставить свой приоритет для случаев, когда возникает несколько прерываний одновременно. Поэтому NVIC представляет нам несколько вариантов формирования приоритетных групп. Я не буду вдаваться в подробности, в нашем случае это не актуально, так как у нас на данный момент настроено лишь одно прерывание на обработку пакетов CAN/

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

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

В параметре «NVIC_IRQChannel» мы указываем, какое именно прерывание мы инициализируем. Константа «USB_LP_CAN1_RX0_IRQn» обозначает канал, отвечающий за прерывания, связанные с CAN1. Найдя ее определение в файле stm32f10x.h, вы увидите еще множество констант (ADC1_IRQn, TIM1_TRG_COM_TIM17_IRQn и др.), обозначающих прерывания от других периферийных устройств.

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

Последняя строка, собственно, включает использование прерывания.

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

Получение данных из шины

Для получения данных из шины CAN используется прерывание.

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

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

Рассмотрим вариант обработки прерывания на основе тестового сообщения сети. Идентификаторы команд указаны в заголовочном файле can.h (во вложении к статье). Но Вы можете использовать и любые свои.

Для начала мы объявляем переменную и заполняем ее нулями. Если этого не сделать, то сообщение будет заполнено «мусором», что может нам несколько усложнить жизнь в случае появления ошибок.

После этого проверяем статус нашего почтового ящика и, если есть сообщения, обработаем их.

Затем проверим формат кадра: Если стандартный, то проверяем параметр «StdID», но а если расширенный, то данные команды будут в параметре «ExtId».

После получения тестового сообщения, мы в ответ отсылаем подтверждение получения.

Здесь мы не рассматриваем передачу блока данных (но в тестовом сообщении мы их передавали). Для проверки наличия данных в пакете, необходимо проверить параметр сообщения «DLC», если его значение больше нуля, то мы можем получить ровно столько байт, сколько указано в этом параметре. данные хранятся в массиве «Data[0..7]».

Отправка данных в шину

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

Здесь все просто: объявляем переменную TxMessage, заполняем данные для отправки и выполняем команду передачи данных в шину.

Теперь немного подробнее о параметрах сообщения:

ПараметрРасшифровкаПояснение
StdIdСообщение стандартного кадраСтандартная команда, которую мы передаем в шину. Длина команды не может превышать 11 бит.

Хочется еще раз обратить внимание на параметр формата кадра «IDE». Если мы выбираем «CAN_Id_Standard», то заполнять должны параметр»StdId», а «ExtId» — должен быть равен нулю. Соответственно если выбираем «CAN_Id_Extended» , то обнуляем «StdId», а заполняем «ExtId» .

Стандартный формат кадра имеет длину в 44 бита, а формат расширенного кадра — 64 бита. Но полезная нагрузка одного пакета выше у расширенного, так как на 64 бита он имеет 29 бит полезной информации, а в стандартном на 44 бита всего 11 бит полезной нагрузки.

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

Поиск ошибок

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

В обычном режиме — желательно иметь под рукой осциллограф, так как достаточно сложно без него определить откуда вылезла ошибка — железо или код. Также стоит обратить внимание на устройство, на котором выполняется тестирование: Если это STM Discovery, то есть вероятность того, что на пинах CAN висит дополнительная обвязка отладочной платы, которая может искажать обмен данных с трансивером. Лучше всего использовать отладочные платы с минимальным «обвесом».

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

Для своих сетей Вы можете настраивать тайминги на свой вкус и требования «скоростного режима», главное не отходить от стандарта и следить, чтобы на всех устройствах тайминги были одинаковыми.

Заключение

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

Во вложениях к статье приведен полный код программы, рассматриваемый в статье. Код протестирован в режимах Silent_LoopBack и Normal — полностью рабочий.

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

  • Свежие записи
    • Нужно ли менять пружины при замене амортизаторов
    • Скрипят амортизаторы на машине что делать
    • Из чего состоит стойка амортизатора передняя
    • Чем стянуть пружину амортизатора без стяжек
    • Для чего нужны амортизаторы в автомобиле


    📸 Видео

    Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.Скачать

    Простая проверка CAN шины. Сканер не видит автомобиль через OBD2. Как правильно выбрать изоленту.

    Как проверить CAN шину Используем симулятор ElectudeСкачать

    Как проверить CAN шину  Используем симулятор Electude

    поиск нерабочей can шины, часть дваСкачать

    поиск нерабочей can шины, часть два

    Экспресс диагностика CAN шины на автомобиле. №21Скачать

    Экспресс диагностика CAN шины на автомобиле. №21

    Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus networkСкачать

    Как работает LIN шина автомобиля. K-Line L-Line шины данных. Лин шина автомобиля. Lin-bus network

    CAN шина на осциллографе FINIRSI ADS1013DСкачать

    CAN шина на осциллографе FINIRSI ADS1013D

    CAN шина в Глонасс мониторингеСкачать

    CAN шина в Глонасс мониторинге

    #10. Как отправлять сообщения и команды в CAN-шину для управления автомобилем?Скачать

    #10. Как отправлять сообщения и команды в CAN-шину для управления автомобилем?

    Поиск неисправности в шине CAN мультиметром. Suzuki Grand Vitara. U1073, P1674, B1553.Скачать

    Поиск неисправности в шине CAN мультиметром. Suzuki Grand Vitara. U1073, P1674, B1553.

    лекция 403 CAN шина- введениеСкачать

    лекция 403  CAN шина- введение

    С чего начать ремонт ЭБУ: Типы шин данных, CANСкачать

    С чего начать ремонт ЭБУ: Типы шин данных,  CAN

    Как управлять автомобилем через CAN-шину?Скачать

    Как управлять автомобилем через CAN-шину?

    CAN-шина, простой поиск данных в кан шине автомобиля. Как расшифровать и найти данные в кан шине?Скачать

    CAN-шина, простой поиск данных в кан шине автомобиля. Как расшифровать и найти данные в кан шине?

    MCP2515, контроллер CAN шины с интерфейсом SPIСкачать

    MCP2515, контроллер CAN шины с интерфейсом SPI

    Блокировка can-шины в фаре Toyota/Lexus. Шок для опытных установщиков. Зачем думать и читать схемыСкачать

    Блокировка can-шины в фаре Toyota/Lexus. Шок для опытных установщиков. Зачем думать и читать схемы

    Урок №18. Цифровые интерфейсы современного автомобиля: шины данных CAN и LINСкачать

    Урок №18. Цифровые интерфейсы современного автомобиля: шины данных CAN и LIN

    Сканер не подключается: поиск неисправности CAN шины (видео 57)Скачать

    Сканер не подключается: поиск неисправности CAN шины (видео 57)

    Подробно про CAN шинуСкачать

    Подробно про CAN шину
Поделиться или сохранить к себе:
Технарь знаток