Monolith v2 CAN 통신 관련 문의드립니다

1. 문제 상황

EZkontrol MCU와 Monolith Mini 보드 간의 CAN 통신 설정 중, 소프트웨어 설정 및 하드웨어 배선 조정에도 불구하고 실시간 데이터 수신이 이루어지지 않는 상태입니다. 대시보드 그래프에는 Time: Invalid Date가 표시되며, 데이터 수신이 차단되고 있습니다.

주요 증상: System Events 로그에서 CANALT:10 (Warning)으로 시작하여 CANALT:200 (Error Passive), 최종적으로 CANALT:300 (Bus-Off) 에러 코드가 순차적으로 발생하며 통신이 중단됩니다.

인터넷 연결(MQTT) 및 시간 동기화(RTC_SNTP_SYNC)는 정상이나, CAN 컨트롤러가 유효한 패킷을 해석하지 못하고 에러를 누적하고 있습니다.

1-1. 데이터

  1. 재현 방법

차량/MCU 스펙:

  • MCU: EZkontrol MCU (J1939 기반 29-bit Extended ID 사용).
  • Protocol: CAN 2.0B, 250Kbps 전송률.
  • Target Message: ID 0x180117EF, Byte 6~7 (Motor Speed).

배선 연결:

  • 컨트롤러 점퍼선(CAN H, CAN L)을 보드에 연결.
  • MCU와 보드 간의 GND(Ground) 공통 연결 완료.
  • MCU 내부 120Ω 종단 저항 확인.

소프트웨어 설정 재현:

  • Bit rate: 250 kbit/s.
  • Filter/Mask: 모든 패킷 수신을 위해 0x00000000으로 개방 시도.
  • Decoder: Signed, Little Endian, Multiplier 0.1 설정.

조치 이력:

  • Bit rate를 250k, 500k, 125k로 변경하며 테스트했으나 동일 증상 발생.
  • CAN High/Low 배선을 스왑(Swap)하여 연결했으나 CANALT:200 에러 지속됨.

CAN 버스에 에러가 있는 상황이네요.

제가 이해하기로는 CAN 버스에 컨트롤러, MCU, 모노리스 이렇게 세 개의 노드가 참가하고 있는 것 같습니다.

  1. 각 노드의 CAN bitrate가 일치한지
  2. 120옴 종단저항은 어느 노드들에서 활성화되어 있는지
  3. CAN H, L 와이어를 스왑했다고 하셨는데, 이게 두 와이어 피복을 서로 꼬아 연결한게 아니라 두 개를 바꿔 연결하신 건지

를 우선 점검해볼만 하네요. CAN은 무조건 H는 H끼리, L은 L끼리 묶어야 합니다.