The second type of error is a bit-stuffing violation. CAN uses a Non-Return-to-Zero (NRZ) serial data transmission method, so a process called bit-stuffing is applied to maintain synchronization when too many consecutive high or low bits occur. Specifically, a transmitting node inserts a high bit after five consecutive low bits, and a low bit after five consecutive high bits. A receiving node that sees more than 5 consecutive bits of the same value will detect a bit-stuffing violation error. The third type of error is a checksum error. Each receiving node performs CRC calculation on messages and then flags checksum errors that it finds. The forth type of error is a form error. Certain predefined bit values must be transmitted at certain points within any CAN Message Frame (CRC delimiter, ACK delimiter, etc.). If a receiving node detects an invalid bit in one of these positions, it flags a form error, sometimes also known as a format error. The last type of error we will examine is an acknowledgment error. If a transmitter determines that a message has not been acknowledged (ACK’d) because it doesn’t see a dominant bit in the ACK slot, then it flags an ACK error.

