CAN제품 개발시 ID 필터링의 중요성
Can 통신의 경우 bus형태의 통신라인으로 연결되어 있습니다.
그렇다보니 한 디바이스가 보낸 데이터를 모든 디바이스에서 수신받게 됩니다.
이때에 자기가 사용하는 것과 사용하지 않는 MSG ID를 적절히 필터링하여 사용하여야 합니다.
필터링의 방법으로는 ID LIST방식과 ID MASK방식이 있는데, ID LIST는 받을 ID 하나씩 일일이 적어서 필터링하며,
ID MASK의 경우 연속된 ID를 필터링할 경우 범위를 지정하여 필터링 합니다.
STM시리즈의 CAN 필터링 방법은 이곳을 눌러 확인하실 수 있습니다.
ID를 필터링하지 않을 경우 받은 데이터를 처리하지 않을 시 잘못하면 받은 메세지 ID에 내가 보내는 데이터를 넣어서 보내거나 엉뚱한 데이터를 보내게 되어
통신상에 심각한 오류를 일으킬 수 있습니다.
아래는 실제 통신상에서 PCAN을 이용하여 로그를 찍은 것입니다.
위 사진의 경우 CAN 필터링이 제대로 적용되지 않았고, 수신된 데이터를 제대로 처리되지 않아 다른 디바이스가 보낸 MSG ID를 복제하여 오류 데이터를 보낸 로그화면입니다.
CAN 통신상에 같은 MSG ID로 데이터를 보내고 있는데 데이터 length가 실제 데이터와 다르게 보낸 것을 확인하실 수 있습니다.
이러한 오류로 인하여 다른 디바이스들이 오작동을 일으킬 수 있습니다.
위 사진은 앞 사진에서 나왔던 필터링 문제를 해결한 후 입니다.
CAN 필터링이 적용되어 더이상 오류 데이터를 재전송하지 않습니다.
이처럼 CAN통신에서는 필터링 작업이 중요하며, 펌웨어 상에서도 필터링이 가능하도록 작업이 가능하나, CAN Driver상에서 하드웨어적으로 작업하는 것을 추천드립니다.