заработало и у меня
Изначальная проблема была - запустить CAN2 (на stm32f105rc/vc), который при настройках, аналогичных CAN1, работать отказывался...
При экспериментах выяснилось, что CAN2 работает только на отправку. Принять на него что-либо не получается, при этом передающая сторона докладывает, что всё отправлено, все OK.
Для решения проблемы необходимо произвести дополнительные настройки:
- первым делом при настройке второго CAN нужно затактировать CAN1!
- далее (как говорилось ранее/выше) нужно настроить фильтры под второй CAN: в структуре инициализации параметр CAN_FilterNumber для CAN2 должен иметь номер с 14 по 27.
альтернативно - использовать функцию CAN_SlaveStartBank(номер нужного фильтра), которая изменяет номер начального фильтр для CAN2.
Регистры фильтров у CAN1 и CAN2 общие, и настраиваются они в CAN1 (для этого он должен быть затактирован).
При этом в окне регистров CAN2 (в Keil) флаг FINIT - режим инициализации фильтров, в котором приём не активен! - будет находится в установленном состоянии (то есть что-то не то показыавется). Видимо, так как настройки фильтров общие, смотреть их для CAN2 нужно в настройках для CAN1.