CiRXFnSID: ECAN регистр приемного фильтра n стандартных идентификаторов (n=0-15)
CiRXFnEID: ECAN регистр приемного фильтра n расширенных идентификаторов (n=0-15)
7.1.2 Маска приемных фильтров
Как показано на рисунке 11 и рисунке 12, маска приемного фильтра определяет какие биты в идентификаторе принятого сообщения проверяются приемным фильтром.
Приемный фильтр сам выбирает одну из масок приемных фильтров используя биты FnMSK в регистрах CiFMSKSEL1 и CiFMSKSEL2:
CiFMSKSEL1<FnMSK>: выбор маски для фильтров 0-7
CiFMSKSEL2<FnMSK>: выбор маски для фильтров 8-15
Можно выбрать следующие значения бита FnMSK<1:0> :
00 - Выбрана маска 0 приемного фильтра
01 - Выбрана маска 1 приемного фильтра
10 - Выбрана маска 2 приемного фильтра
11 - Маска приемного фильтра не выбрана
Таблица 1 - это таблица истинности, которая показывает как каждый бит идентификатора сравнивается с маской и фильтром, определяя будет ли сообщение принято или отброшено. Бит маски в основном определяет какой бит применится к фильтру. Если любой бит маски установлен в ноль, этот бит автоматически принимается, несмотря на бит фильтра.
Таблица 1. Таблица истинности приёмного Фильтра/Маски
Маска (SIDn/EIDn) |
Фильтр (SIDn/EIDn) |
сообщение (SIDn/EIDn) |
Принимать или отклонять бит n |
0 |
Х |
Х |
Принимать |
1 |
0 |
0 |
Принимать |
1 |
0 |
1 |
Отклонять |
1 |
1 |
0 |
Отклонять |
1 |
1 |
1 |
Принимать |
7.1.3 Выбор типа сообщения
Бит включения расширенного идентификатора (EXIDE) в регистре CiRXFnSID<3> включает прием стандартного или расширенного сообщения. Бит режима приема идентификатора (MIDE) в регистре CiRXMnSID<3> включает бит CiRXFnSID<EXIDE>. Если бит CiRXMnSID<MIDE> установлен, выбирается только тип сообщений выбранные CiRSFnSID<EXIDE> битом. Если CiRXMnSID<MIDE> сброшен, бит CiRXFnSID игнорируется и все сообщения эквивалентные фильтру принимаются.
EXIDE |
MIDE |
Выбор |
0 |
1 |
Приемный фильтр проверяет стандартный идентификатор |
1 |
1 |
Приемный фильтр проверяет расширенный идентификатор |
x |
0 |
Приемный фильтр проверяет стандартный/расширенный идентиф. |
7.1.4 Конфигурация приемного фильтра
Пример 4 показывает программный код используемый для конфигурации приемного фильтра 0 для приема сообщений со стандартным идентификатором используя регистр маски приемного фильтра, чтобы маскировать биты SID<2:0>.
Пример 4. Фрагмент программы для фильтрации стандартного фрейма данных
/* Разрешаем доступ к регистрам приёмных фильтров */
C1CTRL1bits.WIN=0x1;
/* Выбираем маску 0 для приёмного фильтра 0 */
C1FMSKSEL1bits.F0MSK=0x0;
/* Конфигурация регистра маски фильтра 0 чтобы маскировать SID<2:0>
Mask Bits (11-bits) : 0b000 0000 0111 */
C1RXM0SIDbits.SID = 0x0007;
/* Конфигурация приёмного фильтра 0 чтобы соответствовать стандартному
идентификатору (11-bits): 0b011 1010 xxx */
C1RXF0SIDbits.SID = 0x01D0;
/*Приёмный фильтр 0 для проверки стандартного идентификатора */
C1RXM0SIDbits.MIDE = 0x1;
C1RXF0SIDbits.EXIDE= 0x0;
/* приёмный фильтр 0 для использования буфера сообщений 10 для хранения сообщений */
C1BUFPNT1bits.F0BP = 0xA;
/* Разрешаем фильтр 0 */
C1FEN1bits.FLTEN0=0x1;
/* сбрасываем бит WIN для доступа к регистрам управления */
C1CTRL1bits.WIN=0x0;
Пример 5 иллюстрирует код конфигурирующий приёмный фильтр 2 для приёма расширенного идентификатора, используя регистр маски приёмного фильтра, чтобы маскировать биты EID<5:0>
Пример 5.Фрагмент программы для фильтрации расширенного фрейма данных.
/* Выбор маски 1 для приёмного фильтра 2 */
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.