2014-11-18 3 views
0

CAN 버스 컨트롤러가이 특정 메시지가 속한 메시지 식별자를 기반으로 결정하는 방법은? 수신기가 이미 식별자가 값 5를 가정하고 그 다음에 해당 값을 가졌다는 것을 이미 알고있는 것입니까? 그리고 우리는 당신이 가치 5에 관심을 가져야한다고 말하는 수신기를 프로그램합니까?CAN 버스 주소 지정은 어떻게 작동합니까?

답변

0

CAN 프로토콜 수준에서는 CAN 네트워크의 모든 노드가 동일하며 메시지를 처리할지 여부를 결정합니다. "CAN 컨트롤러"는 더 높은 수준의 개념입니다. 다른 노드와 마찬가지로 메시지 식별자를 검사해야합니다.

메시지 처리 "는 CAN 프로토콜 메시지 확인 및 승인과 다릅니다. "듣기 전용"모드에 있지 않으면 모든 노드가 해당 처리에 참여합니다.

업데이트 : 당신은 당신이 뭘 하려는지에 따라 달라 CAN을 통해 사용되는 높은 수준의 프로토콜 처리 할 메시지를 결정하는 방법

. 원칙적으로 관련성이있는 ID 비트를 마스크 처리 한 다음 메시지를 처리할지 여부를 테스트합니다.

예를 들어, 하위 4 비트에 5 (이진수 0101) 인 모든 메시지를 처리하려면 마스크가 15 (이진수 1111)이고 이진수이며 수신 된 메시지 ID로 마스크를 비교 한 다음 결과는 5 명입니다. 예를 들어

:

(msg_id & 15) == 5 

그 테스트를 부호화하는 방법이다. 어떤 비트에 관심이 있는지, 그리고 구현 세부 사항은 다른 많은 요인에 따라 다릅니다.

+0

제 질문은 노드가 메시지를 처리할지 여부를 결정하는 방법입니다. – Waqas

0

CAN 노드의 소프트웨어는 일반적으로 일종의 문서이거나 어떤 전자 메시지가 어떤 종류의 정보를 포함하고 있는지를 나타내는 네트워크 사양에 따라 관심있는 메시지 ID를 결정해야합니다. 메시지가 도착하지 않는다면 메시지를 처리하지 않고 소프트웨어가 메시지가 도착하기 직전의 상태로 복귀합니다 (인터럽트 기반 CAN 처리라고 가정).

일부 CAN 컨트롤러 (즉, CAN 프로토콜 전송 및 수신을 수행하는 칩 부분)는 메시지 필터링을 사용하므로 흥미로운 메시지가 소프트웨어에 도달하기 전에 삭제 될 수 있습니다. 다른 컨트롤러에는 특정 "메시지 상자"에 하나의 메시지 ID 만 허용하도록 설정할 수있는 메시지 필터링 기능이 있으며 원하는 메시지를 수락하도록 구성 할 수 있습니다. 다시 한 번 다른 메시지는 삭제됩니다. 일부 컨트롤러에는 필터와 메시지 상자가 있습니다.