«Программирование микроконтроллеров — это не только головой, но и руками. Не только руками, но и головой.»
Пролог
Так вышло, что до разработки автомобильной электроники я варил прошивки для infotainment аудиосистем. Писал передачу и прем звука по BLE-Audio. Поэтому, естественным образом, на новые задачи я смотрю через призму прошлого опыта.
Как оказалось при разработке электроники часто приходится работать с CAN шиной. Это не только automotive, но и электронная начинка для лифтов, поездов, кораблей, космических аппаратов (CubSat-ы) и прочего, где тоже используют CAN шину для общения между всяческими агрегатами.
В связи с этим, при прототипировании CAN-совместимых устройств часто надо собирать и разбирать различные конфигурации CAN шин. Два устройства, 4 устройства, 8 устройств, потом снова 3 и прочее. Имитация аварии: обрыв CAN шины, короткое замыкание провода CAN_L на CAN_H, короткое замыкание провода CAN_L на VBAT, короткое замыкание провода CAN_H на GND. Обычно традиционные harness-ы для CAN шины делают как гирлянду из реликтовых разъемов DB-9 прямиком из 195x годов.

Вот так это выглядит в составе блока

Однако разъёмы DB-9 содержат 9 пинов, а CAN-у нужно всего 2 пина (максимум три в случае GND). Понимаете? Поэтому можно ошибиться при подключении перемычек на отладочную PCB. Потом, каждый раз развинчивать разъём DB-9 тоже не удобно. Нужна отвертка и гаечный ключ. В конце концов разъёмы DB-9 банально морально устарели. Всё таки как ни крути, a DB-9 - это отжившая свой век технологии 195x годов.
Я же предлагаю собирать отладочные CAN harness-ы на основе всем известных audio jack 3.5mm разъемов. Вот так.

Что надо из оборудования?
Компонент | Назначение | RUR |
Audio Jack 3.5mm Connector Mono, Plug to Screw Terminal | Соединение сегментов сети | 49 |
резисторы 120 Om 0.25 W | Терминирующий резистор | ? |
Mini T Type Wire Connector Electric Quick Splice Terminals Crimp Without Breaking Cable Insulated Line Push-in Terminal Blocks | Для ответвление от шины | 49 |
пластиковые Хомуты | для скрепления двух жил кабеля | ? |
отвертка с плоским шлицем шириной 2,5 мм | для закрепления проводов в винтовых клеммниках | ? |
Провод диаметром 0,5-1,5 мм | для передачи CAN пакетов | ? |
DMM | для прозвонки соединений и определения сопротивления | 100-10k |
В самой простой компоновке берём audio jack mono разъём. В клемму + завинчивать CAN_H, в клемму - завинчивать CAN_L.

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

По сути задача организации гибкой CAN шины для прототипирования и отладки сводится к изготовлению двух типов CAN секций: FNN и NNF. Лучше даже использовать stereo audio jack и сделать третий провод для GND.

Можно также пристегнуть терминирующий резистор 120 Om практически в любое место.

Вы узнаете выводной терминирующий резистор номинала 120 Om по коду маркировки: коричневый, красный, черный, черный и коричневый.

Вот так резистор 120 Ом 0,25 Ватт выглядит в натуре.

В составе сборки на harness получается так.

Рано или поздно Вам потребуются переходники типа гнездо-гнездо. Вот такие

CAN-шина собранная на основе Audio-Jack обладает следующими достоинствами:
Достоинства
1++ Главное достоинство Audio-Jack - моментальное соединение вслепую. Их не нужно переворачивать, как пресловутые DB-9. Это существенно ускоряет процесс разработки электроники.
2++ Дешевизна. Себестоимость одной секции такого жгута составляет порядка 200 RUR. Обычно достаточно 3 или 4 секции.
3++ Можно удлинять CAN шину за счет переходников вилка-вилка, вилка-гнездо, который можно купить в любом магазине, где торгуют мобильными телефонами или вовсе в киосках метро.

или такой

4++ Не нужна отвертка для скрепления гнезда и вилки, как в случае с DB-9.
5++ Эстетический вид. Audio jack 3.5 mm - это видовая деталь. Поэтому выглядит такой жгут прилично и стильно.
6++ Миниатюрность. Такая CAN шина легко разбирается и пере собирается. Удобна при транспортировке. Занимает мало места на рабочем столе.
7++ Можно отдельным Audio-Jack-ом подключиться к шине осциллографом или переходником с USB-CAN. Буквально в любом месте.
8++ Безопасность. Если кто-то ногой заденет такую CAN шину, лежащую на полу, то шина легко разомкнется и человек не споткнется и не упадет.
9++ Позволяет экспериментировать с топологией. Можно собирать массив, дерево, хоть в кольцо CAN шину замкнуть.
10++ Этот жгут можно использовать не только для CAN, но и для LIN, 1-Wire, RS-485, A2B и прочих проводных интерфейсов. Хоть питание для новогодних гирлянд собирай для елочки.
11++Легко приложить электроды осциллографа или DMM-а буквально к винтам клеммника. Простота отладки и диагностики всей шины.
Недостатки
1-- В случае использования разъёмов на кабель нужна сноровка, чтобы припаивать кабели к внутренностям audio-jack. Потребуется термо-усадка, паяльный фен и прямые руки.

2--В случае mono разъёма нет заземления. Надо использовать stereo разъём и протягивать еще провод для заземления GND. Большинство CAN трансиверов не имеют гальванической изоляции и их пробивает при смещении на -+ 50V. Однако можно просто сделать отельный провод для заземления и соединить все приборы: LapTop, блок питания, программатор, переходник с USB на CAN и target PCB.
Итог
Удалось смастерить простую конфигурируемую и масштабируемую CAN шину буквально из подручных материалов.
Надеюсь, что этот текст поможет и другим программистам микроконтроллеров собирать удобные CAN harness-ы для отладки своих устройств.
Словарь
Сокращение | Расшифровка |
CAN | Controller Area Network |
DMM | Digital MultiMeter |
PCB | printed circuit board |
FNN | Nest Nest Fork |
NFF | Fork Fork Nest |
Ссылки
Ссылки | URL |
CAN-шина (Теория) | |
Утилита CANcat (или CAN-Мессенджер) | |
Обзор USB-CAN переходника USB2CANFD_V1 | |
ЛикБез по CAN-FD | |
Обзор Переходника USB-CAN (SYS TEC USB-CANmodul1) | |
Сканирование шины RS485 | |
Обзор Протокола ISO-TP [ISO 15765-2] | |
Обзор USB-CAN переходника USBCAN-II C | |
Earphone Audio Jack 3.5mm Connector Stereo Adapter 3.5mm RCA Audio Mono Channel Plug to Screw Terminal Audio Mono Channel Plug |
Вопросы
--Существуют ли микросхемы физики CAN с гальванической изоляцией? Да. Вот примеры CA-IS3050G, CA-IS3052G, CA-IS3050W, CA-IS3052W, CA-IS3050U, CA-IS3050WG от http://e.chipanalog.com/
