Инструменты пользователя

Инструменты сайта


doc:mk:1886be:can_mask

Фильтрация кадров CAN в 1886ВЕ5У

Контроллера CAN имеет 6 буферов (приём или передача) и 2 набора фильтров (FLTR1(2)/MASK1(2)). В общее пространство единовременно отображён лишь 1 буфер и 1 фильтр/маска. Выбор осуществляется в регистре CAN_BSR.

Выбор используемого фильтра для текущего буфера задаётся в регистре CAN_RXCS, поле MASKACTID:

  • 001 – используется фильтр FLTR1/MASK1;
  • 010 – используется фильтр FLTR2/MASK2;
  • 011 – используются фильтры FLTR1/MASK1 и FLTR2/MASK2.

Фильтрация фреймов по ID осуществляется по следующей формуле:

ID & FLTR1(2) == FLTR1(2) & MASK1(2) ,

где ID это значения 4 регистров CAN_ID0-3:

ID
31:24 23:16 15:8 7:0
CAN_ID3CAN_ID2CAN_ID1CAN_ID0

FLTR1(2) – значения 4 регистров CAN_FLTR11-14(21-24):

FLTR1(2)
31:24 23:16 15:8 7:0
CAN_FLTR14(24)CAN_FLTR13(23)CAN_FLTR12(22)CAN_FLTR11(21)

MASK1(2) – значения 4 регистров CAN_MASK11-14(21-24):

MASK1(2)
31:24 23:16 15:8 7:0
CAN_MASK14(24)CAN_MASK13(23)CAN_MASK12(22)CAN_MASK11(21)

Значение FLTR ответственно за выделение бит ID, участвующих в фильтрации. Значение MASK определяет конкретное значение бит, участвующих в фильтрации. В фильтрации участвуют все биты ID. При использовании аппаратной фильтрации необходимо установить бит ROP (приём своих и чужих сообщений) в регистре CAN_CNTR.

doc/mk/1886be/can_mask.txt · Последние изменения: 2018/11/28 18:33 — vova