CAN FD Introductie
CAN FD (CAN met flexibele data-rate) is een nieuwe CAN protocolvariant voor in toepassingen die een hogere data-rate vereisen. Die hogere data-rate wordt bereikt door een hogere bussnelheid (8x zo snel maar enkel tijdens data-fase) en door tot maximaal 64 bytes (8x zoveel) in één bericht te verzenden in vergelijk met CAN 2.0. Een CAN netwerk kan die hogere data-rate alleen behalen indien alle nodes voorzien zijn van het CAN FD protocol.
CAN FD versus CAN
CAN FD protocol controllers zijn wel 100% compatibel met CAN 2.0 (A/B) en zijn dus ook in staat om deel te nemen in de standaard CAN 2.0 communicatie. Dat biedt de mogelijkheid om CAN-nodes geleidelijk te migreren van CAN 2.0 naar CAN FD. Beide varianten kunnen echter niet zomaar door elkaar gebruikt worden, zie het stukje over Mixed Mode hieronder.
CAN FD ondersteunt, net als CAN 2.0, de standaard 11-bit en extended 29-bit identifiers.
CAN FD maakt gebruik van het (eerste) gereserveerd bit in een CAN frame. In een CAN 2.0 frame wordt dit gereserveerde bit 'dominant' (=0) verstuurd. In een CAN FD frame, is dit bit echter 'recessief’ (=1) ten teken dat dit frame in het CAN FD formaat wordt verzonden. Een CAN FD controller is in staat om beide formaten te decoderen.
CAN FD verschillen
Er zijn twee belangrijke verschillen tussen CAN FD en CAN 2.0 frames.
- Als eerste bieden CAN FD frames de mogelijkheid om meer dan 8 data bytes te communiceren;
- Daarnaast beschikken CAN FD frames over de optie om over te schakelen naar een andere, en veel hogere, bit-rate tijdens de data-fase dus nadat de arbitragefase in het CAN frame afgerond is.
CAN FD vereist hiertoe twee sets van bit timing configuratie registers, de eerste set voor de bit timing gedurende de arbitragefase en de tweede set voor de bit timing voor de datafase daarna. De timing voor de bit arbitragefase heeft dezelfde beperkingen als in CAN 2.0, de bit timing voor de data fase wordt gekozen met betrekking tot de eigenschappen van de gekozen transceiver en binnen de mogelijkheden van CAN FD. De bit timing van beiden sets kan natuurlijk ook identiek zijn.
Deze dubbele snelheid heeft een achtergrond. In de arbitragefase van een CAN-bericht, zowel aan het begin als aan het einde, dienen andere nodes binnen een bit-tijd, te reageren. Door de vertraging in de physical layer en de buslengte, kan de snelheid onder standaard condities niet verhoogd worden.
Standaard CAN (2.0) transceivers kunnen ook voor CAN FD gebruikt worden, speciale CAN FD transceivers zijn optioneel. CAN FD protocol controllers kunnen zijn voorzien van extra interface signalen om te schakelen - in de fase met een hogere bit-rate - naar een speciale CAN-FD transceiver. Dergelijke CAN FD tranceivers kunnen gebruik maken van een alternatieve signaal codering, in de fase met hogere bit-rate, en zijn niet beperkt tot de standaard CAN's NRZ codering. Zodoende zijn de standaard CAN beperkingen te omzeilen en kan ook gedurende de arbitragefase de snelheid verhoogd worden, mits de maxiamle buslengte hierop is aangepast.
De kosten van CAN FD zal, in volume, niet hoger uitvallen dan dat van CAN 2.0.
CAN FD en CAN 2.0 in Mixed Mode
Al eerder is al even het gebruik van CAN FD èn CAN 2.0 aangehaald. In een dergelijke mixed omgeving worden naast CAN FD-controllers, ook CAN 2.0-controllers gebruikt. Dit vergt wel specifieke software-aanpassingen. Zodra het speciale CAN FD-bit in een CAN-bericht is gezet, zal een CAN 2.0 controller dit als een fout zien en een error willen versturen. Door echter in de software vooraf een CAN 2.0 controller in Tx-passief of stand-by modus te brengen, kan deze geen error op de bus plaatsen en wordt het CAN FD-verkeer niet gehinderd.
Het mag duidelijk zijn dat een dergelijke omschakeling niet continue en on the fly gemaakt kan worden. CAN FD is het hierdoor enkel mogelijk in specifieke bedrijfsmodi te gebruiken, zoals software-download bij end-of-line programmering of bij onderhoud, terwijl de overige (CAN 2.0-)controllers die geen ondersteuning bieden voor CAN FD in stand-by gehouden worden. Zodoende kan het voordeel van CAN FD toch (al) gedeeltelijk benut worden.