4. CAN FD
#What changes
CAN FD (Flexible Data-rate) is the evolution of CAN, standardized in 2015 (ISO 11898-1). It keeps the same bus, the same wires and the same arbitration, and changes two things:
- More data per frame: up to 64 bytes, versus 8 in classic CAN.
- Faster data phase: after arbitration, the frame can switch to a higher rate only during the data (for example, arbitration at 500 kbit/s and data at 2 Mbit/s). This switch is controlled by the BRS bit (Bit Rate Switch).

Arbitration stays at the nominal bit rate because all modules must contend for the bus at the same time. After only one module is transmitting, the bit can become shorter.
#Frame sizes in CAN FD
In CAN FD the DLC field (the frame size code) still has 4 bits, so not every size is possible. Above 8 bytes the valid sizes are fixed:
| DLC | Data bytes |
|---|---|
| 0 to 8 | 0 to 8 (same as classic CAN) |
| 9 | 12 |
| 10 | 16 |
| 11 | 20 |
| 12 | 24 |
| 13 | 32 |
| 14 | 48 |
| 15 | 64 |
A frame configured with 10 bytes, for example, is transmitted with 12 bytes; the remaining bytes are padded.
#Compatibility with classic CAN
A classic CAN controller does not understand an FD frame and treats it as an error, destroying the frame. For this reason you do not mix a classic-only module with FD frames on the same bus. A port configured for CAN FD can still transmit classic frames when the frame is marked for that (in Customizable CAN, Force classic CAN), which allows talking to a classic piece of equipment on the same bus, as long as no FD frame circulates there.