Communication Protocols · Interview question

How is CAN addressing different from I2C or SPI?

A strong answer

CAN is message-based, not node-based. An I2C transaction targets a device by its address and SPI selects a device with a chip-select line, both are destination addressing. A CAN frame instead carries an identifier that names the message content (e.g., "engine RPM" or "brake status"), and the frame is broadcast to every node on the bus; there is no source or destination field. Each node uses hardware acceptance filters to decide which IDs it cares about and ignores the rest. This decouples producers from consumers: a sensor broadcasts its measurement under a known ID, and any number of nodes can consume it without the sender knowing or caring who's listening, which suits a distributed control system. The design implication is that you must define a system-wide ID map (which ID carries which signal, and thus its priority), and that's exactly what higher-layer standards like CANopen and J1939 standardize on top of raw CAN. So with CAN you think in terms of messages and their priorities, not device addresses or select lines.

What a weak answer sounds like

You know the answer. Do you know what gets you dinged?

Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.

From the lesson

CAN Bus

The robust multi-master bus behind vehicles: differential dominant/recessive bits, non-destructive bitwise arbitration by message ID, and built-in error detection with fault confinement.

More CAN Bus questions

Browse all 472 interview questions
How is CAN addressing different from I2C or SPI? | EmbeddedPrep.io