Un motivo molto comune per richiedere più di un bus è disporre di dispositivi che funzionano a velocità diverse. Inizialmente, I²C funzionava a un massimo di 100 kHz. Successivamente, la velocità è stata aumentata a un massimo di 400 kHz e, successivamente, a 1 MHz e oltre.
Il problema è che, poiché l'indirizzo di ciascun dispositivo è incorporato nel protocollo I²C, quindi se hai dispositivi con velocità diverse sullo stesso bus, diciamo 100 kHz e 400 kHz, devi sempre far funzionare il bus alla velocità più bassa comune a tutti i dispositivi sullo stesso bus (100 kHz in questo caso).
Se si esegue il bus alla velocità più elevata (400 kHz), ovviamente il dispositivo a velocità inferiore non funzionerebbe correttamente e potrebbe persino interpretare l'indirizzo del dispositivo ad alta velocità come proprio, causando il guasto del dispositivo a 400 kHz come bene. Ma anche se inizialmente si eseguisse il bus a 100 kHz e si tentasse quindi di accelerare il bus a 400 kHz dopo aver indirizzato un chip a velocità più elevata, sarebbe possibile (sebbene probabilmente improbabile) per il chip a velocità inferiore interpretare uno dei i pacchetti di dati ad alta velocità erroneamente come il suo indirizzo, e quindi confondere la comunicazione sul bus. In entrambi i casi, al termine dell'interscambio con il dispositivo a 400 kHz, il dispositivo a 100 kHz sarebbe probabilmente in uno stato sconosciuto.
Quindi è più efficiente, se hai dispositivi che funzionano a velocità diverse e hai più porte I²C e hai i pin di riserva per consentire tale lusso, avere un I²C dire per i dispositivi a 100 kHz, un altro per i dispositivi a 400 kHz e un altro per dispositivi da 1 MHz, a seconda delle esigenze.
Questo non è un problema con SPI perché ogni dispositivo è abilitato (indirizzato) nell'hardware da una linea di selezione chip separata. Quindi la velocità di clock può essere adattata alla velocità del chip selezionato (10 MHz, 20 MHz, qualunque cosa) senza avere alcun effetto su altri chip sullo stesso bus, poiché non sono abilitati.