수용 필터는 CAN 컨트롤러가 받은 프레임의 식별자를 보고, 그 프레임을 소프트웨어에 넘길지 정하는 기능이다.[1] CAN의 식별자는 목적지가 아니라 데이터의 뜻을 나타낸다. 송신 노드가 보낸 프레임은 모든 노드에 전해지고, 각 노드는 메시지 필터링으로 그 데이터를 쓸지 스스로 정한다.[2]

하드웨어 필터링

STM32F10x의 bxCAN은 식별자 필터링을 하드웨어로 해서, 소프트웨어로 필터링할 때 들 CPU 자원을 아낀다. 필요한 메시지는 SRAM(Static Random-Access Memory)으로 복사되고, 필요 없는 메시지는 소프트웨어가 관여하지 않고 버려진다.[1]

수용 필터를 통과하지 못한 프레임도 버스에서는 받는다. 모든 수신 노드는 받는 메시지의 일관성을 검사해, 일관된 메시지에는 ACK를 보내고 일관되지 않은 메시지에는 오류를 알린다.[2] MCP2515도 오류 없이 받은 프레임에는, 그 프레임을 받도록 설정되어 있는지와 상관없이 ACK를 보낸다.[3]

MCP2515는 버스에서 받은 메시지를 모두 MAB(Message Assembly Buffer)에 모으고, 수용 필터 조건을 만족한 메시지만 수신 버퍼로 옮긴다.[3]

마스크와 필터

Bosch CAN 2.0 규격과 Bosch CAN FD 1.0은 메시지 필터링이 식별자 전체를 기준으로 하도록 정한다. 마스크 레지스터는 선택 사항으로, 식별자의 어느 비트든 필터링에서 don’t care로 두어 식별자 묶음을 고를 수 있게 한다. 마스크 레지스터를 두면 그 모든 비트를 설정할 수 있어야 하고, 마스크의 길이는 식별자 전체일 수도 일부일 수도 있다.[2][4]

마스크는 식별자의 어느 비트를 필터와 비교할지 고른다. 마스크 비트가 1인 자리에서만 필터 비트와 식별자 비트를 비교하고, 0인 자리는 필터 비트와 상관없이 받아들인다.[3]

MCP2515는 수신 버퍼 2개에 수용 마스크 2개와 수용 필터 6개를 나눠 둔다. 한 버퍼에는 마스크 1개와 필터 2개, 다른 버퍼에는 마스크 1개와 필터 4개가 딸린다. 받은 프레임의 식별자가 필터 하나와 일치하면 그 필터가 딸린 수신 버퍼에 프레임을 넣는다.[3]

리스트 모드

bxCAN은 필터 뱅크를 마스크 모드나 식별자 리스트 모드로 설정할 수 있다. 식별자 리스트 모드에서는 마스크 레지스터도 식별자 레지스터로 쓰고, 들어온 식별자의 모든 비트가 필터에 적은 식별자와 같아야 받는다.[1]

범위 필터

Bosch M_CAN의 필터 요소는 식별자의 범위를 주는 필터, 식별자 한두 개를 주는 필터, 식별자와 마스크를 주는 필터 가운데 하나로 설정한다. 기본 포맷 식별자용 필터와 확장 포맷 식별자용 필터를 따로 둔다.[5]

[1]
“RM0008 Reference manual: STM32F101xx, STM32F102xx, STM32F103xx, STM32F105xx and STM32F107xx advanced Arm-based 32-bit MCUs,” STMicroelectronics, 2021. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20260827132512/https://www.st.com/resource/en/reference_manual/cd00171190-stm32f101xx-stm32f102xx-stm32f103xx-stm32f105xx-and-stm32f107xx-advanced-arm-based-32-bit-mcus-stmicroelectronics.pdf
[2]
“CAN Specification Version 2.0,” Robert Bosch GmbH, 1991. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20171215103144/http://www.bosch-semiconductors.de:80/media/ubk_semiconductors/pdf_1/canliteratur/can2spec.pdf
[3]
“MCP2515 Stand-Alone CAN Controller with SPI Interface,” Microchip Technology Inc., 2019. Accessed: Sep. 25, 2026. [Online]. Available: https://ww1.microchip.com/downloads/en/DeviceDoc/MCP2515-Stand-Alone-CAN-Controller-with-SPI-20001801J.pdf
[4]
“CAN with Flexible Data-Rate Specification Version 1.0,” Robert Bosch GmbH, 2012. Accessed: Sep. 25, 2026. [Online]. Available: https://web.archive.org/web/20151211125301/http://www.bosch-semiconductors.de/media/ubk_semiconductors/pdf_1/canliteratur/can_fd_spec.pdf
[5]
“M_CAN Controller Area Network User’s Manual, Revision 3.3.1,” Robert Bosch GmbH, 2023. Accessed: Sep. 25, 2026. [Online]. Available: https://www.bosch-semiconductors.com/media/ip_modules/pdf_2/m_can/mcan_users_manual_v331.pdf