Diese seriellen Bausteine sind in der Regel klein, verwenden kompakte 8- oder 16-Pin-Gehäuse und sind meist sehr kostengünstig. Eine große Bandbreite an Funktionen ist verfügbar, von einfachen Speicherbausteinen wie seriellen EEPROMs und SRAMs bis hin zu komplexen Bauteilen wie hochentwickelten Analog-Digital-Wandlern.
Serielle Peripherieschnittstelle
Ein gängiger serieller Bustyp, der in vielen Systemen für die Erweiterung von Peripherie verwendet wird, ist die serielle Peripherieschnittstelle (SPI). Der SPI-Bus ist ein 4-Draht-Bus, der als zirkulärer Puffer dient. Die Daten werden gleichzeitig aus dem Master und dem Slave übertragen und durch ein Taktsignal synchronisiert, während die einzelnen Bausteine durch einen zusätzlichen Pin ausgewählt werden. Bild 1 zeigt ein typisches SPI-System.
Traditionell kommen in Mikrocontrollersystemen einfache externe Peripherie-Bausteine zum Einsatz, um die Funktionalität des Host-Mikrocontrollers zu erweitern. Dies gilt vor allem dann, wenn zusätzliche Funktionen benötigt werden, die nicht auf dem Mikrocontroller selbst implementiert sind. Diese Peripherie-Bausteine werden in der Regel über einen seriellen Bus auf der Leiterplatte mit dem Host-Mikrocontroller verbunden.
Serielle Busse
Serielle Busse sind eine ideale Lösung für Erweiterungen, da sie im Vergleich zu einer vollständigen Parallelbus-Implementierung weniger Platz auf der Leiterplatte beanspruchen. Sie benötigen auch weniger E/A-Pins auf dem Mikrocontroller, haben aber dennoch ausreichend hohe Datenraten für die meisten Anwendungen. Außerdem verbrauchen sie weniger Strom als eine parallele Busimplementierung.
Was sind die Vorteile der I3C-Schnittstelle gegenüber I2C und SPI?
Die I3C-Schnittstelle bietet höhere Datenraten und eine effizientere Kommunikation, was den Anschluss von mehreren komplexen Sensoren an den Host-Mikrocontroller vereinfacht.
Wie funktioniert der SPI-Bus im Vergleich zu anderen seriellen Bussen?
Der SPI-Bus arbeitet als zirkulärer Puffer mit 4 Drähten, wobei Daten gleichzeitig gesendet und empfangen werden können. Die Übertragung wird durch ein Taktsignal synchronisiert und einzelne Bausteine werden über einen zusätzlichen Pin ausgewählt.
Warum ist SPI für High-Speed-Übertragungen geeignet?
SPI ist aufgrund seiner Vollduplex-Kommunikation, hohen möglichen Taktraten und einfachen Softwaretreiber ideal für schnelle Datenübertragungen.
Was ermöglicht der I2C-Bus im Multi-Master-Betrieb?
Der I2C-Bus erlaubt durch seine Open-Drain-Ausgänge und Buskonfiguration einen Multi-Master-Betrieb, wobei die Treiber dafür tendenziell komplexer sind.
Warum könnten traditionelle SPI- und I2C-Busse in modernen Systemen an Grenzen stoßen?
Traditionelle SPI- und I2C-Busse bieten keine Möglichkeit, Interrupts zu implementieren und erfordern mehr Pins des Mikrocontrollers, was in komplexeren Systemen mit höheren Datenmengen und Geschwindigkeiten ein Problem darstellt.
Der SPI-Bus hat in der Regel einen einzigen Busmaster, der alle Busübertragungen ausführt. Mehrere Bus-Master sind möglich, was jedoch die Komplexität des Systems erheblich erhöht.
Der Bus besteht aus mindestens 4 Signalen:
- CLK: Serieller Takt, der vom Master ausgegeben wird
- MOSI: Master Out Slave In, bei dem die Daten vom Master aus übertragen werden
- MISO: Master In Slave Out, bei dem Daten vom Slave-Baustein übertragen werden
- CS/SS: Chip oder Slave Select wird vom Master ausgegeben, um ein bestimmtes Slave-Device auszuwählen und um anzuzeigen, dass Daten gesendet werden
Obwohl der SPI-Bus nicht viele Pins belegt, ist er in der Lage, mit hohen Geschwindigkeiten zu arbeiten; einige Bausteine unterstützen Übertragungsraten von bis zu 60 MHz oder mehr. In jüngster Zeit ist die Spezifikation hinsichtlich der Anzahl der Datenleitungen weiter gewachsen, wobei der QSPI-Bus (Quad SPI) zur gängigen Peripherie gehört. Er ermöglicht fortschrittliche Funktionen wie Execute in Place (XiP), mit denen Anwendungen direkt aus dem seriellen Speicher ausgeführt und Daten mit extrem hohen Raten abgerufen werden können.
SPI hat mehrere Vorteile. Dazu gehören die Unterstützung von Vollduplex-Kommunikation, hohe Geschwindigkeit und ein einfacher Kommunikationsmechanismus, der lediglich einen einfachen und leicht zu entwickelnden Softwaretreiber erfordert. Das Blockdiagramm einer typischen SPI-Anwendung in Bild 1 verdeutlicht, dass viele E/A-Pins zur Unterstützung der seriellen Datenübertragung dienen, insbesondere wenn umfassende Peripherie zum Einsatz kommt.
SPI hat im Laufe der Jahre auch verschiedene Varianten entwickelt. Dies kann die Wahl spezifischer Peripherie durch Variationen der Taktflanke und der Taktpolarität erschweren.
Inter-Integrated-Circuit-Bus
Ein weiterer beliebter serieller Bus ist der Inter-Integrated-Circuit- oder I2C-Bus. Er verwendet zwei bidirektionale Open-Drain-Signale, die serielle Datenleitung (SDA) und die serielle Taktleitung (SCL), um Takt und Daten zu übertragen. Jede Signalleitung ist mit einem Pull-up-Widerstand verbunden.
I2C unterstützt ein Protokoll, bei dem eine 7-Bit-Adresse des Slaves und zusätzliche Registerinformationen in der Nachricht kodiert sind. Dank der Buskonfiguration unter Verwendung von Open-Drain-Ausgängen lässt sich der Multi-Master-Betrieb leicht unterstützen. I2C hat im Laufe der Jahre eine Reihe von Überarbeitungen durchlaufen. Aktuelle Versionen unterstützen Datenraten bis zu 3,4 Mbps im Hochgeschwindigkeitsmodus sowie zusätzliche Funktionen wie die 10-Bit-Adressierung. Bild 2 veranschaulicht eine typische I2C-Buskonfiguration.
Ein komplexeres Protokoll ermöglicht es den Anwendern, komplexere Systeme mit mehreren Bus-Mastern zu erstellen und dabei nur zwei Pins zu nutzen. Allerdings sind die Software-Treiber für I2C in der Regel komplexer.
Grenzen von SPI und I2C
Ein weiterer großer Nachteil sowohl des SPI- als auch des I2C-Busses besteht darin, dass beide keine Möglichkeit haben, Interrupts innerhalb ihrer Busstrukturen zu implementieren. Wenn die serielle Peripherie also Interrupts generieren muss, muss diese an zusätzliche Pins des Mikrocontrollers angeschlossen werden, wie Bild 1 und 2 zeigen.
Hierdurch entstehen immer komplexere Systeme. Es müssen mehr serielle Schnittstellen für größere Datenmengen und höhere Datenübertragungsraten bereitgestellt werden. Daher kommen Systeme mit herkömmlichen SPI- und I2C-Implementierungen zunehmend an ihre Grenzen. Die Notwendigkeit, eine neue Lösung zu finden, ergab sich aus den Anforderungen stromsparender mobiler Anwendungen. Gleichzeitig sollte eine grundlegende Rückwärtskompatibilität mit den bestehenden Bussen gewährleistet werden.
I3C-Schnittstelle
Die I3C-Schnittstelle (MIPI Alliance Improved Inter Integrated Circuit) wurde von der MIPI Alliance entwickelt, um die Sensorverbindungen in mobilen Anwendungen zu unterstützen. Das ursprüngliche Konzept der I3C-Schnittstelle bestand darin, die Kommunikation zwischen Sensoren und der Host-CPU zu standardisieren, die Anzahl der physischen Pins und deren Verbindungen zu reduzieren sowie eine stromsparende Hochgeschwindigkeitskommunikation zu unterstützen. Ursprünglich waren mobile Geräte die Zielanwendung. Es stellte sich jedoch bald heraus, dass die gleichen Anforderungen auch für viele andere Anwendungen gelten, bei denen einfache serielle Busse für die lokale Verbindung zwischen den Bausteinen eingesetzt werden.
Die I3C-Schnittstelle löst einige der Probleme, die mit den bestehenden I2C- und SPI-Bussen auftreten.
Die I3C-Schnittstelle kann in verschiedenen Modi mit unterschiedlichen Datenraten arbeiten.
- Standard Data Rate (SDR): unterstützt bis zu 12,5 Mbps
- High Data Rate-Double Data Rate (HDR-DDR): unterstützt bis zu 25 Mbps
- High Data Rate-Tertiary Symbol Pure (HDR-TSP): unterstützt bis zu 33,3 Mbps
- High Data Rate-Tertiary Symbol Legacy (HDR-TSL): unterstützt bis zu 33,3 Mbps
Jeder dieser Modi hat erhebliche Leistungsvorteile gegenüber dem I2C-Bus. Die in einer realen Anwendung tatsächlich erreichte Datenrate ist jedoch aufgrund der zusätzlichen Funktionen des Protokolls geringer. Die HDR-Modi verwenden SDR und die HDR-TSL-Modi unterstützen sowohl I3C-Peripherie als auch ältere I2C-Schnittstellen auf demselben Bus. Es ist zu beachten, dass die Modi mit hoher Datenrate in der I3C-Basisspezifikation nicht verfügbar sind. Die Kommunikation wird im SDR-Modus initiiert. Über einen Busbefehl kann man auf den HDR-Modus umgeschalten, um auf Bausteine zuzugreifen, die in diesem Modus arbeiten können. Die Möglichkeit, Befehle als Teil der I3C-Paketstruktur zu senden, eröffnet auch viele weitere Möglichkeiten zur Steuerung von Sensoren. Die I3C-Spezifikation definiert sowohl allgemeine Befehlscodes als auch die Variante, eigene, benutzerdefinierte Befehlscodes zu erstellen.
I3C ist abwärtskompatibel mit dem I2C-Bus, so dass ältere Bausteine und Anwendungen unterstützt werden können. Allerdings gibt es einige Einschränkungen. Dazu gehören der Wechsel von Open Drain (I2C) zu Push-Pull (I3C) für die Takt- und Datenleitungen sowie die fehlende Unterstützung für Clock-Stretching. Dies wird manchmal eingesetzt, um einigen I2C-Komponenten Zeit zu geben, auf eine Datenanfrage zu reagieren.
Die von I3C unterstützte In-Band-Interrupt-Funktion ist besonders wichtig: Sie ist zum einen eine kostengünstige Wake-up-Funktion. Zum anderen ermöglicht sie es, die Bausteine in einen stromsparenden Shutdown-Modus zu versetzen, während der korrekte Betrieb auf dem Bus weiterhin unterstützt wird. Zusätzliche Pins, die mit Interrupts auf den anderen Bussen verbunden sind, sind nicht nötig. Außerdem spart I3C aufgrund höherer Datenraten beträchtlich an Energie, weil der Baustein früher in den Ruhezustand versetzt werden kann. Weitere Vorteile sind die integrierte Konfiguration und Steuerung (ohne die Hauptkommunikationsprotokolle zu beeinträchtigen) sowie der In-Band-Interrupt (IBI) als kostengünstiger Wake-Mechanismus. Zudem können die Zielsysteme alle internen Taktgeber abschalten und trotzdem korrekt an der I3C-Schnittstelle arbeiten.
Im Vergleich zu I2C spart I3C auch Energie, da der Energieverbrauch pro Bit-Übertragung effizienter als beim I2C-Bus ist. Dies liegt daran, dass Push-Pull (im Gegensatz zu Open-Drain) sowie eine starke Pull-Up-Signalisierung verwendet werden.
Zwei Mikrocontroller-Gruppen
Renesas hat zwei Mikrocontroller-Gruppen als Teil der RA-Familie entwickelt, die auf dem Cortex M33-Kern von Arm basieren: den RA4E2 mit 100 MHz und den RA6E2 mit 200 MHz. Diese Bausteine sind eine geeignete Lösung für Anwendungen, bei denen eine große Anzahl an Sensoren Daten erfassen müssen. Jeder Baustein verfügt über eine I3C-Schnittstelle sowie mehrere I2C- und SPI-Schnittstellen, die in kompakten Gehäusen wie einem 32-Pin-QFN oder 4-×-4-mm-BGA kombiniert sind. Diese Bausteine ermöglichen den Einsatz komplexer Software-Algorithmen, um die Daten von mehreren Sensoren zu erfassen und die Sensordaten auf dem Baustein zu verarbeiten. Dies erspart die Weitergabe detaillierter Daten an einen Host-Prozessor. Die Kombination dieser Bausteine mit mehreren seriellen Sensoren, die über den I3C-Bus verbunden sind, ermöglicht den Aufbau kompakter Sensorsysteme mit geringer Leistungsaufnahme. Bild 4 zeigt ein Blockdiagramm des RA6E2 mit 200 MHz.
Die vollständige Spezifikation der MIPI I3C-Spezifikation ist nur für Mitglieder der MIPI Alliance verfügbar. Die MIPI-I3C-Basisspezifikation bündelt jedoch die gängigsten I3C-Funktionen und kann auch ohne MIPI-Mitgliedschaft genutzt werden. Dies ermöglicht es den Anwendern, die I3C-Schnittstelle in ihren Interconnect-Anwendungen einzusetzen.
Fazit
Die I3C-Schnittstelle stellt ein umfassendes Upgrade der I2C- und SPI-Busse dar, die aktuell in vielen Anwendungen zur Verbindung von Sensor- und Host-CPUs zum Einsatz kommen. Dies erleichtert die Datenübertragung zwischen diesen Bausteinen und reduziert die Leistungsaufnahme des Systems.
In der nächsten Generation intelligenter Sensoren werden viele von diesen lokale Verarbeitungsanforderungen haben, um die Belastung der Host-CPU zu minimieren. Bausteine wie der RA4E2 und der RA6E2 stellen hierfür eine geeignete Lösung dar. Sie unterstützen kompakte Gehäuseoptionen wie das 4-×-4-mm-BGA. Gleichzeitig bieten sie die I3C-Schnittstelle mit einem extrem leistungsstarken Prozessor, was sie für diese neuen Sensoranwendungen sehr attraktiv macht.
Vorteile der I3C-Schnittstelle
- Unterstützung höherer Datenraten
- In-Band-Interrupts sorgen dafür, dass keine zusätzlichen Pins zur Unterstützung von Chip Selects (SPI) oder Interrupts erforderlich sind.
- Unterstützung dynamischer Adressen
- Hot-Plug-Support
- Unterstützung von In-Band-Befehlen
- Support für bestehende I2C-Busse
- Geringe Leistungsaufnahme