Здравствуйте, столкнулся с непонятной проблемой: запустил CAN1 по вашей статье (STM32 и протокол CAN. Настройка в STM32CubeMx). Все работает стабильно и правильно.
Делаю один в один но не через CAN1, а через CAN2 - не срабатывает колбэк по приему данных:
HAL_CAN_RxFifo0MsgPendingCallback()
На плате все проверил, прозвонил - не нашел проблемы. На самом деле уже все перепроверил что только можно, даже идей больше нет, поэтому решил создать тему.
Заранее благодарю всех, кто откликнется 🙂
Доброго времени суток, а настройка фильтрации как выглядит?
@aveal Как в статье, только для CAN2:
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(&hcan2, &canFilterConfig);
Прием заработал, спасибо за быстрый ответ, можно дальше работать с проектом 🙂