CAN – это протокол, ориентированный на использование в условиях помех. Различные сообщения, передающиеся по сети, имеют идентификатор, и каждая станция решает, основываясь на этом идентификаторе, получать это сообщение или нет. Этот идентификатор определен в поле идентификатора CAN-фрейма.
При этом адрес приемника устанавливается в самом приемнике путем настройки входных фильтров соответствующих микросхем.
Входные фильтры представляют собой решета, или идентификационные экраны. Любое сообщение, которое проходит через входные фильтры, должно быть обработано процессором обслуживания CAN-контроллера. Чем большее количество единиц может быть отфильтровано, тем меньше нагрузка на процессор.
Микросхемы, поддерживающие CAN-протокол, могут иметь одиночный фильтр или многократные фильтры, в зависимости от конкретной реализации. Существуют следующие два типа входных фильтров:
- фиксированные – фильтры, которые требуют, чтобы биты соответствовали точно один к одному (One-for-One);
- Mask-and-Match (маскируемые) – фильтры, которые применяют маску к полю идентификатора, прежде чем он сравнивается с приемным регистром кода.
Например, на рисунке 1.5 регистр маски сконфигурирован так, что полученные биты 10-6 идентификатора должны соответствовать битам 10-6 в приемном регистре кода. В этом примере биты 10-6 идентификатора должны быть установлены в 11110, а остальные не имеют значения. Если биты 10-6 установлены в 11110, то эти сообщения принимаются независимо от значений битов 5-0.

Рисунок 1.5 – Пример поразрядного маскирования Mask-and-Match