Тип выходного кадра стандартный кадр или расширенный кадр из сообщения CAN || удаленный кадр или кадр данных

Оглавление

Для чего нужна CAN-шина?

Весь канальный уровень в CAN обрабатывает поток данных.

Президент автобуса в шине CAN

ISO 11898 (высокая скорость)

Кадр данных в шине CAN

Рамка дистанционного управления CAN-шиной

Кадр ошибки CAN-шины

Кадр перегрузки шины CAN

Битовая синхронизация в CAN

Жесткая синхронизация в CAN

Ресинхронизация в CAN

Реализация вывода кода типа кадра из CAN-сообщения


Шина CAN — это аббревиатура от Controller Area Network , которая является стандартом для локальной сети контроллеров.

Ниже приведены некоторые важные сведения о шине CAN :

  1. Шина CAN представляет собой протокол последовательной связи, который может осуществлять распределенное управление в реальном времени.
  2. Скорость передачи данных по шине CAN может достигать 1 Мбит/с, а расстояние связи может достигать 10 км.
  3. Шина CAN использует технологию неразрушающего арбитража, чтобы гарантировать, что, когда несколько узлов отправляют данные одновременно, узел с низким приоритетом активно прекращает отправку, чтобы избежать конфликтов данных.
  4. Шина CAN использует технологию проверки CRC для обеспечения надежности передачи данных.
  5. Шина CAN поддерживает стандартный формат и расширенный формат, биты идентификатора стандартного формата - 11 бит, а биты идентификатора расширенного формата - 29 бит.
  6. Шина CAN использует режим синхронного перехода, который обеспечивает высокую скорость передачи данных и низкое энергопотребление.
  7. Шина CAN может использовать структуру с несколькими ведущими, несколько узлов могут отправлять данные одновременно, а порядок передачи данных также может контролироваться приоритетом узла.
  8. Шина CAN может быть интегрирована с другими сетями для реализации распределенного управления и мониторинга.

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

Для чего нужна CAN -шина?


Шина CAN представляет собой мощную конструкцию автомобильной шины , которая позволяет стандартным микроконтроллерам и устройствам обмениваться данными без приложений друг друга. Это протокол на основе сообщений, первоначально разработанный для многоканальной электропроводки в автомобилях для экономии медных проводов, но его можно использовать и во многих других средах. Шина CAN широко используется в промышленной автоматизации, кораблях, медицинском оборудовании, промышленном оборудовании и других областях для обеспечения связи на короткие расстояния с большими объемами данных или на большие расстояния с небольшими объемами данных и имеет относительно высокие требования к реальному времени, мультимастер и multi-slave или каждый узел одинаково используется в поле.

К особенностям шины CAN относятся:

  1. В передаче данных нет различия между ведущим и подчиненным.Любой узел может инициировать передачу данных любому другому (одному или нескольким) узлам, а порядок связи определяется приоритетом информации каждого узла.
  2. Когда несколько узлов инициируют связь одновременно, узлы с более низким приоритетом избегают узлов с более высоким приоритетом, что не приведет к перегрузке линии связи.
  3. Расстояние связи может достигать 10 км (скорость менее 5 Кбит/с), а скорость может достигать 1 Мбит/с (расстояние связи менее 40 м).
  4. Средой передачи по шине CAN может быть витая пара, коаксиальный кабель.

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

Весь канальный уровень в CAN обрабатывает поток данных.


Шина CAN ( локальная сеть контроллеров ) является стандартом для локальных сетей контроллеров. Весь поток данных обработки канального уровня CAN включает следующие этапы:

  1. Кодирование сегмента данных: кодируйте данные приложения в сегменты данных (сегмент данных). Сегмент данных состоит из байтов данных и битов запроса удаленной передачи (RTR). Байт данных может состоять из 8 или 16 бит, а бит RTR указывает, является ли это кадром данных или кадром дистанционного управления.
  2. Кодирование типа кадра: закодируйте сегмент данных и тип кадра (запрос удаленной передачи, данные, ошибка, перегрузка) вместе в формат кадра (формат кадра).
  3. Приоритетное кодирование: закодируйте тип кадра и приоритет (0-15) вместе в приоритетный сегмент.
  4. Кодирование поля арбитража: закодируйте поле приоритета и идентификатор (идентификатор) в поле арбитража (поле арбитража).
  5. Кодирование поля данных: закодируйте сегмент данных и зарезервированный бит (зарезервированный бит) вместе в поле данных (поле данных).
  6. Кодирование поля проверки: закодируйте поле проверки (поле CRC) и поле ответа (поле ACK) вместе в поле проверки (поле контрольной суммы).
  7. Передача кадра: Отправьте весь кадр CAN (включая начало кадра, поле арбитража, поле данных, поле проверки и конец кадра) на шину CAN.
  8. Обнаружение и обработка ошибок: после того, как принимающий узел получит кадр CAN, он выполнит обнаружение и обработку ошибок. Если обнаружена ошибка, принимающий узел отправит на шину флаг ошибки (Error Flag), чтобы уведомить отправляющий узел о повторной отправке данных.
  9. Прием и обработка данных: после получения правильного кадра CAN принимающий узел декодирует его в данные приложения и соответствующим образом обрабатывает.

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

Президент автобуса в шине CAN


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

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

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

ISO 11898 (высокая скорость)


ISO 11898 — это стандарт протокола связи для информационных систем дорожного движения. Стандарт определяет два режима связи, а именно высокоскоростной ( High speed ) режим и низкоскоростной ( Low speed ) режим.

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

Протокол связи в низкоскоростном режиме в основном используется для связи на большие расстояния, например, для связи между транспортными средствами. В этом режиме скорость связи низкая, до 125 Кбит/с , а расстояние связи до 10 км . Протокол связи в низкоскоростном режиме также использует протокол шины CAN , но для снижения энергопотребления и стоимости некоторые функции протокола шины CAN упрощены или опущены.

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

Кадр данных в шине CAN


Кадр данных в шине CAN является базовой единицей для передачи данных. Фрейм данных состоит из семи сегментов, в том числе:

  1. Начало кадра: Указывает начало кадра данных, обозначенное доминирующим уровнем 1 бит .
  2. Секция арбитража: указывает приоритет кадра, включая биты идентификатора и биты запроса удаленной передачи. Бит идентификатора представляет собой 11-битный функциональный адрес, и приемник CAN фильтрует кадры данных через идентификатор. Бит запроса удаленной передачи (RTR) указывает, является ли кадр удаленным кадром или кадром данных.
  3. Сегмент управления: Сегмент, указывающий количество байтов данных и зарезервированных битов, состоящий из 6 бит, указывающий количество байтов сегмента данных.
  4. Сегмент данных: Содержит фактические данные для передачи, может быть отправлено до 8 байт.
  5. Раздел CRC: проверьте ошибку передачи кадра и используйте 16-битный CRC для проверки.
  6. Сегмент ACK: Указывает подтверждение нормального приема, состоящее из 2 бит.
  7. Конец кадра: Указывает конец кадра данных, обозначенный рецессивным уровнем 7 бит .

В шине CAN существует два формата кадров данных : стандартный формат и расширенный формат. Стандартный формат имеет 11 бит идентификатора , а расширенный формат имеет 29 бит идентификатора. В стандартном формате бит старшего веса ( MSB ) бита идентификатора находится в ID10 , бит младшего веса ( LSB ) находится в ID0 и передается в порядке ID10~ID0 . В расширенном формате бит старшего веса ( MSB ) бита идентификатора находится в ID28 , а бит младшего веса ( LSB ) находится в ID0 и передается в порядке ID28~ID0 .

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

Рамка дистанционного управления CAN- шиной


Фрейм дистанционного управления шины CAN — это кадр, используемый принимающим устройством для запроса данных от передающего устройства. Кадр удаленного управления состоит из 6 сегментов, включая начало кадра, сегмент арбитража, сегмент управления, сегмент CRC , сегмент ACK и конец кадра.

Состав рамки пульта дистанционного управления следующий:

  1. Начало кадра: Указывает начало кадра дистанционного управления, на что указывает доминирующий уровень 1 бит .
  2. Секция арбитража: указывает приоритет кадра, включая биты идентификатора и биты запроса удаленной передачи. Бит идентификатора представляет собой 11-битный функциональный адрес, и приемник CAN фильтрует кадры дистанционного управления через идентификатор. Бит запроса удаленной передачи (RTR) указывает, является ли кадр удаленным кадром или кадром данных.
  3. Сегмент управления: Сегмент, указывающий количество байтов данных и зарезервированных битов, состоящий из 6 бит, указывающий количество байтов сегмента данных.
  4. Раздел CRC: проверьте ошибку передачи кадра и используйте 16-битный CRC для проверки.
  5. Сегмент ACK: Указывает подтверждение нормального приема, состоящее из 2 бит.
  6. Конец кадра: Указывает конец кадра дистанционного управления, обозначаемый 7 -битным рецессивным уровнем .

Разница между кадром удаленного управления и кадром данных заключается в том, что кадр удаленного управления не имеет сегмента данных, а кадр данных имеет сегмент данных. Кадр удаленного управления используется принимающим устройством для запроса данных от передающего устройства, поэтому сегмент данных отсутствует. Бит RTR кадра дистанционного управления всегда рецессивный 1 , а бит RTR кадра данных всегда доминантный 0 .

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

Кадр ошибки CAN- шины


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

Кадр ошибки состоит из 8 сегментов, включая:

  1. Начало кадра: Указывает начало кадра ошибки, на что указывает доминирующий уровень 1 бит.
  2. Секция арбитража: указывает приоритет кадра, включая биты идентификатора и биты запроса удаленной передачи. Бит идентификатора представляет собой 11-битный функциональный адрес, и приемник CAN фильтрует кадры ошибок через идентификатор. Бит запроса удаленной передачи (RTR) всегда рецессивный 1.
  3. Сегмент управления: указывает тип ошибки, включая активные и пассивные флаги ошибок. Активный флаг ошибки — это вывод флага ошибки, когда ошибка обнаружена устройством в активном состоянии ошибки, и это доминирующий уровень 6 бит. Флаг пассивной ошибки выводится, когда ошибка обнаруживается устройством, находящимся в пассивном состоянии ошибки, которое представляет собой 6-битный рецессивный уровень.
  4. Разделитель ошибок: состоит из 8-битного рецессивного уровня, указывающего на конец кадра ошибки.

Типы кадров ошибок включают в себя:

  1. Активный кадр ошибки: когда узел обнаруживает ошибку на шине, он отправляет активный кадр ошибки, чтобы уведомить другие узлы о возникновении ошибки.
  2. Пассивный кадр ошибки: когда узел обнаруживает ошибку в другом узле, он отправляет пассивный кадр ошибки, чтобы уведомить себя и другие узлы о возникновении ошибки.

Обработка кадров ошибок включает в себя:

  1. Повторная отправка: когда узел обнаруживает ошибку, он повторно отправляет кадр данных или кадр телеуправления, чтобы избежать потери данных или сбоя связи.
  2. Отключить шину: когда узел обнаруживает серьезную ошибку, он отправляет активный кадр ошибки и отключает шину, чтобы избежать распространения ошибок и потери данных.

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

Кадр перегрузки шины CAN


Кадр перегрузки ( Overload Frame ) — это специальный кадр в CAN- шине, который используется для уведомления других узлов о временном прекращении отправки данных при перегрузке принимающего узла. Формат фрейма перегрузки отличается от стандартного фрейма данных и фрейма удаленного управления и состоит из флага перегрузки ( Overload Flag ) и разделителя перегрузки ( Overload Delimiter ).

Флаг перегрузки — это специальный флаг, состоящий из 6 доминантных битов, который используется для указания того, что принимающий узел перегружен. Разделитель перегрузки представляет собой флаг, состоящий из 8 рецессивных битов, используемых для обозначения конца кадра перегрузки. Когда принимающий узел обнаруживает флаг перегрузки, он немедленно прекращает прием данных и отправляет на шину кадр перегрузки. После получения кадра перегрузки другие узлы временно прекратят отправку данных, ожидая, пока принимающий узел возобновит отправку уведомления.

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

Битовая синхронизация в CAN


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

  1. Сегмент синхронизации: используется для синхронизации времени передачи каждого бита, состоящего из 11 бит доминирующего уровня.
  2. Сегмент распространения: используется для представления задержки времени передачи битов, которое состоит из бита знака и бита интервала. Бит знака указывает конец предыдущего бита, а бит интервала указывает временной интервал между битом знака и битом данных.
  3. Сегмент данных: используется для передачи фактических данных, состоящих из 5 битов доминантного или рецессивного уровня.
  4. Раздел подтверждения: используется для подтверждения полученных данных, состоящих из рецессивного уровня 1 бит.
  5. Конец кадра: используется для обозначения конца кадра данных, состоящего из 7-битных рецессивных уровней.

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

Жесткая синхронизация в CAN


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

Ресинхронизация в CAN


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

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

Процесс ресинхронизации состоит из следующих шагов:

  1. Когда принимающий узел обнаруживает потерю синхронизации или скачок фазы, он отправляет кадр запроса, чтобы запросить отправляющий узел повторно отправить данные.
  2. После получения кадра запроса узел-отправитель повторно отправит данные и добавит дополнительный бит в конце каждого байта, чтобы помочь узлу-получателю синхронизироваться.
  3. Когда принимающий узел получает дополнительные биты, он обрабатывает их как сегмент синхронизации и повторно синхронизируется с передающим узлом.
  4. Как только принимающий узел повторно синхронизируется с передающим узлом, он продолжает получать данные, обнаруживать и обрабатывать ошибки.

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

Реализация вывода кода типа кадра из CAN-сообщения


Задайте строку шестнадцатеричных чисел 07 11 22 33 44 55 66 77 88 99 12 в двоичных числах. Первые 3 байта — часть описания, байт 1 — информация о кадре, а седьмой бит (FF) в байте 1 указывает на кадр формат, FF=0 в стандартном кадре, FF=1 в расширенном кадре, шестой бит (RTR) в байте 1 указывает тип кадра , RTR=0 в байте 1 указывает на кадр данных, RTR=1 указывает на удаленный кадр.

DLC указывает фактическую длину данных в кадре данных.

Идентификатор стандартного кадра данных имеет 11 бит. Отправляется последовательно от ID10 до ID0. Запретить невидимость старших 7 бит (запрещенная настройка: ID=1111111XXXX)

Байты 2~3 являются идентификационными кодами сообщения, а старшие 11 битов действительны.

Байты 4~11 — это фактические данные фрейма данных, и они недействительны для удаленного фрейма.

#include <stdio.h>

typedef struct {
    int frameFormat; // 帧格式:0表示标准帧,1表示扩展帧
    int frameType; // 帧类型:0表示数据帧,1表示远程帧
    int dataLength; // 数据帧长度
} FrameInfo;

FrameInfo analyzeFrame(unsigned char* hexData) {
    FrameInfo info;
    unsigned char byte1 = hexData[0];


    // 解析帧格式
    info.frameFormat = (byte1 >> 7) & 0x01;

    // 解析帧类型
    info.frameType = (byte1 >> 6) & 0x01;

    // 解析数据帧长度
    if (info.frameType == 0) {
        info.dataLength = byte1 & 0x0F;
    } else {
        info.dataLength = 0; // 远程帧时数据帧长度为0
    }

    return info;
}

int main() {
    unsigned char hexData[] = {0x07, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0x12};
    FrameInfo info = analyzeFrame(hexData);

    printf("帧格式: %s\n", info.frameFormat == 0 ? "标准帧" : "扩展帧");
    printf("帧类型: %s\n", info.frameType == 0 ? "数据帧" : "远程帧");

    if (info.frameType == 0) {
        printf("数据帧长度: %d\n", info.dataLength);
    }

    return 0;
}

Supongo que te gusta

Origin blog.csdn.net/qq_50942093/article/details/131480167
Recomendado
Clasificación