본문 바로가기
프로젝트/CAN_OBDII

CAN통신 MCP2515 Mask와 Filter

by eeeun:) 2022. 1. 27.
반응형

CAN 통신으로 자동차와의 통신을 구현하려고 하는데..

예제 코드를 보니 Mask와 Filter를 해줬다.

 

근데 내가 지금까지 공부한 개념에는 Mask와 Filter는 없었는데..

인터넷에 찾아도 제대로 나오지 않고ㅠㅠ

MCP2515 Datasheet를 봤더니 Block Diagram에서 mask와 filter를 찾을 수 있었다.

 

Mask와 Filter의 개념을 아직 이해하지는 못했지만..

아마도 TX와 RX로 받아온 데이터를 처리(필요 없는 값을 거르는..?)하는 역할을 하는 것 같다..

 

더 자세한 내용을 찾게 되면 밑에 추가로 적도록 하겠다.

 


Mask와 Filter는 CAN Message 수신 시 특정한 ID 또는 어떤 범위의 ID만 받기 위한 설정!

Mask는 Filter의 사용 여부(Enable/Disable)를 결정한다고 생각하면 된다.

실제 Message ID가 CAN RX에 수신되었을 때, Filter의 각 bit값이 비교되어 같은지 다른지 판단하여 수용하게 된다.

이때 각 Filter bit값이 비교되기 위해서는 이에 대응되는 Mask bit가 Enable, 즉 1이 되어야 한다.

0일 때는 Filter bit값에 상관없이 모두 수용하게 되는 것입니다.

 

1) 특정한 ID를 받아들이기 위한 예를 들면,

Mask = 0b 010 0001 0101(0x215) - 표준 ID(11 bits)

Filter0 = 0b 010 0001 0101(0x215)로 설정하면 0x215 Message ID만 받게 된다.

물론 Filter가 여러 개 있기 때문에 여러 Message ID을 받을 수 있다.

 

2) 특정 영역의 ID를 받기 위한 예를 들면,

Mask = 0b 111  1111 1000 (0x7f8)

Filter0 = 0b 001 0000 0000(0x100)

Filter1 = 0b 010 0001 0000(0x210)

 

< 수신받을 수 있는 ID의 범위 >

Filter0 : 0b 001 0000 0000(0x100) ~ 0b 001 0000 0111(0x107)

Filter1 : 0b 010 0001 0000(0x210) ~ 0b 010 0001 0111(0x217)

Mask의 하위 3bits가 0(Disable)이기 때문에 이에 대응하는 Filter의 값을 무시하고 받아들인다.

Filter는 000~111의 범위는 모두 수용 가능!

 

Mask bit가 1이면 이에 대응하는 Filter bit값이 0인지 1인지를 수신되는 bit와 비교하고

Mask bit가 0이면 Filter의 bit와 상관없이 모두 수용한다.

 

관련 References

https://forum.arduino.cc/t/mcp2515-can-filtering/506401

 

MCP2515 CAN FILTERING

Hello to all. Im using mcp2515 CAN shield with arduino all works fine but seems I can't figure out those mask and filters. the way they work. it's defiantly an odd way. The mcp 2515 has 2 masks and 6 filters and if i need to see a specific IDs I can no pro

forum.arduino.cc

https://forum.arduino.cc/t/mcp2515-can-filter-mask/631355

 

MCP2515 CAN Filter/Mask

Guys - i apologize ahead of time for the fact that MANY posts have been made about this. It must be a mental block or something because i have banged my head for hours against a wall >:( >:( . I need help defining the masks and filters for a can network...

forum.arduino.cc

https://riayang.tistory.com/6

 

can통신 filter/mask

먼저 Mask 및 Filter에 대해서 간략히 설명드리면, CAN Message 수신시 특정한 ID 또는 어떤 범위의 ID만 받고저 할때 설정하시면 됩니다. Mask는 Filter의 사용여부(Enable/Disable)를 결정 한다고 보시면 됩니

riayang.tistory.com

https://etfplant.tistory.com/1130

 

CAN 통신 Filter, Mask 설정하는 방법, 예제

먼저 CAN 통신에서 Filter를 설정하는 방법은 총 4가지가 있습니다. 11bit Standard ID의 경우 1. 2 standard CAN IDs: 허용하는 CAN ID의 범위를 지정해주거나 2개를 통과시킬 수 있는 방식 2. 1 standard CAN ID..

etfplant.tistory.com

https://answerofgod.tistory.com/862

 

CAN fitering 방법

CAN통신에서 데이터를 구분해서 받기 위해 필터링이라는 것이 존재합니다. 즉, 내가 원하는 것만 받을래~ 하는 것입니다. 레퍼런스 메뉴얼을 보시면 CAN 필터링에 대한 부분이 나옵니다. ID MASK는 3

answerofgod.tistory.com

https://louie0724.tistory.com/363

 

[강의] STM32F4 - CAN 통신

작성일: 21년 1월 10일 수정일: 21년 6월 1일  - STM32 CAN 통신 설정 내용 추가 Index 1. CAN 통신 설명 2. CAN 통신 설정 3. 프로그래밍 1. CAN 통신 설명 - 캔통신은 여러대의 장치와 두개의 선만으로 통신가.

louie0724.tistory.com

 

728x90

댓글