From fd604f43b82afed539a5d4ef84e91561f6ee5c8c Mon Sep 17 00:00:00 2001 From: Adam Heinrich Date: Thu, 7 Dec 2017 18:06:05 +0100 Subject: [PATCH] STM32: Set valid filter number for CAN3 Filter numbers 14 to 27 are reserved for dual CAN configuration. However, CAN3 operates in single CAN configuration according to the reference manual). --- targets/TARGET_STM/can_api.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/targets/TARGET_STM/can_api.c b/targets/TARGET_STM/can_api.c index 797259c3ea..1f0d977b1a 100644 --- a/targets/TARGET_STM/can_api.c +++ b/targets/TARGET_STM/can_api.c @@ -103,7 +103,13 @@ void can_init_freq (can_t *obj, PinName rd, PinName td, int hz) can_registers_init(obj); + /* Bits 27:14 are available for dual CAN configuration and are reserved for + single CAN configuration: */ +#if defined(CAN3_BASE) && (CAN_NUM > 2) + uint32_t filter_number = (can == CAN_1 || can == CAN_3) ? 0 : 14; +#else uint32_t filter_number = (can == CAN_1) ? 0 : 14; +#endif can_filter(obj, 0, 0, CANStandard, filter_number); }