정의
CAN 노드는 버스에 붙는 통신 단위이며, 응용을 실행하는 마이크로컨트롤러, 프로토콜을 처리하는 CAN 컨트롤러, 버스 선에 신호를 싣는 CAN 트랜시버 세 부품으로 나뉜다.[1]
노드를 세 부품으로 갈라 보는 이유는 각 부품이 서로 다른 계층을 맡기 때문이다. 어떤 증상을 어느 부품에서 찾아야 하는지는 이 분담을 알아야 판단할 수 있다 — 예를 들어 프레임이 만들어지는 방식은 컨트롤러의 몫이고, 버스 선의 전압이 규정 범위를 벗어나는 문제는 트랜시버와 배선의 몫이다. 계층 관점의 대응은 CAN 프로토콜 계층 구조에서 다룬다.
부품별 역할
마이크로컨트롤러는 노드의 응용 소프트웨어를 실행한다. 보낼 데이터를 만들어 CAN 컨트롤러에 넘기고, 받은 데이터를 해석해 제어에 쓴다. 상위 계층 기능을 어떻게 처리할지는 CAN 표준이 정하지 않으므로, 데이터 필드의 해석은 전적으로 응용의 약속이다.[2]
CAN 컨트롤러는 데이터 링크 계층과 물리 코딩 서브레이어를 구현한다.[3] 데이터를 프레임으로 캡슐화하고, 비트 스터핑과 직렬화를 수행하며, 오류 검출·신호와 확인 응답을 처리한다. 많은 마이크로컨트롤러가 CAN 컨트롤러를 내장하고 있어 물리적으로는 한 칩인 경우가 흔하다.[1]
CAN 트랜시버는 컨트롤러가 내보낸 논리 비트열을 버스 선의 물리 신호로, 버스에서 읽은 물리 신호를 논리 비트열로 바꾼다. 물리 매체 결합 서브레이어(PMA)에 해당하는 부품이며, 자세한 내용은 CAN 트랜시버에서 다룬다.
버스 연결
트랜시버는 CAN_H와 CAN_L 두 선에 연결되고, 노드들은 하나의 선형 버스에 매달린다.[1] 매체와 종단 저항, 스터브 길이 같은 배선 쪽 제약은 CAN 버스 종단에서 다룬다.
최소 노드 수
버스에 노드가 하나뿐이면 통신이 성립하지 않는다. 송신 노드는 프레임의 확인 응답 비트를 수신 노드가 채워 주기를 기대하는데, 채워 주는 노드가 없으면 송신 노드가 오류를 내고 프레임을 반복한다.[1]