Ein häufiger Grund, mehr als einen Bus zu benötigen, sind Geräte, die mit unterschiedlichen Geschwindigkeiten betrieben werden. Ursprünglich lief I²C mit maximal 100 kHz. Später wurde die Geschwindigkeit auf maximal 400 kHz und später auf 1 MHz und höher erhöht.
Da die Adresse jedes Geräts in das I²C-Protokoll eingebettet ist, müssen Sie den Bus immer mit der niedrigsten gemeinsamen Geschwindigkeit betreiben, wenn Sie Geräte mit unterschiedlichen Übertragungsraten am selben Bus haben, z. B. 100 kHz und 400 kHz an alle Geräte am selben Bus (in diesem Fall 100 kHz).
Wenn Sie den Bus mit der höheren Geschwindigkeit (400 kHz) betreiben, funktioniert das Gerät mit der niedrigeren Geschwindigkeit offensichtlich nicht ordnungsgemäß, und es interpretiert möglicherweise sogar die Adresse des Hochgeschwindigkeitsgeräts als seine eigene, wodurch das 400-kHz-Gerät ausfällt Gut. Aber selbst wenn Sie den Bus anfangs mit 100 kHz betrieben und dann versuchten, den Bus auf 400 kHz zu beschleunigen, nachdem Sie einen Chip mit höherer Geschwindigkeit adressiert haben, könnte der Chip mit niedrigerer Geschwindigkeit einen von ihnen interpretieren (obwohl dies wahrscheinlich unwahrscheinlich ist) die Hochgeschwindigkeitsdatenpakete fälschlicherweise als ihre Adresse und stören somit die Kommunikation auf dem Bus. In jedem Fall würde sich das 100-kHz-Gerät am Ende des Austauschs mit dem 400-kHz-Gerät wahrscheinlich in einem unbekannten Zustand befinden.
Daher ist es am effizientesten, wenn Geräte mit unterschiedlichen Geschwindigkeiten ausgeführt werden und mehrere I²C-Ports vorhanden sind und Sie über die Ersatzpins verfügen, die einen solchen Luxus ermöglichen, z. B. einen I²C für 100-kHz-Geräte, einen für 400-kHz-Geräte und einen anderen je nach Bedarf für 1-MHz-Geräte.
Dies ist bei SPI kein Problem, da jedes Gerät in der Hardware über eine separate Chipauswahlleitung aktiviert (adressiert) wird. Somit kann die Taktrate an die Geschwindigkeit des ausgewählten Chips angepasst werden (10 MHz, 20 MHz, was auch immer), ohne dass dies Auswirkungen auf andere Chips auf demselben Bus hat, da diese nicht aktiviert sind.