Top.Mail.Ru
Уведомления
Очистить все

[Решено] STM32f103 попеременная работа USB и CAN

fokin91
(@fokin91)
Level 0

Добрый день.

Помогите разобраться с работой USB на F103 мк.

Увидел одно устройство - оно работает в can шине. Но его можно подключить по USB, тогда оно перезагрузится и по USB можно поменять настройки в нем. При отключении USB оно вновь перезагружается и работает по can с новыми настройками.

 

пробовал реализовать такое сам.

Сделал 2 проекта в CubeMX, один по кан шлет один пакет в шину, второй через виртуальный ком порт шлет данные в USB.

По отдельности работает, но когда хочу объединить в один - не работает.

Можно заставить заработать USB, если выполнить

HAL_CAN_Stop(&hcan);    
HAL_CAN_DeInit(&hcan); 

но заставить в этом проекте работать CAN у меня ни как не получается.

Пробовал закомментировать строку инициализации USB в main.c, в надежде что без этого can запустится, но тщетно

MX_USB_DEVICE_Init();

позже пробовал запустить деинициализацию USB

 USBD_Stop(&hUsbDeviceFS);
	USBD_DeInit(&hUsbDeviceFS);

но тщетно.

 

Как в проекте отключить инициализацию USB  и оставить только инициализацию кан?

Хочу или перемычкой, или заведу напряжение с USB на отдельный пин, что бы была возможность двойной загрузки.

 

 

Цитата
Topic starter Размещено : 04.12.2021 23:28
Aveal лайков
Aveal
(@aveal)
Top level Admin

Добрый день!

Делал подобное когда-то, постараюсь восстановить воспоминания. Вроде как система такая:

1. Включается тактирование CAN, USB не работает.

2. Отключается тактирование CAN, USB восстанавливает работоспособность.

Соответственно, детектируем подключение USB - отключаем CAN, работаем по USB, по окончанию - включаем CAN.

ОтветитьЦитата
Размещено : 05.12.2021 11:56
fokin91
(@fokin91)
Level 0

@aveal 

да, именно так и работает. Была ошибка в тактировании того проекта, что бы с USB.

Как детектировали USB? Через диод подавали напряжение на один из пинов или программно?

ОтветитьЦитата
Topic starter Размещено : 05.12.2021 17:27
Aveal
(@aveal)
Top level Admin

@fokin91 

Электрически чаще. В одном недавнем проекте - питание от аккумулятора, но при подключении USB начинается зарядка и схема питается от USB. При этом постоянно мониторится входное напряжение, соответственно, когда USB подключено там 5В. Порог спокойно можно брать 4.5В и сравнивать ) Но это частный случай, скорее нетрадиционный, чем типичный, так что по сути да - по напряжению с USB разъема.

Программно в текущей версии HAL есть колбэки:

HAL_PCD_DisconnectCallback()
HAL_PCD_ConnectCallback()

Но это все основано на мониторинге VBUS, так что аналогично в принципе.

ОтветитьЦитата
Размещено : 06.12.2021 10:48
Поделиться: