Когда из-за несовпадения точек сэмплирования и скоростей передачи между узлами связи возникают кадры ошибок, в TSMaster можно настроить и скорректировать параметры скорости и точки сэмплирования, чтобы сократить и устранить кадры ошибок на шине и повысить качество связи. В статье — как в TSMaster быстро получить параметры точки сэмплирования и скорости и передать их в пользовательскую программу через API.
Ключевые слова: точка сэмплирования, скорость передачи, кадры ошибок, tsapp_configure_canfd_regs.
1. Определение точки сэмплирования
Точка сэмплирования — момент времени, когда CAN-контроллер считывает уровень шины и интерпретирует логическое значение бита. Прежде чем говорить о точке сэмплирования, нужно понять понятие битового времени в CAN-кадре и его состав. Битовое время — время передачи одного бита данных; минимальный временной квант CAN-контроллера называется Time Quantum (TQ) и получается делением периода кварцевого генератора чипа. Одно битовое время состоит из нескольких TQ (обычно от 8 до 25) и по функциям делится на 4 отрезка: сегмент синхронизации, сегмент распространения, фазовый буферный сегмент 1 и фазовый буферный сегмент 2 (рис. 1-1).

Функции четырёх отрезков:
- Сегмент синхронизации — для подстройки тактирования: фронты сигналов всех узлов шины формируются внутри этого сегмента; обычно 1 TQ.
- Сегмент распространения — компенсирует физические задержки сети: задержку распространения сигнала по шине и внутреннюю задержку обработки в CAN-узле.
- Фазовые буферные сегменты 1 и 2 (Phase_Seg1, Phase_Seg2) — компенсируют фазовые ошибки фронтов; их длина удлиняется или укорачивается в процессе ресинхронизации.
При разных скоростях передачи в CAN точки сэмплирования и распределение битового времени по квантам различаются. Типовые точки сэмплирования и связанные параметры приведены в таблице на рис. 1-2: для скорости 500 кбит/с битовое время делится на 16 квантов, а точка сэмплирования приходится на 14-й квант.

Правильное положение точки сэмплирования — условие нормальной связи CAN-контроллера. Его важность определяется тремя причинами:
- для CAN-сети в целом все узлы должны по возможности использовать одинаковое положение точки сэмплирования, иначе легко возникают ошибки сэмплирования, приводящие к сбоям связи всей сети;
- для отдельного узла слишком раннее сэмплирование делает его чувствительным к колебаниям уровня в начале битового времени, что ведёт к ошибкам сэмплирования;
- из-за требований ресинхронизации и ширины фазовых буферных сегментов CAN-контроллер не может сэмплировать слишком поздно.
2. Проблемы связи, вызванные точкой сэмплирования
CAN-сеть использует асинхронную связь, поэтому сэмплирование выполняется в соответствии со скоростью передачи; принцип показан на рис. 2-1: красные стрелки — положение точек сэмплирования, считанные данные — «1010 1010».

Если сдвинуть точку сэмплирования на 20 % раньше, считанные данные станут «0101 1010»: по сравнению с рис. 2-1 пятый бит уже отличается (рис. 2-2). Поэтому в CAN-сети различия точек сэмплирования между передающими узлами вызывают ошибки передачи данных, и чем больше передаётся данных, тем больше накапливается ошибочных битов. Значит, при организации связи в CAN-сети скорость передачи и точку сэмплирования всех узлов нужно устанавливать одинаковыми.

Несовпадение скорости и точки сэмплирования между узлами проявляется прежде всего кадрами ошибок. Пример: скорость 500 кбит/с, точка сэмплирования 80 % (фазовый сегмент 1 = 63, фазовый сегмент 2 = 16) против 250 кбит/с и точки 50 % (фазовый сегмент 1 = 3, сегмент 2 = 4). Тест выполнен на аппаратуре TOSUN TC1016 с TSMaster: указанные параметры назначены на закороченные каналы CAN1 и CAN2 (рис. 2-3, 2-4).


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

Поэтому при появлении кадров ошибок в окне сообщений TSMaster проверка скорости и точки сэмплирования узлов — одно из главных направлений диагностики. Причём не только показанного выше типа: кадры других типов, например bit error и form error (рис. 2-6, 2-7), также требуют проверки параметров скорости и точки сэмплирования.


3. Как настроить точку сэмплирования в TSMaster
Если из-за неверной точки сэмплирования в окне сообщений TSMaster наблюдаются кадры ошибок, параметры нужно перенастроить для восстановления нормальной связи между узлами. Но сначала нужно знать, как вычисляется точка сэмплирования (рис. 3-1):

Здесь TSEG1 и TSEG2 в TSMaster обозначают фазовый буферный сегмент 1 и фазовый буферный сегмент 2 соответственно. Зная формулу, по коммуникационным параметрам тестируемого устройства можно точно вычислить параметры точки сэмплирования и затем задать их в интерфейсе аппаратуры шины TSMaster.
- Шаг 1. В интерфейсе выбора канала выберите соответствующий аппаратный канал и подтвердите (рис. 3-2).
- Шаг 2. Определив канал, настройте параметры скорости в интерфейсе аппаратуры шины (рис. 3-3). Для CAN-сети диапазон скоростей — от 125 до 1000 кбит/с; скорость выбирается по коммуникационным параметрам тестируемого устройства, и настройка в TSMaster должна им соответствовать. Если параметры устройства неизвестны, уточните у производителя или попробуйте другие скорости — посмотрите, уменьшатся ли кадры ошибок (рис. 3-4).
- Шаг 3. Настройте параметры точки сэмплирования (битовое время арбитражной фазы). TSMaster предлагает множество вариантов точек сэмплирования. Обратите внимание на список битового времени арбитражной фазы: одной и той же точке сэмплирования могут соответствовать разные сочетания параметров фазового сегмента 1 и фазового сегмента 2, поэтому точку сэмплирования выбирают расчётом по формуле — подбирая сегменты 1 и 2 под коммуникационные параметры устройства (рис. 3-5). Если вычисленные параметры точки сэмплирования или фазовых сегментов не находятся в списке, выберите ближайшие значения. Если параметры устройства неизвестны, рекомендуется использовать точку сэмплирования TSMaster по умолчанию (рис. 3-6).





4. Конфигурация параметров tsapp_configure_canfd_regs
TSMaster предоставляет множество API-функций для вторичной разработки — пользователь пишет программы под свои задачи. Если в программе вторичной разработки возникают ошибки связи, описанным выше методом в интерфейсе TSMaster итеративно подбирают точку сэмплирования, скорость и другие параметры, устраняя кадры ошибок, — и получают значения, подходящие для связи с тестируемым устройством.
Функция tsapp_configure_canfd_regs конфигурирует внутренние регистры CAN FD-контроллера, делая точку сэмплирования, ширину синхронизирующего скачка и другие параметры более точными. Функция показана на рис. 4-1.


Параметры выглядят громоздко, но соответствующие значения можно посмотреть напрямую в конфигураторе TSMaster. Пример: арбитражная фаза 500 кбит/с, точка сэмплирования арбитража 80 %, фаза данных 2000 кбит/с, точка сэмплирования данных 80 %. Откройте в TSMaster конфигурацию аппаратуры шины (рис. 4-3), разверните список битового времени арбитражной фазы и точно выберите точку сэмплирования 80 % (рис. 4-4).


Получаем: AArbSEG1 = 31, AArbSEG2 = 8, AArbPrescaler = 2; AArbSJW = 6 (достаточно ≤ AArbSEG2), AArbBaudrate = 500. Аналогично получаются параметры фазы данных (рис. 4-5).

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