Доброго времени дня, коллеги!
Начал осваивать микроконтроллеры STM32, возникла необходимость взаимодействовать с контроллером сервопривода по интерфейсу CAN. Сделал тестовую прошивку с отправкой и приемом команд, но что-то пошло не так. То ли запрос не доходит до сервопривода, то ли не приходит обратный ответ.
Есть ли может у кого точно работающий пример с CAN? Надеюсь, разбор работающего кода даст ответы, где проблемы в моем коде. Могу также выложить свой проект если что.
Добрый вечер!
Вот статья с описанием примера работы с CAN - https://microtechnics.ru/stm32-i-protokol-can-nastrojka-v-stm32cubemx/
И также проект с отправкой, приемом и инициализацией - https://microtechnics.ru/mt_can_example/.
Если не получится разобраться, могу посмотреть Ваш проект на предмет проблем потенциальных.
Огромное спасибо! Удалось по статье найти проблему в моем коде. Фильтр сообщений 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);