Atmega2560 칩을 기반으로 한 맞춤 Canbus IO 모듈을 작성하는 중입니다. 이 모듈은 PWM 제어 및 전류 피드백, 20 개의 디지털 입력, 5 개의 아날로그 입력 및 4 개의 0-5v 아날로그 출력을 갖춘 10 개의 고전류 출력을 갖습니다. 나는 내가 사용할 J1939 메시지 구조를 알아 내려고 노력해왔다. 이 모듈은 마스터 ECU에 의해 제어되는 슬레이브 장치가됩니다. 이 모듈 중 하나 이상이 동일한 네트워크에있을 수 있으므로 각 모듈에 CAN 주소 스위치를 추가하여 사용자가 각 장치의 CAN ID 1-255를 선택할 수 있도록했습니다. 이 계획은 각 모듈이 단일 CAN 메시지로 모든 디지털 입력 상태를 브로드 캐스팅하도록하는 것이 었습니다. 0xFF00을 PGN ID로 선택한 다음 8 바이트를 사용하여 특정 모듈에 대한 입력 상태에 대한 비트 형식의 상태를 나타내는 경우 마스터가 메시지의 출처를 마스터가 어떻게 알 수 있습니까? CANbus 메시지의 모듈 주소입니까?j1939 맞춤 모듈 통신
arduino CANBUS 예제를 살펴 봤는데 PGN을 기반으로 필터링 할 수 있지만 원본 주소 나 대상 주소를 기준으로 필터링하지 않습니다.
누군가가이 작업을 수행하는 방법에 대해 설명해 줄 수 있습니까?
J1939는 확장 CAN 식별자의 8 개의 최하위 비트로서 소스 어드레스를 인코딩 시작 페이지 참조. 당신은 CAN 인터페이스를 프로그래밍하여 그 부분을 필터링 할 수 있어야합니다.하지만 성능 문제가없는 한 소프트웨어 필터링을 고수해야합니다. 나는 ATmega2560 대신에 CAN 주변 장치가 내장 된 MCU를 선택하는 것이 더 나을 것이라고 생각합니다. – doynax
그래서 PGN과 우선 순위를 추가하여 메시지를 보낼 수 있습니까? 예를 들어 0x0CFF00FE를 보내면 다음과 같습니다. 우선 순위 3 PGN 65280 발신 주소 254 이 정확합니까? – jonfarrugia
@jonfarrugia 틀렸어. 모든 독점 PGN (65280-65535)은 브로드 캐스트 메시지이므로 대상 주소는 항상 255입니다. – LaneL