All about CAN
-Hidden- -Hidden-
Nederlandse taal English language
Skip to main content

The format of a CAN FD message

A standard CAN FD message

The figure below shows the format of a standard CAN FD message. The start of a message is indicated by a leading dominant bit, followed by an 11-bit message key. The original r0 bit has now been renamed EDL (Extended Data Length) and indicates whether the message is a CAN 2.0 or CAN FD message. CAN FD includes a number of new control bits. The total overhead has increased from 44 bits (CAN 2.0) to 53 bits in CAN FD.

Field name Length (bits) Purpose
SOF = Start-of-frame 1 Indicates the start of a message by pulling the bus to dominant ‘0’
Identifier 11 A (unique) identifier for the data which also indicates the message priority
r1 = Reserved bit 1 1 The reserved bit must be dominant ‘0’.
Note: In CAN 2.0, this is the RTR bit; see the note below
IDE = Identifier extension bit 1 Dominant “0” for a standard (11-bit ID) CAN FD frame
EDL = Extended Data Length 1 Recessive ‘1’ for CAN FD;
Dominant ‘0’ for CAN 2.0
Note: In CAN 2.0, this is reserved bit r0
r0 = Reserved bit 0 1 Reserved bit 1 must be a dominant ‘0’.
BRS = Bit Rate Switch 1 A recessive ‘1’ switches to accelerated transmission during the data phase;
A dominant ‘0’ indicates no speed change during the data phase
ESI = Error State Indicator 1 Recessive ‘1’: Transmitter node is in Error Passive mode;
Dominant ‘0’: Transmitter node is in Error Active mode
DLC = Data Length Code 4 Number of data bytes (0–64 bytes) as per table
Data field 0 – 512 Data being transmitted (number of bytes determined by the DLC field)
CRC = Cyclic Redundancy Check 17 / 21 Checksum across all preceding fields
CRC = 17 bits for DLC ≤ 16 bytes and 21 bits for > 16 data bytes
CDL = CRC delimiter 1 Must be a recessive ‘1’
ACK = Acknowledge slot 1 The transmitter sends a recessive “1” and (each) receiver can acknowledge successful reception with a dominant “0”
ADL = Acknowledge delimiter 1 Must be a recessive ‘1’
EOF = End-of-frame 7 Must be a recessive ‘1’

The data field of a CAN message can contain between zero and 64 data bytes. The data field is followed by a 17-bit (≤16 data bytes) or 21-bit (>16 data bytes) CRC segment. This field is used by the receiver to verify the message. In the acknowledgement field, the sender of a message expects acknowledgement by receiving a signal from at least one receiving node within the network confirming that the message has been received without error. This acknowledgement is provided by the transmission of a dominant bit in the acknowledgement field by all (receiving) nodes within the network that have received the message without error. This acknowledgement is used exclusively to identify nodes that have transmitted errors.
Finally, the ‘end of message’ field indicates the completion and error-free transmission of a CAN message. As mentioned earlier, if a node detects an error, the message will be immediately interrupted by an error frame containing dominant ‘0’s.

CAN Accessories
CAN Accessories

An Extended CAN FD message

The figure below illustrates the format of an Extended CAN message. The key difference is that an Extended CAN message has a 29-bit Identifier field.

Field name Length (bits) Purpose
SOF = Start-of-frame 1 Indicates the start of a message by pulling the bus to a dominant ‘0’
Identifier A 11 Part A of a (unique) 29-bit identifier for the data, which also indicates the message priority; MSB bits 28 to 18
SSR = Substitute remote request 1 A recessive ‘1’ enables a standard 11-bit CAN data message to win the arbitration against an extended CAN message
IDE = Identifier extension bit 1 Recessive ‘1’ for an extended (29-bit ID) CAN frame
Identifier B 18 Part B of a (unique) 29-bit identifier for the data, which also indicates the message priority; LSB bits 17 to 0
r1 = Reserved bit 1 1 Reserved bit must be a dominant ‘0’.
Note: In CAN 2.0, this is the RTR bit; see note below
EDL = Extended Data Length 1 Recessive ‘1’ for CAN FD;
Dominant ‘0’ for CAN 2.0
Note: In CAN 2.0, this is reserved bit r0
r0 = Reserved bit 0 1 Reserved bit 1 must be a dominant ‘0’.
BRS = Bit Rate Switch 1 A recessive ‘1’ switches to accelerated transmission during the data phase;
A dominant ‘0’ indicates no speed change during the data phase
ESI = Error State Indicator 1 Recessive ‘1’: Transmitter node is in Error Passive state;
Dominant ‘0’: Transmitter node is in Error Active state
DLC = Data length code 4 Number of data bytes (0–64 bytes) as per table
Data field 0 – 512 Data being transmitted (number of bytes determined by the DLC field)
CRC = Cyclic Redundancy Check 17 / 21 Checksum across all preceding fields
CRC = 17 bits for DLC ≤ 16 bytes and 21 bits for > 16 data bytes
CDL = CRC delimiter 1 Must be a recessive ‘1’
ACK = Acknowledge slot 1 The transmitter sends a recessive ‘1’ and (each) receiver can acknowledge successful reception with a dominant ‘0’
ADL = Acknowledge delimiter 1 Must be a recessive ‘1’
EOF = End-of-frame 7 Must be a recessive ‘1’

As the extended CAN message was added to the CAN standard at a later date, the extended message had to be adapted so that it could coexist with the standard message. This was achieved by dividing the 29-bit identifier into an 11-bit part A (the standard CAN message ID) and an additional 18-bit part B. A bit that was originally reserved was renamed IDE to distinguish between standard (IDE=’0’) and extended (IDE=’1’) messages. An additional reserved bit was added to the extended frame.
The SSR bit has a special function: it ensures that a standard 11-bit data message wins the arbitration against the equivalent 29-bit extended data message. Suppose two CAN nodes wish to send a message simultaneously with standard Id = 0h and extended Id = 0h; in that case, the node sending the standard Id = 0h message will win the arbitration.

Remote Request Frame

A CAN node can request an Identifier by sending a Remote Request message. This is a CAN message without a data field and with the RTR bit set to the recessive ‘1’. It is, of course, available in both standard and extended variants. A Remote Request message is best translated as “Identifier?”. The intention is that the ‘owner’ of the requested identifier responds by sending the corresponding CAN data message.

However, a Remote Request Frame does not, by its very nature, contain any data bytes, as it is intended to request data. Such a frame therefore does not take advantage of the benefits of CAN FD, as these are centred precisely on the transmission of data bytes. For this reason, CAN FD does not support any Remote Request Frames. The RTR bit has been renamed to r1 (Reserved 1) in CAN FD.

Bosch recommends using the CAN 2.0 Remote Request Format for Remote Requests. This is possible because CAN FD controllers are backwards-compatible with CAN 2.0. Incidentally, Remote Requests are an outdated concept and it is generally advised not to use them (anymore) in new implementations.

CAN Analyser - PEAK PCAN-Explorer 7
CAN Analyser - PEAK PCAN-Explorer 7