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
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
'프로젝트 > CAN_OBDII' 카테고리의 다른 글
CAN 통신 ID 값이 뭘 의미하는지 & OBD Broadcast에 관하여 (0) | 2022.01.28 |
---|---|
CAN OBDII 통신 관련 링크 & 파일 모음 (0) | 2022.01.28 |
CAN 통신 모듈(MCP2515) (0) | 2022.01.26 |
Can Controller, CAN Transceiver (0) | 2022.01.25 |
CAN 통신 프레임(Frame) 타입 (0) | 2022.01.25 |
댓글