- CAN bus is a 2-wire differential bus using Non-Return-to-Zero (NRZ) encoding and has two states:
- Recessive state (logical 1)
- Dominant state (logical 0)
- The network is multicontroller. When two or more
nodes (ECUs) attempt to transmit at the same time, a non-destructive arbitration
technique guarantees messages are sent in order of priority and no messages are
lost.
- The message transmission is multicast. Data messages transmitted are identifier based, not address based.
- Content of message is labeled by the identifier that is unique throughout the network (for example: rpm, temperature, position, pressure, and so forth).
- All nodes on network receive the message and each performs an acceptance test on the identifier. If message is relevant, it is processed, otherwise it is ignored.
- The unique identifier also determines the priority of the message (the lower the numerical value of the identifier, the higher the priority is).
- Data is transmitted and received using message frames, consisting of the following basic fields:
- Arbitration field
- Control field
- Data field (up to 8 bytes for Classical CAN and up to 64 bytes for CAN FD)
- CRC field
- ACK field
For more information, see ISO 11898-1:2015: CAN data link layer and physical signaling.