The CAN Protocol
The CAN protocol is document in ISO 11898 for high speed applications and in ISO 11519 for low speed applications. CAN use a collision avoidance protocol and multiple sense access as used with Ethernet. The routed in a different way to Ethernet. Each message has an identifier field. This has two functions. The first is to introduce priority into the protocol, secondly so that the receiving nodes on the network can establish whether or not they require the message object information. The CAN message frame is shown in Figure 1 above.
![]()
Figure 1.
The CAN bus is idle in the recessive (logic one) state.
The SOF is a start of frame bit. It is a single zero bit
This is followed by the arbitration field that consists of the message ID and the remote transmission request (RTR) bit.
The message ID can be either a standard CAN 11 bit identifier or can be a extended 29 bit identifier. This parameter must be initialised during system start-up.
The RTR bit is dominate (zero) for a data frame and is recessive (one) for a remote frame. A remote frame has no data field.
The arbitration field is followed by the control field.
This field is 6 bits long, 4 of these bits give the length of the data field in number of bytes, up to a maximum of 8 bytes per frame.
The other control bits are for field control.
This is followed by the data bits.
There is a maximum of 8 bytes, so a maximum of 64 data bits.
The frame can contain zero data bit, i.e. the information in the identifier may be all that is needed (a remote frame).
So the data field can be 0 - 64 bits long
The data field is followed by the cyclic redundancy check field.
This field contains 15 bits and is used for a CRC check code.
This is followed by an acknowledgement field.
This is transmitted as a recessive bit, nodes that have received the frame will fill the bit with dominate bit.
Finally the frame is ended with a end of frame field.
The EOF field consists of 7 recessive bits.