Всех приветствую!
Столкнулся со странной проблемой... Создаю проект для STM32F103RB с работой по CAN и по USB. Идея такая, что данные, принятые по USB, надо перекидывать в CAN. Но не в этом суть =)
Генерирую голый проект с одной лишь инициализацией этих интерфейсов, STM32Cube версии 6.2.1. Прошиваю, втыкаю USB-кабель - сбой запроса дескриптора устройства, код ошибки 43:
Непонятно, но это только начало) Случайно так вышло, что у меня установлен еще STM32Cube версии 5.6.0. Проделываю в нем аналогичные действия, создаю пустой проект с USB - подключаю, устройство определяется.
Что происходит?)
P.S. Класс USB - CDC.
Случайно так вышло, что у меня установлен еще STM32Cube версии 5.6.0. Проделываю в нем аналогичные действия, создаю пустой проект с USB - подключаю, устройство определяется.
А в этом втором проекте точно аналогично - и CAN и USB? )
Вообще в STM32F103 USB и CAN используют общий буфер памяти SRAM, поэтому одновременно не могут работать априори, к сожалению... На практике, как только включается тактирование CAN - отваливается USB, это и происходит.
Возможное решение - переключаться между использованием USB и CAN на лету, во время работы ПО. Ну либо переходить на F105, например.
Ах вот оно что!
А в этом втором проекте точно аналогично - и CAN и USB? )
Да, действительно, во втором был только один USB активирован 😀
По итогу - в обеих версиях STM32Cube работает USB, когда интерфейс в одиночестве, и не работает связка CAN + USB. В общем, как и должно быть))
Aveal, спасибо!