4 ms·
CAN is intended for real-time applications, i.e. with bounded latency. Its also intended for use in noisy environments, hence the differential signalling. Both
by TickleSteve 6y ago
CAN is intended for real-time applications, i.e. with bounded latency. Its also intended for use in noisy environments, hence the differential signalling.
Both these characteristics are required for automotive applications.
I2C is relatively susceptible to noise in comparison to CAN. I2C is also very simple to interface with from both a h/w and s/w perspective. CAN, having timing requirements requires more thought on the s/w side.
UARTs are also simple to use and can be used in multi-drop protocols for using multiple devices and can also give good range and noise rejection in some variants (i.e. RS485, RS422, etc).
SPI is for on-board, relatively high-speed use with a handful of devices (maximum) but offers limited noise rejection.
There are also other simple protocols (e.g. one-wire) but they're less popular these days.
PJON on the other hand is pretty much unknown and is a very much higher level protocol that isn't really comparable to CAN-bus.