ВходНаше всё Теги codebook PARTS Поиск Опросы Закон Понедельник
23 мая
1158797
Argon (26.12.2021 14:30, просмотров: 406)
А кто-нить тут силен в фильтрах и масках CAN STM32? Никак не уловлю суть. 

Отправляю сообщения с 29-битным идентификатором. Пытаюсь ловить с такими настройками (богомерзкий HAL):


sFilterConfig.FilterBank = 0;

sFilterConfig.FilterMode = CAN_FILTERMODE_IDMASK;

sFilterConfig.FilterScale = CAN_FILTERSCALE_32BIT;

sFilterConfig.FilterIdHigh = 0x0000;

sFilterConfig.FilterIdLow = 0x0000;

sFilterConfig.FilterMaskIdHigh = 0xffff;

sFilterConfig.FilterMaskIdLow = 0xfff0;

sFilterConfig.FilterFIFOAssignment = CAN_RX_FIFO0;

sFilterConfig.FilterActivation = ENABLE;

sFilterConfig.SlaveStartFilterBank = 14;


Ловятся только сообщения с идентификаторами 0 и 1. А по логике вроде должны ловиться 0...0xf.

Надеюсь, в 32-битном режиме фильтров не надо никуда побитно двигать значения фильров/масок? Если надо (а такие примеры находит гугл), то не пойму куда, насколько и почему. Вроде, никакого хитрого маппинга не должно быть.

Что не улавливаю?