Правильная терминация шины CAN

Я изо всех сил пытался заставить передачу шины CAN работать должным образом. Я веду установку с платой Parallax Propeller и подробности в другом посте , но у меня есть более конкретный вопрос по проводке и окончанию шины CAN:

Каждый найденный мной источник, описывающий завершение шины CAN, делает это с помощью чего-то вроде верхней части диаграммы, показанной ниже, - высокий и низкий провод с резисторами 120 Ом на каждом конце.

Однако в моей лабораторной установке то, что у меня есть на самом деле, эквивалентно нижней части показанной диаграммы — сопротивление фактически находится «посередине», между двумя устройствами. Я также пытался поиграть с этим значением сопротивления, полностью его сняв, и около 110 Ом, а также 220 Ом, и все они страдают от одной и той же проблемы, и чип, который я использую, сообщает об ошибке передачи.

Два резистора по 120 Ом, включенные параллельно, должны быть такими же, как сопротивление 60 Ом. Но имеет ли значение фактическое положение резисторов вдоль провода? Устройства физически находятся на расстоянии около 6 футов друг от друга и работают на частоте 500 кГц. Я знаю некоторые основы, включая закон Ома, и я понимаю, что CAN использует перепад напряжения для передачи, но если положение резисторов неправильное, то я определенно чего-то не понимаю в том, как эта схема должна работать.

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Используемые вами платы имеют общий 0V? CAN был разработан для использования в автомобилях, поэтому предполагается, что все платы имеют ссылку на шасси. Передатчики и приемники должны находиться в пределах диапазона напряжения синфазной шины.
Плата Propeller, мой экран шины CAN и контакты заземления на разъеме ODB-II связаны вместе, так что да. Честно говоря, я не уверен, что означает «общий режим» в этом контексте (сейчас погуглите). Когда я подсоединяю вольтметр к любому из проводов (а другой конец к моей общей земле), он дает ожидаемое рецессивное напряжение около 2,5 В).

Ответы (1)

Резисторы на каждом конце шины предназначены для управления переходными процессами из-за временных задержек. Шина должна быть согласована с ее волновым сопротивлением на каждом конце.

Однако, если длина шины составляет всего 6 футов, я ожидаю, что ваша реализация с резистором 60 Ом посередине будет работать. Я полагаю, у вас есть какие-то другие проблемы.

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

Возможно, вам потребуется добавить в сеть еще один нормальный узел CAN, чтобы получить правильный ответ.

Имеет смысл. Устройство, которым я управляю, представляет собой MCP2515 (которое подключается к MCP2551, который выполняет фактическую передачу CAN), а на другом конце находится GPS-устройство Sinocastel «ODB-Smart»: sinocastel.com/product/item-3.html . Я предполагал, что это будет предоставление ACK, но, возможно, я ошибаюсь. И если не считать использования осциллографа (его нет под рукой), я еще не понял, как определить, так ли это.
Кроме того, MCP2515 должен быть запрограммирован для работы с той же скоростью передачи данных, форматом сообщения (обычным или расширенным) и, возможно, некоторыми другими параметрами, что и устройство на другом конце.