«В электронике все — это либо АЦП либо ЦАП: аудио кодеки, датчики, тот же CAN адаптер можно рассматривать, как сдвоенный однобитный AЦП + ЦАП.»

В этом тексте я произвел обзор USB-CAN переходника USB2CANFD V1, который я купил себе на Aliexpress, чтобы поиграться. USB2CANFD V1 - относительно новое устройство (2024 год), которое вобрало в себя всё самые проверенные временем подходы к разработке программно-аппаратных решений. При этом устройство оказалось еще и весьма бюджетным вариантом для отладки CAN шины. Стоит всего 600 рублей! Вдумайтесь, CANFD за 600 руб! Такого рода переходники порой просто необходимы, так как в LapTop компьютерах не делают порта для CAN интерфейса.
В сущности любой аналоговый CAN-PHY ASIC можно рассматривать, как однобитный ADC + DAC с прикрепленным аппаратным конечным автоматом (CAN-MAC) для синтаксического разбора структуры CAN пакета внутри какого-нибудь микроконтроллера (в данном случае STM32G0B1CBT6).
Теорию CAN интерфейса можно почитать тут. По CAN-FD можно почитать тут. Там написано более чем достаточно. Здесь же поговорим о практических аспектах работы с данным гаджетом, про то с какой стороны следует подходить к работе на CAN-трансивере USB2CANFD V1.
Аппаратная часть
Что надо из оборудования?
Наименование | Количество | Назначение |
Кабель USB-C | 1 | Для соединения переходника и компьютера |
Переходник с USB-A(гнездо) на USB-C вилка | 1 | Чтобы подключиться к телефону |
Плата USB2CANFD V1 | 1 | сам переходник с USB на CAN |
плоская отвертка | 1 | чтобы монтировать провода к клемнику |
перемычки вилка-гнездо | 2 | для подключения между PCB |
Переходник основан на MCU STM32G0B1CBT6. Плата выглядит так.

Условно можно представить аппаратную часть вот такой блок-схемой. Устройство состоит из CAN front-end в виде SIT1051A (однобитный ADC+DAC) и CAN back-end в виде STM32G0B1CBT6 (MAC контроллер).

Программная часть
Без специфического софта все эти переходники с USB на CAN - лом цветмета. Поэтому надо установить следующее ПО.
Что надо из ПО?
Название утилиты | Версия | Пояснение |
CanGaroo | 0.2.4 | Клиентская утилита для PC |
Terminal | v1.9b | Терминал последовательного порта |
SavvyCAN | any | Клиентская утилита для PC |
PuTTY | any | Терминал последовательного порта |
При подключении появляется COM8 порт. Битовая скорость 1152000 бит/c.

Протокол управления трансивером текстовый. Называется SLCAN. Можно в консоли в текстовом режиме управлять устройством. Примерно как в случае с AT-командами. После каждой команды надо отправлять 0x0d (\r). Так как тут виртуальный COM порт, то baud rate можно выбрать любой.

Точно так же можно управлять трансивером из-под PuTTY. Буквально голыми руками. Надо лишь в настройках Terminal поставить принудительный возврат каретки при нажатии ender и активировать локальное эхо.

После чего CAN-трансивером можно управлять прямо из командной строки.

Когда нам что-то присылают, то в терминале переходника мы обнаружим по одной строчке на принятый CAN пакет. Что-то вот такое.

Это несколько основных текстовых команд протокола SLCAN.
Запрос | Ответ | Пояснение |
V | WeAct Studio V1.0.0.3_bb264e71 | Reads the firmware version |
M0 | -- | Set to normal mode (default) |
O | -- | Opens the CAN channel |
S6 | -- | Set the nominal bit rate to 500k |
E | CANable Error Register: 0 | Read the failure state |
t002133 | -- | Отправить CAN пакет ID:0x002 Размер:1байт 0x33 |
TIIIIIIIILDD... | ? | Transfer data frame (extended ID) [ID, length, data] |
bIIILDD... | ? | Transmit CANFD standard frames (BRS enabled) [ID, length, data] |
Если извне нам присылают пакет, то в последовательном порте он появится как текстовая строчка. Например, строка t0013444455 значат, что принят CAN пакет ID:0x1,Size:3,Data: 0x444455

Хорошо что есть текстовый протокол для управления устройствам. Текстовый протокол понимает и человек и программа.
Еще для взаимодействия с трансивером существуют GUI утилиты. Для взаимодействия с трансивером USB2CANFD V1 со стороны LapTop PC можно прибегнуть к GUI утилите под названием СanGaroo.
После запуска надо выбрать Measurement ->Start Measurement (F5).

Выбрать битовую скорость и нажать OK.

В клиентском ПО можно видеть принятые и отправленные пакеты.

При CAN отправке прошивка мигает синим LEDом. При приеме прошивка мигает зеленым LEDом.
Программа СanGaroo так устроена, что в окне Transmit View в каждый отдельный момент времени можно отправлять только одно CAN сообщение. Это не всегда удобно для отладки прошивок. Однако это легко обойти. Надо выбрать Windows->New->Transmit View ->Measurement ->Stop Measurement ->Start Measurement (F5) и сконфигурировать еще одно CAN сообщение для отправок.
SavvyCAN
Второй утилитой для работы с переходником USB2CANFD_V1 является SavvyCAN. Открываем Connection->Open connection Window ->Add New Device Connnection. Выбираем SLCAN Serial, COM порт и выставляем битовую скорость CAN

Появится вот такое окно

Затем можно переключится на основное окно и выбирать разнообразные метрики трафика: рассматривать те или иные ID.

Можно менять вид

Можно рассматривать даже отдельные биты внутри полей данных.

Отправить же пакет можно в окне Fuzzing (размытие). Производится это наклёвыванием курсором мышки нужных вам битов в CAN-матрице пакета.

Недостатки трансивера USB2CANFD_V1
--Нет доступа к схемотехнике. К слову, именно поэтому не ясно зачем нужна 8ми пиновая квадратная микросхема в верхнем слое.
--Нет корпуса. Хотя это и не надо, так как сверху и снизу присутствуют два защитных экрана из плексигласа.
--Официальная клиентская программа СanGaroo не показывает счетчик принятых CAN пакетов. Хотя эта функция присутствует у других клиентский утилит (например PCAN-View, SavvyCAN)

Достоинства трансивера USB2CANFD_V1
++Есть serial command line interface (CLI). Это значит, что вы можете писать свои собственные PC программы для управления трансивером USB2CANFD_V1. Достаточно всего лишь открыть COM порт и начать посылать и принимать пакеты.
++Благодаря приложению CanJab можно управлять трансивером USB2CANFD_V1 буквально с мобильного телефона.
++Есть поддержка CAN-FD.
++Дешево. Ну сами посчитайте... Где вы еще купите CAN-FD трансивер за 600 руб? Это же просто чудо!

++Миниатюрное исполнение. CAN-трансивер размером с USB-flash-ку. Помещается в спичечный коробок. Ничего не весит среди оборудования для командировок.
++Есть поддержка платы в Zephyr Project. Можно сварить для платы USB2CANFD_V1 свою custom made прошивку.
Итог
Удалось научиться пользоваться USB-CAN переходником USB2CANFD_V1. Удалось понять как отправлять и как принимать CAN пакеты.
Вообще очень хорошо, что разработчики USB2CANFD_V1 добавили в свой прибор интерфейс командной строки. Это делает возможным интеграцию трансивера в разное оборудование. Это позволяет писать свои консольные и GUI приложения для данного переходника.
Это открывает дорогу для полноценной отладки устройств с подключениями к CAN шине.
Словарь
Акроним | Расшифровка |
CAN | Сontroller area network bus |
USB | Universal Serial Bus |
MAC | Medium access control |
PHY | Physical layer |
MCU | microcontroller unit |
CLI | Command-line interface |
GUI | Graphical User Interface |
PCB | Printed circuit board |
CAN FD | Controller Area Network Flexible Data-Rate |
Ссылки
Название | URL |
WeActStudio.USB2CANFDV1 | |
https://docs.google.com/spreadsheets/d/1X25fF9UKQxbNZy49xOPuAorWi8ZBsr_LF1MqkwdYDfs/edit?gid=0#gid=0 | |
USB2CANFD Converter | https://www.chipdip.ru/product/usb2canfd-converter-adapter-usb-canfd-can2.0-weact-studio-9001923010 |
zephyr/boards/weact /usb2canfdv1 | https://github.com/zephyrproject-rtos/zephyr/tree/main/boards/weact/usb2canfdv1 |
Почему Нам Нужен UART-Shell? (или Добавьте в Прошивку Гласность) | |
SLCAN Protocol Implementation | https://deepwiki.com/normaldotcom/canable2-fw/2-slcan-protocol-implementation |
CanJab | |
USB2CANFDV1 | https://docs.zephyrproject.org/latest/boards/weact/usb2canfdv1/doc/index.html |
SavvyCAN | |
CAN-шина (Теория) | |
ЛикБез по CAN-FD | |
Обзор Переходника USB-CAN (SYS TEC USB-CANmodul1) | |
Обзор USB-CAN переходника USBCAN-II C | |
Обзор Протокола ISO-TP [ISO 15765-2] |
Вопросы
Где можно скачать *.pdf файл с полной схемотехникой CAN‑трансивера USB2CANFD V1?
Существует ли какая бесплатная клиентская Windows CAN утилита, которая посылает и принимает по ISO‑TP огромные массивы сырых данных (бинарные файлы)? Утилита, которая оперирует не на канальном уровне, а на транспортном. Что‑нибудь типа аналога культовой tool‑ы NetCat, только не для Ethernet протокола, а для CAN пакетов.