ВСТАВКА БИТОВ В CLASSICAL CAN
Как приёмник отличает полезные данные от вставочных битов
В области вставки битов передатчик после пяти одинаковых битов на шине вставляет бит противоположного значения. Приёмник проверяет и удаляет этот бит перед разбором полей. Сначала определите границы кадра, затем сравните запись сигнала на шине с декодированным кадром.
Вставка бита
Передатчик после пяти одинаковых битов на шине вставляет бит противоположного значения.
Определение границы
После последовательности CRC приёмник перестаёт применять правило динамической вставки битов.
Измерение на обоих концах
Сравните один и тот же тестовый кадр на двух медных сегментах.
Убедитесь, что используется Classical CAN, и определите тип кадра и номинальную скорость передачи.
Проверьте, находится ли серия одинаковых битов в области вставки битов.
Сопоставьте переходы в исходном сигнале с кадром, декодированным анализатором, и ошибками контроллера.
Контрольный список для проверки записи сигнала — развернуть
| Проверка | Что подтвердить | Как проверить |
|---|---|---|
| Биты на шине | Серия одинаковых состояний | Ведите отсчёт от начала соответствующей области |
| Граница поля | Конец последовательности CRC | Определите разделитель, ACK и EOF |
| Увеличение дальности по оптоволокну | Точка наблюдения | Совместите по времени записи с двух медных сегментов |
После записи данных CAN в контроллер на осциллограмме может оказаться больше битов, чем получается при сложении длин логических полей кадра. Эти дополнительные биты появляются в результате вставки битов. В соответствующей области кадра Classical CAN передатчик после пяти последовательных битов одного значения вставляет бит противоположного значения. Приёмник по тому же правилу распознаёт и удаляет этот бит, а затем разбирает исходные поля. Этот механизм помогает приёмникам корректировать синхронизацию на уровне битов и объясняет, почему сообщения одинаковой длины могут занимать шину на разное время.
Неизменный уровень сигнала тоже передаёт биты
На высокоскоростной медной шине CAN трансивер преобразует биты контроллера в дифференциальные состояния на линиях CAN_H и CAN_L. Доминантный бит соответствует логическому значению 0, а рецессивный — логическому значению 1. Когда узел формирует доминантное состояние, оно может перекрыть рецессивные состояния, передаваемые другими узлами. Даже если электрическое состояние не меняется, принимающий контроллер определяет значение каждого бита в точке выборки его битового интервала. Непрерывный участок с доминантным уровнем может содержать несколько нулей, каждый из которых занимает один битовый интервал.
У каждого узла свой тактовый генератор. Номинальную длительность битового интервала можно задать одинаковой, но на практике небольшие отклонения сохраняются. Приёмник синхронизируется в начале кадра и использует подходящие фронты для коррекции фазы в пределах кадра. Если подходящего фронта долго нет, смещение точек выборки приёмника относительно границ битов передатчика увеличивается. Вставка битов создаёт переходы в длинных сериях одинаковых битов, позволяя корректировать синхронизацию. Правильность выборки также зависит от задержки распространения, настройки точки выборки и качества сигнала.

Передатчик считает биты, уже переданные на шину
Рассмотрим упрощённую последовательность в области динамической вставки битов, начиная с нулевого значения счётчика серии. В логической последовательности за пятью нулями следует единица. Передав пятый ноль, передатчик вставляет единицу, а затем передаёт исходную единицу. На шину поступают пять нулей, вставочная единица и исходная единица. Вставка может произойти внутри байта или сразу после конца поля. Контроллер отслеживает непрерывный поток битов и не сбрасывает счётчик на границах байтов.
Вставленный бит входит в передаваемую последовательность и начинает новую серию. Предположим, что в исходной последовательности за пятью нулями следуют четыре единицы. Эти четыре единицы вместе со вставленной образуют пять единиц подряд, поэтому передатчик затем вставляет ноль. Правило нельзя свести к одной вставке на каждые пять исходных битов. На момент следующей вставки влияют соседние поля и ранее вставленные биты.
После пяти одинаковых битов приёмник ожидает бит противоположного значения. Если в точке выборки он считывает ожидаемое значение, он распознаёт вставочный бит и учитывает его при отслеживании принятой серии, но не передаёт его на разбор полей. Следующая за ним исходная единица сохраняется. На шине обе единицы могут выглядеть как один непрерывный участок сигнала неизменного уровня. Приёмник различает их по положению в потоке и по предшествующей последовательности битов.

Где прекращается подсчёт одинаковых битов
Динамическая вставка битов также применяется к соответствующим полям кадра удалённого запроса Classical CAN. Его DLC может указывать запрашиваемую длину данных, но поля данных в кадре нет. При ручной проверке записи сигнала сначала определите тип кадра, а затем найдите последовательность CRC. Если принять DLC кадра удалённого запроса за число следующих за ним байтов данных, все последующие границы будут определены со смещением.
В кадре данных Classical CAN область динамической вставки битов начинается с начала кадра, охватывает поля арбитража, управления и данных и заканчивается в конце последовательности CRC. Приёмник отслеживает длину полей при обработке этой области. Вставочные биты увеличивают время передачи по шине. Код длины данных (DLC) сохраняет исходное значение. Логическая структура полей может не совпадать с временной разбивкой, видимой на осциллограмме.
После последовательности CRC для разделителя CRC, поля ACK и поля конца кадра действуют свои правила. Подсчёт серии для динамической вставки битов здесь больше не применяется. Например, поле конца кадра Classical CAN содержит семь рецессивных битов подряд. Сама по себе эта серия не указывает на ошибку вставки битов. Прежде чем определить, к какой области относится участок сигнала с неизменным уровнем, найдите границу кадра и проверьте, есть ли флаги ошибок.
В Classical CAN передатчик вычисляет последовательность CRC по логическим битам без учёта вставочных битов, от начала кадра до конца поля данных. При передаче он включает последовательность CRC в область, где применяется вставка битов. Приёмник удаляет динамически вставленные биты и выполняет соответствующую проверку CRC. Таким образом, дополнительные биты кодирования и проверка целостности полей служат разным целям. В поле CRC протокола CAN FD действуют другие правила. Сверьте формат кадра и конфигурацию контроллера с применимой спецификацией.
Данные одинаковой длины могут занимать шину на разное время
Различайте время передачи кадра и время ожидания отправки сообщения. Вставка битов влияет на время передачи самого кадра по шине. Задержка из-за арбитража зависит от того, что в этот момент передают другие узлы. Для периодического сообщения отдельно измеряйте интервал между битами начала двух последовательных кадров и длительность от начала до конца одного кадра. Изменения этих двух величин указывают на разные причины.
Рассмотрим два успешно переданных кадра данных Classical CAN с одинаковым числом байтов данных. Их идентификаторы или битовые комбинации в данных могут различаться. В одном кадре могут неоднократно встречаться длинные серии одинаковых битов, тогда как в другом нули и единицы часто чередуются. В первом кадре может понадобиться больше вставочных битов; на их число также влияют конкретные значения битов в последовательности CRC. При одинаковой номинальной скорости передачи каждый вставочный бит добавляет один битовый интервал. Для оценки загрузки шины используйте измеренную длину кадра на шине или её консервативную оценку.
Анализатор протокола обычно показывает идентификатор, DLC и восстановленные данные в представлении декодированного кадра. Чтобы оценить занятость шины, определите начало и конец измерения. Время передачи кадра, время ожидания от постановки в очередь до выигрыша арбитража и время, затраченное на повторную передачу после ошибки, — разные величины. Фиксация границ измерений позволяет отличить увеличение длины кадра от задержки из-за конкуренции за шину.
Определите область, в которой возникает ошибка вставки битов
В поле, где действует динамическая вставка битов, приёмник сообщает об ошибке вставки битов, если считывает шестой бит того же значения там, где должен быть бит противоположного значения. Длительный участок неизменного уровня может быть связан с нештатной работой передающей стороны, местной настройкой точки выборки, скоростью передачи или искажением сигнала. Если узел в состоянии Error Active передаёт активный флаг ошибки, другие узлы затем могут обнаружить длинную серию доминантных битов, нарушающую правило. Поэтому ошибка вставки битов в одном из журналов может оказаться следствием более ранней ошибки.
Запишите типы ошибок, самое раннее событие и, если возможно, осциллограмму. Ошибка CRC означает несовпадение результата вычисления приёмника с принятой последовательностью CRC. Ошибка формата возникает в поле с предписанным форматом. Ошибка ACK означает, что передатчик не обнаружил ожидаемого доминантного подтверждения в слоте ACK. Эти ошибки могут возникать одна за другой в ходе одного инцидента. Упорядочив события по времени и проверив затронутое поле, можно сузить круг возможных причин.

При расширении сети CAN по оптоволокну проверьте каждый медный сегмент и роль каждого устройства
В документации FCTELE на восьмиканальный оптоволоконный модем CAN для монтажа на DIN-рейку указаны режимы ретрансляции CAN через оптоволокно и работы по схеме «точка — точка». При инженерных испытаниях выделите медные сегменты CAN, оптоволоконный участок и оконечные устройства как отдельные точки наблюдения. Сверьте формат кадра, скорость передачи, согласование и подключение проводов с документацией на фактически используемые устройства. Затем в изолированной испытательной схеме передайте заранее известное сообщение и проверьте его приём на каждом конце. На рисунках указаны точки наблюдения. Чтобы выяснить, как конкретная модель передаёт сигналы по оптоволокну, обратитесь к её документации.
Если сигнал и декодированные кадры на медном сегменте со стороны передатчика остаются стабильными, а вблизи приёмника периодически возникают ошибки, сопоставьте состояние сигнала и временные отметки на обоих концах. Проверьте, связана ли неисправность с конкретным кабелем, оконечным устройством или определённой нагрузкой. Фиксируйте период передачи сообщения и другие условия испытаний и меняйте только один параметр за раз. В итоговой записи укажите, удалось ли правильно восстановить поля, повторялись ли ошибки и восстановилась ли передача реального прикладного трафика после изменения тракта. Это позволяет отличить обычное увеличение длины кадра из-за вставочных битов от реальных сбоев передачи.
Источники и область применимости
Bosch: обнаружение ошибок в CAN и CAN FD · Microchip: вставка битов и формат кадра CAN · FCTEL: восьмиканальное оптоволоконное устройство CAN для монтажа на DIN-рейку (на китайском языке)
Переведено с китайской технической статьи: Прочитать оригинальную статью на китайском языке.
Частые вопросы
Зачем вставлять бит после пяти одинаковых битов?
Бит противоположного значения создаёт переход на шине. Фронты, удовлетворяющие условиям синхронизации, можно использовать для коррекции битовой синхронизации. Вставка таких битов ограничивает длительность участков без переходов.
Вызывают ли семь рецессивных битов EOF ошибку вставки битов?
Поле EOF в Classical CAN имеет фиксированный формат. Его семь рецессивных битов находятся за пределами области динамической вставки битов.
Как отследить ошибку вставки битов на линии связи с оптоволоконным участком?
Запишите один и тот же тестовый кадр на обоих медных сегментах, проверьте скорость передачи, параметры выборки и согласование, сопоставьте временные отметки ошибок контроллеров и выясните, как оптоволоконные устройства пересылают трафик.
Дополнительные материалы
Расширение шины CAN с помощью оптоволокна · Электрические интерфейсы и арбитраж CAN


