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