Communication Protocols · Interview question

What is bus contention and how does it show up on SPI and I2C?

A strong answer

Bus contention is two or more devices driving a shared line to opposite levels at the same time, which corrupts the signal and can stress or damage output drivers. On SPI it typically appears on MISO: if a deselected slave fails to tri-state its MISO output, or two chip-selects are accidentally asserted at once, two devices drive MISO simultaneously and the master reads garbage; the fix is ensuring only one CS is active and that slaves properly release MISO when deselected. On I2C, contention shows up as two masters transmitting without proper multi-master arbitration, or, more commonly, an address conflict where two identical chips share an address and both try to respond, garbling the transaction; fixes are address-select pins, a second bus, or an I2C mux. A related class is using push-pull drivers where the bus requires open-drain (wiring two outputs together), which shorts when they disagree. Contention often produces intermittent-looking corruption that depends on what data is being driven, and a scope shows a line stuck at an invalid mid-level or with weak/fighting edges.

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

Common Bus Bugs

A field guide to why a bus is dead, garbled, or flaky: pull-ups, baud/clock mismatch, drive contention, and wiring faults, plus a symptom→cause table and a scope-first method.

More Common Bus Bugs questions

Browse all 472 interview questions
What is bus contention and how does it show up on SPI and I2C? | EmbeddedPrep.io