이번 시간은 CAN 통신의 비트스터핑(Bit Stuffing)에 대해서 알아보겠습니다.
비트스터핑(Bit Stuffing)은 왜 필요할까?
CAN 통신은 통신방식 자체가 비동기 통신과 같이 별도의 Clock이 존재하지 않습니다. 따라서 통신 데이터가 같은 값으로 여러 개 연속하여 전송될 경우 각 노드(Node) 사이에 Clock이 맞지 않아 통신 오류가 발생할 수 있습니다. 만약에 8비트가 '0'값일 경우 아래와 같이 8비트가 '0'으로 전송되는 것이 올바른 파형입니다.
Bit Stuff 없이 '0'을 8비트 보냈을 때의 파형
그런데 실제 CAN 통신 파형을 오실로스코프로 찍어보면 다른 파형이 보입니다.
연속 '0'인 데이터가 5개 생겼을 때의 Bit Stuff - (S로 표시된 비트)
바로 위와 같은 파형이 보이게 되는데요. 이 파형은 정상인 파형입니다. 그 이유는 비트 스터프(Bit Stuff) 때문입니다.
비트 스터프란 같은 데이터가 연속하여 5개가 발생하면
만들어지는 여분의 비트이다.
비트 스터프는 데이터통신의 동기화를 목적으로 만들어집니다. 따라서 위의 파형처럼 연속하여 '0'이 발생하는 경우에는 Bit Stuff가 발생하며 만약 '1'이 연속하여 데이터가 5개 발생하면 이때에도 Bit Stuff가 발생합니다. 아래 파형처럼요.
연속 '1'인 데이터가 5개 생겼을 때의 Bit Stuff - (S로 표시된 비트)
이제 CAN 통신 데이터를 오실로스코프 등으로 측정하다가 이런 파형을 봐도 당황하지 않겠죠?
비트 스터프는 데이터통신의 오류를 줄이기 위한 동기신호입니다.
잊지 마세요!