Check out my first novel, midnight's simulacra!

CAN bus

From dankwiki
Revision as of 03:31, 17 May 2019 by Dank (talk | contribs)

The Controller Area Networks bus standards describe a two-wire, serial, multi-master, synchronized (but clockless), broadcast-only system designed for vehicles. CAN is one of the mandated transports for ODB-II on-board diagnostics, and is required in all US vehicles since 2008. CAN distance decreases with bit rate, but at low rates can run to the kilometers.

Standards

  • CAN-1 (1986): Original Bosch protocol
  • CAN-2.0 (1991): Bosch update, later standardized by ISO 11519 (1993)
    • CAN-2.0A (ISO 11898-3, 2006): 11-bit identifiers, up to 125Kbit/s (CAN-Lo, "Basic CAN", "Reliable CAN"). Star/linear bus.
    • CAN-2.0B (ISO 11898-2, 2003, 2016): 29-bit identifiers, up to 1Mbit/s (CAN-High, "Full CAN"). Linear bus, 120Ω at each end.
  • ISO 11898-1: Data link layer common to CAN-2.0A and B
  • CAN-FD (2012): Bosch extension to CAN-2.0 for up to 64B messages + better CRC
  • ISO 15765-2 (2016): "Road vehicles: Diagnostic communication over CAN" ISO-TP L3/L4 for larger (up to 4095B) packets, 15Mbit/s
  • ISO 11783 (2017): "ISOBUS" at 250Kbit/s, 4-wire terminating plug-and-play bias circuits (power, ground, CAN)
  • more...

Participants

The various nodes of a CAN are known as ECUs (Electronic Control Units). Each can be assumed to include a microprocessor, a (possibly integrated) ISO 11898-1 CAN controller, and a ISO 11898-2/3 transceiver ("medium access unit"). Each ECU must have its own ID unique among the nodes. Depending on the flavor of CAN, IDs are either 11 or 29 bits.

CAN IDs

Lower IDs have priority over higher IDs