logo

Трансивер can

Типовая структура трансивера CAN (на примере микросхемы LT1795 фирмы Linear Technology) приведена на рис. 2.20. При подаче уровня логического нуля на вход   (вход является инвертирующим) оба транзистора выходного каскада передатчика открываются и через нагрузку (два резистора по 120 Ом) течет ток, создающий в линии состояние, соответствующее логической единице. При этом потенциал вывода   всегда будет выше, чем вывода    (рис. 2.21). Значения потенциалов, предусмотренные стандартом, приведены в табл. 2.9. При логической единице на входе передатчика его выход переходит в высокоомное состояние и дифференциальное напряжение на линии становится равным нулю.

Отметим, что наличие терминальных резисторов в CAN необходимо не только для согласования линии (как в случае RS-485), но даже для создания пути протекания тока.

Рис. 2.20. Структурная схема трансивера CAN

CAN передатчик имеет очень важное свойство: если один из передатчиков устанавливает в сети логический ноль, а второй - логическую единицу, то это состояние не является аварийным, как в сети на основе интерфейса RS-485, поскольку сквозного тока не возникает. В случае CAN линия остается в состоянии логической единицы. Иначе говоря, логическая единица всегда доминирует над логическим нулем. Поэтому в стандарте CAN используется понятие " доминантное состояние" (доминирующее) состояние линии для обозначения состояния линии с током, и понятие "рецессивное состояние" как противоположное доминантному (рис. 2.21).

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

Вывод   на рис. 2.20 позволяет установить пороговое напряжение для входа   и уровень синфазного напряжения в линии, когда она находится в рецессивном состоянии. Обычно    = 2,5 В. Чтобы установить уровень синфазного напряжения на линии, терминальные сопротивления делят на два по 60 Ом, соединяют их последовательно, а к точке соединения подключают вывод  . При симметричной форме импульсов   и   относительно рецессивного состояния уменьшается уровень излучаемых помех, поскольку приращения токов в каждом из проводов витой пары при переключении логических уровней (см. рис. 2.21) оказываются равными по величине, но обратными по знаку и поэтому компенсируют друг-друга.

Вывод   имеет несколько назначений. Если на нем установлено состояние логической единицы, трансивер переходит в спящий режим, при котором он потребляет очень малый ток от источника питания, а на выходе устанавливается высокоомное (рецессивное) состояние. "Разбудить" его можно сигналом, поступающим в приемник из линии передачи. Подключение этого вывода к "земле" через сопротивление позволяет установить нужную длительность фронтов импульсов передатчика. Некоторые трансиверы имеют два режима: резервный и спящий, которые отличаются уровнем потребляемого тока и способом перевода в активный режим. Режим пониженного энергопотребления предусмотрен стандартом для экономии заряда аккумуляторных батарей в припаркованном автомобиле.

Рис. 2.21. Пояснение понятий рецессивного и доминантного состояния

Если сигнал   является доминирующим слишком долго (более 1 мс), генератор импульса таймаута (на рис. 2.20 обозначен прямоугольником с импульсом) временно отключает передатчик, поскольку в противном случае модуль может быть навсегда блокирован средствами канального уровня как отказавший.

Стандартом предусмотрена возможность подключения к CAN сети любого количества устройств, однако практически оно ограничивается нагрузочной способностью передатчиков (100...200) или задержкой в повторителях.

В CAN-трансивере имеется генератор синхроимпульсов с частотой 16 МГц ±0,1%. Ширина одного бита программно устанавливается величиной от 8 до 25 импульсов синхрогенератора, обычно 8 импульсов при скорости передачи 1 Мбит/с и 16 импульсов при 20 кбит/с. Синхронизация всех узлов сети происходит  в течение первого такта синхронизации. Процедура обработки битов в приемнике обеспечивает программируемую задержку импульсов синхронизации, необходимую для компенсации времени задержки прохождения сигнала в линии связи и сдвига фазы вследствие дрейфа частоты тактового генератора.

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

Для определения логического состояния шины уровни принимаемых сигналов измеряются на расстоянии 6-ти тактов синхрогенератора от переднего фронта импульса (бита) при скорости 1 Мбит/с и на расстоянии 14-ти тактов при скорости 20 кбит/с [CAN] (для сравнения укажем, что в стандартных UART отсчеты берутся посередине импульса). Количество отсчетов может быть 1 или 3 (устанавливается программно). CAN использует синхронную передачу битов. Это повышает пропускную способность канала связи, но требует усложненного процесса синхронизации.

Табл. 2.9. Значения потенциалов на линии передачи CAN

Параметр

Обозначение

Ед. измерения

Мин.

Ном.

Макс

Условие

Для рецессивного состояния шины

Потенциалы на выходе передатчика

CAN_H

В

2,0

2,5

3

Без нагрузки

CAN_L

В

2,0

2,5

3

Дифференциальное напряжение на выходе передатчика

Vdiff

мВ

-500

0

50

Без нагрузки

Дифференциальное напряжение на входе приемника

Vdiff

В

-1

-

0,5

Без нагрузки

Для доминантного состояния шины

Потенциалы на выходе передатчика

CAN_H

В

2,75

3,5

4,5

С нагрузкой

CAN_L

В

0,5

1,5

2,25

Дифференциальное напряжение на выходе передатчика

Vdiff

В

1,5

2

3

С нагрузкой

Дифференциальное напряжение на входе приемника

Vdiff

В

-0,9

-

5

С нагрузкой

Напряжение питания устройств в сети CAN должно составлять от 18 до 30 В. Выходное напряжение на 9-м контакте разъема (внешнее положительное напряжение питания) должно быть от +7 В до +13 В при токе потребления модуля не более 100 мА. Не допускается, чтобы  модули были источниками тока.

CAN использует NRZ кодирование (Non Return-to-Zero - "без возврата к нулю", "потенциальное кодирование"), при котором логическому нулю соответствует низкий уровень напряжения в линии (рецессивное состояние), логической единице - высокий уровень (доминантное состояние). Такой способ имеет следующий недостаток: в случае, когда через линию передачи транспортируется байт, который содержит все единицы (пауз между ними при NRZ кодировании нет), приемник не может отличить этот байт от паузы. Для устранения этой проблемы используется так называемый бит-стаффинг. Он состоит в том, что после каждой последовательности из 5-ти одинаковых символов подряд вставляется противоположный им символ. Например, после 5-ти единиц подряд вставляется логический ноль. Приемник, обнаружив 5 одинаковых символов подряд, удаляет следующий за ними символ, который является битом стаффинга.

Другими свойствами CAN-трансиверов, которые предусмотрены в стандарте, являются: