Отладка сети CAN на физическом уровне

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

Стандарт CAN (controller area network), изначально предназначенный для автомобильных и промышленных сетей, находит новые области применения. Микропроцессоры с поддержкой CAN доминируют в секторе экономичных устройств с открытым стеком протоколов. Это позволяет легко внедрять этот стандарт в новые системы. Разработаны сетевые карты CAN для BeagleBone (Capes), Stellaris (BoosterPacks), Arduino (Shields) и многих других микропроцессоров.

Стандарты ISO11898-2 и ISO11898-5 устанавливают характеристики физического уровня высокоскоростной передачи CAN, т.е. передатчика. Большую часть типичных неисправностей легко обнаружить с помощью простых инструментов: осциллографа, цифрового мультиметра и источника питания. Если проблема серьезнее, то могут потребоваться более точные и сложные приборы. В данной статье такие проблемы рассматриваться не будут. Для демонстрации был использован оценочный модуль SN65HVD255D Texas Instruments.

ПРОВЕРКА СОЕДИНЕНИЙ
Первое, что необходимо сделать — это проверить соединения на печатной плате с помощью цифрового мультиметра. Данная операция производится, когда плата обесточена. На первый взгляд, это очевидный шаг, однако с его помощью можно устранить большое количество ошибок, которые возникают главным образом из-за того, что изготовленная плата не соответствует предполагаемой. Такие дефекты как неаккуратно установленные дочерние платы, непропаянные соединения, висящие или неправильно подключенные выводы, встречаются наиболее часто.

проверка терминации шин

Большинство протоколов CAN основаны на использовании витой пары с экранированием и без него с импедансом 120 Вт (ZO). Для терминации обоих концов провода используются резисторы с сопротивлением, равным характеристическому импедансу, чтобы не возникало отражений сигнала. Оконечное сопротивление не следует удалять с шины. Если резистивная нагрузка на шине CAN отсутствует, целостность сигнала и тактовая синхронизация не могут быть обеспечены.

Если необходима фильтрация и стабилизация синфазного напряжения шины, следует использовать разделенную терминацию, как показано на рисунке 1. Все резисторы имеют сопротивление 60 Вт. Конденсатор может иметь любую емкость в диапазоне 1.100 нФ в зависимости от угловой частоты фильтра синфазных помех. Измеренное сопротивление между CANH и CANL должно быть в диапазоне между 45 и 65 Вт, чтобы не выходить за допуски, предусмотренные стандартом CAN. Номинальную мощность оконечных резисторов следует подбирать в соответствии с наихудшим случаем. Обычно это разница между напряжением питания и землей.

ПРОВЕРКА ИСТОЧНИКА ПИТАНИЯ
Отладка сети CAN на физическом уровнеДо включения системы необходимо проверить источники питания передатчика. Как правило, Vtt равно 3,3 В или 5 В, в зависимости от типа передатчика. Потеря напряжения питания может быть причиной неполадки. С помощью цифрового мультиметра измеряют напряжение на выводе питания (VCC) приемопередатчика. Обратим внимание, что нельзя закорачивать общий провод и питание. Эти выводы расположены рядом, поэтому следует действовать очень аккуратно.

Между доминирующим состоянием и состоянием рецессии разница токов составляет примерно 50 мА (в доминирующем состоянии около 60 мА при нагрузке на шину 60 Вт, в рецессии — 10 мА). Благодаря этой разнице в доминирующем состоянии между оконечными сопротивлениями напряжение дифференциально.

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

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

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

ФИЗИЧЕСКИЙ УРОВЕНЬ ИНТЕРФЕЙСА CAN
После проведения вышеописанных процедур можно переходить непосредственно к проверке шины. Передатчик транслирует несимметричные цифровые логические сигналы TXD (или D) и RXD (или R) на уровнях, установленных дифференциальной шиной CAN. Когда шина работает в доминирующем режиме, на ней дифференциальное напряжение Vdiff(D). Согласно стандарту, это не менее 1,2 В на приемном конце, т.е. это низкии логический уровень. Когда шина работает в рецессивном режиме, дифференциальное напряжение Vdiff(R) находится в диапазоне -120…12 мВ на приемном конце, это логический высокий уровень. В обоих состояниях применяется схема синфазного смещения в приемопередатчике.

Наиболее полезным инструментом для отладки шины является осциллограф, причем лучше с двумя или четырьмя каналами, чтобы одновременно видеть сигналы TXD, RXD, CANH и CANL. Достаточно использовать осциллограф с малой полосой пропускания, поскольку стандартом установлена максимальная скорость передачи 1 Мбит/с. В последующих версиях стандарта она, вероятно, будет задана не так жестко, и потребуется осциллограф с более широкой полосой.

Передаваемые узлом данные видны на входе TXD. Они поступают с двойной задержкой: на распространение сигнала до дифференциальных входов шины (CANH/CANL) и на прохождение до выхода RXD. Эта задержка называется временем, или задержкой цикла. Если узел принимает, линия TXD будет находиться в режиме ожидания, но шина и выход RXD покажут кадр CAN. Интерфейс CAN реализован с помощью двух плат SN65HVD255D с терминацией 120 Вт. Генератор функций в осциллографе подключен к входу TXD на плате.

Точность и разрешение осциллограммы невысоки, однако дают понять, какие параметры узлов сети необходимо проверить. Осциллограмма записана по срабатыванию сигнала TXD среднего узла. Сигналы CANH и CANL дифференциальны, как и предполагалось. В конце кадра четко виден бит подтверждения (ACK) с более высоким дифференциальным напряжением. Это результат того, что несколько узлов сети генерируют бит ACK одновременно. Другой способ распознать бит АСК — это сравнить сигналы RXD и TXD. На первом он есть, на втором — нет. Это означает, что он сгенерирован другими узлами, а не тем, которому производится передача.

ПРИМЕРЫ
Пусть на одной плате произошел обрыв линии CANH. Сигнал CANH для этого случая показан на рисунке 8. Проверка на целостность линий с помощью цифрового мультиметра позволяет выявить этот разрыв. На рисунке 8 четко видно вторую часть кадра, наибольшее значение в которой имеет бит ACK. Осциллограф работает в одноканальном режиме, запуская запись по сигналу TXD правого узла и заканчивая ее по появлению одиночного бита. Это и есть АСК, сгенерированный данным узлом в подтверждение корректного приема пакета.

Все принимающие узлы подтверждают принятие пакета от передающего узла. Бит ACK, видимый на шине, чуть длиннее, чем передаваемый АСК, видимый на линии TXD. Это происходит из-за того, что несколько узлов передают бит подтверждения одновременно. Факторы, вызывающие увеличение времени ACK: задержка кабеля 5 нс/м, рассогласование тактового сигнала на трех узлах, более высокое дифференциальное напряжение из-за одновременной передачи бита двумя узлами. Если время передачи АСК будет слишком большим, то может возникнуть ошибка приема пакета.

Рассмотрим другой пример отладки шины CAN. Пусть в системе осуществляются только передачи на очень низкой скорости. На осцилограмме с вывода TXD видно, что сигнал имеет очень медленную скорость нарастания. Задержка 9,6 мкс эквивалентна 10 битам при скорости передачи 1 Мбит/с. Причина заключается в том, что микропроцессор имеет выход с открытым стеком. За счет того, что используется только внутренний подтягивающий резистор в приемопередатчике для подтягивания сигнала TXD, у RC-цепи очень большая постоянная времени. Эта проблема легко решается с помощью добавления подтягивающего резистора на вывод TXD.

TRIAL NEWS