173
7647H–AVR–03/12
Atmel ATmega16/32/64/M1/C1
The bus access conflict is resolved during the arbitration field mostly over the identifier value. If a
data frame and a remote frame with the same identifier are initiated at the same time, the data
frame prevails over the remote frame (c.f. RTR bit).
Figure 16-4. Bus Arbitration
16.2.5 Errors
The CAN protocol signals any errors immediately as they occur. Three error detection mecha-
nisms are implemented at the message level and two at the bit level:
16.2.5.1 Error at Message Level
• Cyclic Redundancy Check (CRC)
The CRC safeguards the information in the frame by adding redundant check bits at the
transmission end. At the receiver these bits are re-computed and tested against the received
bits. If they do not agree there has been a CRC error.
•Frame Check
This mechanism verifies the structure of the transmitted frame by checking the bit fields
against the fixed format and the frame size. Errors detected by frame checks are designated
"format errors".
• ACK Errors
As already mentioned frames received are acknowledged by all receivers through positive
acknowledgement. If no acknowledgement is received by the transmitter of the message an
ACK error is indicated.
16.2.5.2 Error at Bit Level
• Monitoring
The ability of the transmitter to detect errors is based on the monitoring of bus signals. Each
node which transmits also observes the bus level and thus detects differences between the
bit sent and the bit received. This permits reliable detection of global errors and errors local to
the transmitter.
• Bit Stuffing
The coding of the individual bits is tested at bit level. The bit representation used by CAN is
"Non Return to Zero (NRZ)" coding, which guarantees maximum efficiency in bit coding. The
synchronization edges are generated by means of bit stuffing.
node A
TXCAN
node B
TXCAN
ID10 ID9 ID8 ID7 ID6 ID5 ID4 ID3 ID2 ID1 ID0
SOF
SOF
RTR IDE
CAN bus
- - - - - - - - -
Arbitration lost
Node A loses the bus
Node B wins the bus