

If the sender sees a 0 on the bus in the ACK slot, it knows that it must retransmit. The acknowledge field is used to let the identifier signal whether the frame was correctly received: the sender puts a recessive bit (1) in the ACK slot of the acknowledge field if the receiver detected an error, it forces the value to a dominant (0) value. A cyclic redundancy check (CRC) is sent after the data field for error detection. The data field is from 0 to 64 bytes, depending on the value given in the control field. The control field provides an identifier extension and a 4-bit length for the data field with a 1 in between. When RTR = 1, the packet is used to write data to the destination identifier. The trailing remote transmission request (RTR) bit is set to 0 if the data frame is used to request data from the device specified by the identifier. The destination identifier is 11 bits long. (There are at least three bit fields between data frames.) The first field in the packet contains the packet's destination address and is known as the arbitration field. A data frame starts with a 1 and ends with a string of seven zeroes. The format of a CAN data frame is shown in Fig. 9.3.
