CAN FD (CAN with Flexible Data-Rate) is an updated version of the CAN 2.0B protocol. It takes into account the demand of the automotive industry to make the classical CAN faster. In order to achieve that, two principles have been introduced:
- Transfer the data part of a frame faster
– the Arbitration Field (Id and Acknowledgement) will be unchanged so that the arbitration remains robust
- Have more databytes in a frame
– The classic CAN frame contains 0-8 data bytes. The CAN FD frame contains 0 – 64 databytes.
ISO and non-ISO CAN FD
The original CAN FD version from 2014 had security issues (more here) and there has been an update of the protocol. The original CAN FD version is called non-ISO whereas the updated version, which has been standardized as an ISO standard, is called ISO CAN FD (ISO 11898-1:2015).
The ISO CAN FD features an improved error detection mechanism. The CRC field contains a stuff bit counter and fixed stuff bits.
The CAN FD differs from a CAN frame by the following added field:
- FDF bit (Flexible Data Rate Format) – signalizes a CAN FD frame format (Recessive)
- BRS bit (Bit Rate Switch) – a change between the Arbitration Baud Rate and the Data Phase Baud Rate occurs here; Recessive=switch
- ESI bit (Error State Indicator) – a transmitter’s controller state (Error Passive or Active); Recessive=Passive
- CRC field contains a Stuff Bit Count, parity and so-called fixed stuff bits
The CRC length is 17 bits for frames with 12/16 data bytes, and 21 bits for 20-64 data bytes