Настройка таймингов работы CAN шины является одним из наиболее важных моментов в настройке bxCan. Если ошибиться, то устройство может оказаться полностью работоспособным в режиме отладки и отказаться работать при подключении к рабочей шине CAN.
Наверное больше всего возникает вопросов в том, что же это такое и как правильно эти тайминги настроить.
Опять теория
Напомню, что протокол CAN (Controller Area Network) — представляет собой асинхронную последовательную шину с битовым кодирование NRZ (Non Return to Zero), разработанную для быстрой и надежной связи в жестких условиях, такие как автомобильные или промышленные сети. Протокол CAN позволяет программно настраивать скорость передачи данных в широком диапазоне (до 1 Мбита). Для того, чтобы работа CAN шины была стабильной, необходимо правильно указать параметры настройки синхронизации и временных интервалов (таймингов).
Видео:CAN шина👏 Как это работаетСкачать
Синхронизация и тайминги в CAN — важный и сложный вопрос, но благодаря сложности и продуманности становится не так важна возможная рассинхронизация и нестабильность тактовых частот узлов сети, а связь становится возможной даже в сложных условиях, когда на линию могут воздействовать различные помехи.
Так давайте же разберемся в этом подробнее:
Механизм синхронизации битов контролирует шину и выполняет выборку и корректировку точек захвата бита (Sample Point) путем синхронизации при начале передаче бита и ресинхронизации при прекращении передачи этого бита.
Видео:Настройка приема данных из шины CAN в контроллерах АвтоГРАФ-GXСкачать
Этот процесс можно объяснить путем простого деления номинального времени передачи бита на три сегмента:
• Сегмент синхронизации (SYNC_SEG): изменение бита, как ожидается, произойдет в течение этого отрезка времени. Он имеет фиксированную длину одного кванта времени (1 х tq).
• Сегмент фазы 1 (BS1): определяет местоположение точки захвата (Sample Point). Он включает в себя Prop_Seg и PHASE_SEG1 стандарта CAN. Его продолжительность программируется от 1 до 16 квантов времени, но может быть автоматически увеличена для компенсации положительной фазы дрейфов из-за различий в частоте работы на различных узлах сети.
• Сегмент фазы 2 (BS2): определяет местоположение точки передачи. Он представляет собой PHASE_SEG2 стандарта CAN. Его продолжительность программируется от 1 до 8 квантов времени, но также может быть автоматически изменена в сторону уменьшения для компенсации отрицательной фазы заносов.
Ширина перехода ресинхронизации (SJW — reSynchronization Jump Width) определяет максимальное количество квантов времени, на которое может быть увеличено или уменьшено количество квантов времени битовых сегментов. Возможные значения этого показателя составляют от 1-го до 4-х квантов.
Начало передачи определяется в момент первого перехода шины из доминантного в рецессивное состояние, при условии что сам контроллер не посылает рецессивный бит.
Видео:Настройка шины CAN по событиюСкачать
Если этот переход обнаружен в сегменте BS1 вместо сегмента Sync_Seg, то сегмент BS1 продлевается таким образом, чтобы достичь точки захвата бита путем увеличения длительности сегментов на значение SJW. И наоборот, если переход обнаружен в сегменте BS2 вместо Sync_Seg, то BS2 укорачивается так, чтобы точка захвата сформировалась раньше. Таким образом происходит постоянная пересинхронизация с целью синхронизации с другими узлами шины. (Забавно звучит ? )
Согласно стандарту CAN, оптимальный момент времени для Sample Point составляет 87.5% от номинальной длительности передачи бита.
Расчет временных интервалов и регистры, в которых они хранятся — приведен на рисунке 2.
APB Clock — это частота, с которой работает периферия микроконтроллера. Она настраивается при запуске программы на микроконтроллере, но об этом ниже.
Видео:STM32 настройка CANСкачать
Стоит заметить, что для предотвращения ошибок программирования, конфигурация регистра CAN_BTR (Bit Timing Register) возможна только тогда, когда bxCan находится в режиме ожидания.
Теперь, когда Вы это все прочитали и половину не поняли, опишу простыми словами (далее цитата с одного из форумов, очень понравилась :)) :
Бит поделен на сегменты, каждый сегмент состоит из квантов, кол-во которых вы настраиваете:
• Сегмент синхронизации — по нему идет синхронизация с шиной, для длинных шин с заваленными фронтами его делают чуть шире.
• Сегмент фазы 1 (BS1) — это кванты, которые аппаратная часть выжидает, прежде чем сделать захват состояния шины.
• Сегмент фазы 2 (BS2) — это кванты, которые пройдут прежде, чем начнется прием нового бита.
Видео:Экспресс диагностика CAN шины на автомобиле. №21Скачать
Сумма этих квантов * период кванта = периоду бита выбранной скорости.
BS1 и BS2 в разных узлах сети могут быть разные, это зависит еще от частоты микроконтроллера, аппаратными средствами может изменяться на величину SJW.
Реализация
Разобравшись с теорией, приступим к реализации.
Тактирование
Рассмотрим все на примере STM32F103C8 в CooCox CoIDE.
Видео:STM32 CAN шина. Часть 1. Настройка и странности HALСкачать
💥 Видео
Видеоинструкция по настройке CAN шины сигнализации с помощью приложение StarLine Master с телефона.Скачать
Как создавать датчики на основании параметров с CAN-шины. Какой параметр за что отвечает?Скачать
MCP2515, контроллер CAN шины с интерфейсом SPIСкачать
Как удаленно настроить передачу параметров с CAN-шины на сервер мониторингаСкачать
Can Bus - что это такое ? Зачем нужен ? Как настроить ?Скачать
#8. Как найти параметр пробега в CAN-шине?Скачать
лекция 403 CAN шина- введениеСкачать
Инструменты анализа и отображения данных шины CAN J1939. Вебинар Технотон. 16.04.2020Скачать
поиск нерабочей can шины, часть дваСкачать
CAN Считывание и определение данных уровня топлива из CAN шиныСкачать
Кан шина, что это? Поймет школьник! принцип работыСкачать
АЗЫ ДИАГНОСТИКИ. Шины передачи данных. Часть 6. Диагностика шины CAN.Скачать
Демонстрация управления системой с использованием шины CANСкачать
Вебинар: Как найти любые данные из CAN-шины любого автомобиля?Скачать