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

[Решено] Проблема с отправкой команд по CAN на STM32

R2T2
 R2T2
(@r2t2)
New member

Доброго времени дня, коллеги!

Начал осваивать микроконтроллеры STM32, возникла необходимость взаимодействовать с контроллером сервопривода по интерфейсу CAN. Сделал тестовую прошивку с отправкой и приемом команд, но что-то пошло не так. То ли запрос не доходит до сервопривода, то ли не приходит обратный ответ.

Есть ли может у кого точно работающий пример с CAN? Надеюсь, разбор работающего кода даст ответы, где проблемы в моем коде. Могу также выложить свой проект если что.

Цитата
Создатель темы Размещено : 06.06.2021 20:57
Метки темы
Aveal
(@aveal)
Top level Admin

Добрый вечер!

Вот статья с описанием примера работы с CAN - https://microtechnics.ru/stm32-i-protokol-can-nastrojka-v-stm32cubemx/

И также проект с отправкой, приемом и инициализацией - https://microtechnics.ru/mt_can_example/.

Если не получится разобраться, могу посмотреть Ваш проект на предмет проблем потенциальных.

ОтветитьЦитата
Размещено : 06.06.2021 21:24
R2T2
 R2T2
(@r2t2)
New member

Огромное спасибо! Удалось по статье найти проблему в моем коде. Фильтр сообщений CAN был настроен неверно, поэтому ответ не проходил. Отключил фильтрацию и пошел трафик:

CAN_FilterTypeDef canFilterConfig;
canFilterConfig.FilterBank = 0;
canFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;
canFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;
canFilterConfig.FilterIdHigh = 0x0000;
canFilterConfig.FilterIdLow = 0x0000;
canFilterConfig.FilterMaskIdHigh = 0x0000;
canFilterConfig.FilterMaskIdLow = 0x0000;
canFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;
canFilterConfig.FilterActivation = ENABLE;
canFilterConfig.SlaveStartFilterBank = 14;
HAL_CAN_ConfigFilter(&hcan, &canFilterConfig);
ОтветитьЦитата
Создатель темы Размещено : 11.06.2021 23:56
Поделиться: