Ищу помощи разобраться с CAN шиной через STM32 и Can Usb адаптер
Всем привет! Пытаюсь в робототехнику, пока не очень успешно) Прошу совета, как дебажить то, что не работает.
Моя цель - отправить с компа на stm32 команду через провода по CAN шине.
Что у меня есть:
1) Модуль CANable USBпреобразователь CANdleLight TJA1051T/3 - втыкаю в комп
2) WCMCU-230 модуль CAN шины на базе SN65HVD230 - подключаю туда CanH и CanL
3) STM32 bluepill STM32F103C8Tx - надеюсь тут поймать пакет и обработать.
Код писал с помощью ChatGpt, и в итоге уперся в то, что на уровне кода по ощущениям все норм, а вот на железячном не норм. И я не понимаю как понять, где же норм, а где не норм, т.е. как это все дебажить, с какой стороны подступиться.
Ниже поподробней напишу про настройки и код
С компа код на C# через библиотеку LibUsbDotNet
Устройство определяется, устройство открывается, принимает настроечные пакеты.
В режиме LoopBack загораются три лампочки, и синяя моргает, когда жму кнопку "отправить пакет"
Когда включаю Normal Mode - горит только красная лампочка.
И вот уже здесь я не понимаю - либо я неправильно что-то проинициализировал, либо так и должно быть, либо имеет значение вся сеть устройств на CAN шине, включая терминирующие резисторы. Но выглядит подозрительно. Документация на адаптер? Не нашел(
Отправляю такое: ID: 0x123 DLC:4 Data: 11-22-33-44Echo: FFFFFFFF
В ответ спустя секунду приходит такое: ID: 0x20000127 DLC:4 Data: 11-22-33-44Echo: FFFFFFFF
Говорят, что это ошибка на отсутствие ответа из сети на отправленный пакет. Но как понять - пытался он его отправить, или даже и не пробовал?
Вот еще фоточки соединений:


Кто захочет посмотреть код, вот тут он:
https://github.com/VogdVogd/CanTest/tree/main/Assets/Scripts
Точка входа - LibUsbDotNetTest.cs
По таймингам целился в 500000
И немного про STM32:
Вот, пока так. Скажите, если нужна еще доп инфа!
UPD: нашел косяк кода при инициализации Can Usb. Теперь он горит лампочками.
В STM32 прописал отправку пакета, отправляется что-то, через HAL_CAN_GetError ошибок нет.
Can Usb что-то ловит, но не то что нужно. В момент отправки из STM32 приходит два пакета по 20 байт
RAW (20): FF-FF-FF-FF-0C-00-00-20-08-00-00-00-00-30-04-00-00-00-00-00
RAW (20): FF-FF-FF-FF-0C-00-00-20-08-00-00-00-00-30-02-00-00-00-00-00
Выглядят как коды ошибок, как будто физически пакеты неправильно собрались из шины.
Видимо, какой-то разсинхрон таймингов или чего-то еще, придется осциллограф добывать и смотреть какое устройство на каких таймингах работает... Ух как это все сложно!















