Klik hier voor de Engelse versie van de broncode.

Profiteer van I3C voor snellere, eenvoudigere en flexibelere IC-naar-IC-communicatie

Door Art Pini

Bijgedragen door De Noord-Amerikaanse redacteurs van DigiKey

Ingebouwde seriële interfaces voor communicatie tussen geïntegreerde schakelingen (IC's) en IC's worden gedomineerd door het Inter-Integrated Circuit (I²C) en de Serial Peripheral Interface (SPI), die beschikbaar zijn sinds de jaren 1980. Deze interfaces worden veel gebruikt om sensors en IC's met een lagere snelheid aan te sluiten op microcontroller units (MCU's) voor communicatie binnen het bord over korte afstanden. Naarmate digitale systemen sneller worden, zijn deze interfaces, beperkt tot typische gegevenssnelheden van 1 megabit per seconde (Mbit/s) voor I²C en 10 Mbits/s voor SPI, echter een beperkende factor geworden. Andere beperkingen, zoals speciale interrupt of chip enable lijnen, vereisen extra signaalverbindingen, waardoor het aantal draden en de complexiteit van de busverbindingen toeneemt.

De Verbeterde Geïntegreerde Circuit (I3C) bus is bedoeld om de inter-IC-communicatie te verbeteren. Het biedt hogere gegevenssnelheden, grotere flexibiliteit en een echte tweedraads interface met in-band interrupts (IBI's) in plaats van externe interrupts.

Dit artikel bespreekt de karakteristieken van de I3C-interface en waarom het een goede upgrade zou kunnen zijn van de I²C en SPI seriële interfaces. Typische MCU's, IC-schakelaars en sensorapparaten worden gebruikt om de toepassing te laten zien.

Ingebedde communicatiebussen

Embedded seriële interconnecties zoals I²C en SPI worden al vele jaren gebruikt voor communicatie binnen het bord. Ze worden voornamelijk gebruikt als communicatiebussen tussen sensoren en gebruikersinterface-apparaten en hun besturingsprocessors. Het aantal sensors in typische systemen is gegroeid tot tien tot twintig in een telefoon en aanzienlijk meer in voertuigen. Tegelijkertijd zijn de communicatie-eisen een grotere uitdaging geworden voor ontwerpers omdat de vraag naar hogere snelheden, lager stroomverbruik en minder geleiders toeneemt. Ontwerpers moeten aan deze eisen voldoen en tegelijkertijd de processor onder controle houden via interrupts en vrijgavelijnen (Afbeelding 1).

Diagram van ingebedde communicatie moet hogere snelheden ondersteunen (klik om te vergroten)Afbeelding 1: Ingebedde communicatie moet hogere snelheden, lager stroomverbruik en een minimaal aantal draden ondersteunen. (Bron afbeelding: NXP Semiconductors)

De huidige technologie implementeert de sensor- en gebruikersinterface met behulp van tweedraads I²C- of vierdraads SPI-interfaces. Interrupt-, enable- en andere controlelijnen zijn gescheiden van de klok- en datalijnen, wat resulteert in meer lijnen per interface.

Ontwerpers hebben een meer toekomstgerichte interfacebenadering nodig die deze extra geleiders uit de interconnecties elimineert en deze bewerkingen in-band afhandelt door alleen de klok- en datalijnen te gebruiken. Bovendien moet de bus op hogere snelheden en met lagere vermogensverliezen kunnen rijden.

I3C-interface

I3C is ontwikkeld door de Mobile Industry Processor Interface (MIPI) Alliance om aan deze vereisten te voldoen. De interface is beschikbaar als MIPI I3C voor MIPI-leden en als MIPI I3C Basic met beperkte functionaliteit voor niet-leden. Net als de oude I²C- en SPI-interfaces is de verbeterde vorm serieel en geïmplementeerd met twee draden om het aantal pinnen en het aantal signaalpaden tussen componenten te minimaliseren. Het heeft een gegevenssnelheid tot 12,5 Mbits/s met een klok van 12,5 megahertz (MHz) in de SDR-modus (Single Data Rate). Het werkt op lagere vermogensniveaus en maakt gebruik van een eenvoudige maar flexibele ontwerparchitectuur.

Met name de I3C standaard behoudt een beperkte achterwaartse compatibiliteit met het I²C systeem, waardoor bestaande I²C-apparaten op de I3C-bus kunnen worden aangesloten, terwijl de bus nog steeds kan overschakelen naar hogere datasnelheden voor communicatie tussen I3C-apparaten die aan de standaard voldoen. Afbeelding 2 toont een vergelijking van de systeemconfiguraties.

Schema van de vergelijking van de basisconfiguraties van I3C-, I²C- en SPI-interfaces (klik om te vergroten)Afbeelding 2: Een vergelijking van de basisconfiguraties van I3C-, I²C- en SPI-interfaces toont de hogere snelheid en eenvoudigere bedrading van I3C. (Bron afbeelding: NXP Semiconductors)

De vierdraads SPI-interface kan sneller werken en ondersteunt full-duplex communicatie. I²C communiceert half-duplex over een tweedraads bus bestaande uit een klok (SCL) en datalijnen (SDA). Beide hebben extra lijnen nodig om interrupts en andere besturingsfuncties zoals chip select te ondersteunen. I3C reduceert het aantal draden dat gebruikt wordt in de interface tot twee, waardoor de aparte interrupt-, enable- en chip-selectlijnen die gebruikt worden in I²C en SPI komen te vervallen. Deze vermindering van het aantal draden is een belangrijk voordeel in een systeem dat tien tot twintig individuele sensoren nodig heeft die verbonden zijn met de processor, elk met meerdere secundaire draden. Interrupts en andere controlelijnen worden vervangen door IBI's. In deze methode legt een doelsensor of -apparaat zijn adres op in de adreskop van de I3C-bus om de processor op de hoogte te stellen van een interrupt.

Het verschil in kloksnelheid tussen I²C en I3C is aanzienlijk. I²C wordt meestal geklokt op 100 kilohertz (kHz), 400 kHz of 1 MHz, terwijl I3C geklokt kan worden op 12,5 MHz. Voorheen werd SPI gebruikt voor kloksnelheden hoger dan 1 MHz. De ontwerpselectie ging tussen de kloksnelheid en het aantal draden. I3C heeft dat veranderd door hogere klok- en gegevenssnelheden aan te bieden via een echte tweedraads topologie.

Push-pull uitgangen, die sneller kunnen schakelen dan open-drain of collectordrivers, dragen in belangrijke mate bij aan de hogere kloksnelheid van I3C. Om compatibiliteit met I²C-apparaten te behouden, kan I3C schakelen tussen open-drain en push-pull drivers, afhankelijk van de busstatus. Het open-drain of collector ontwerp wordt gebruikt tijdens initiële adressering of arbitrage, waarbij zowel I²C- als I3C-apparaten gelijktijdig op de lijn kunnen zijn. I3C gebruikt push-pull wanneer de communicatie in één richting verloopt en er geen kans is dat een I²C-apparaat tegelijkertijd communiceert.

Naast de standaard SDR ondersteunt I3C verschillende optionele modi voor hoge gegevenssnelheid (HDR). Deze HDR-modi werken met dezelfde kloksnelheid, maar verzenden met een hogere gegevensdichtheid. De eerste van de HDR-modi is HDR double data rate (HDR-DDR), waarbij gegevens aan beide randen van het kloksignaal worden geklokt, wat bijna twee keer de gegevenssnelheid oplevert. Voor een klok van 12,5 MHz bereikt de DDR-modus een effectieve gegevenssnelheid van 20 Mbits/s.

HDR-ternairsymbolen hebben twee versies: HDR-ternairsymbool, puur (HDR-TSP) voor alleen I3C-apparaten, en HDR-ternairsymbool, legacy (HDR-TSL) voor bussen met zowel I²C- als I3C-apparaten. Ternairsymboolmodi bereiken drie databits per klok met behulp van drie-bits (ternaire) symbolen gecodeerd op de SCL- en SDA-lijnen.

HDR-bulktransportmodus (HDR-BT) biedt de hoogste gegevens door communicatie over quad, dubbele of enkele SDA-datalijnen te ondersteunen. Dit resulteert in acht, vier of twee keer de ruwe prestaties van een enkele gegevenssnelheid bij dezelfde kloksnelheid.

Door deze verhogingen in de gegevensoverdrachtsnelheid kunnen apparaten korter worden ingeschakeld, waardoor de duty cycle van het busvermogen afneemt. Dit verlaagt het stroomverbruik in vergelijking met I²C (Afbeelding 3). De overgang van open-collectordrivers met externe pull-upweerstanden naar push-pull-drivers verlaagt het stroomverbruik nog verder, omdat de pull-upweerstanden veel stroom nodig hebben om te werken.

Afbeelding van I3C biedt verbeteringen in datasnelheid en stroomverbruik (klik om te vergroten)Afbeelding 3: I3C biedt verbeteringen in datasnelheid en stroomverbruik vergeleken met I²C. (Bron afbeelding: NXP Semiconductors)

Adressering

I²C gebruikt statische adressen met een lengte van 7 of 10 bits voor elk busapparaat. Dit is in I3C veranderd in 7-bits dynamische adressering, waarbij de busmaster het apparaatadres instelt tijdens dynamische adrestoewijzing (DAA) en dit opslaat in een apparaatregister. Statische adressering, zoals in het geval van een I²C periferie, kan nog steeds gebruikt worden in I3C.

Dankzij dynamische adressering kunnen apparaatadressen later worden gewijzigd. Dit ondersteunt hot joining, waardoor een nieuw apparaat aan de bus kan worden toegevoegd terwijl deze werkt. Het nieuwe apparaat, aangesloten op de I3C-bus, meldt zijn aanwezigheid aan de I3C-master door een hotjoin-verzoek te sturen. De mastercontroller bevestigt de aanvraag en kent een adres toe om het apparaat toe te voegen aan de bus.

IBI's

I3C is een echte tweedraads bus die IBI's gebruikt in plaats van speciale interruptlijnen zoals I²C. IBI's zijn wanneer een doelapparaat zijn beschikbaarheid aan de master meldt door de SDA-lijn omlaag te trekken. De master start dan de klok op de SCL-lijn en het doelapparaat zendt zijn adres naar de I3C-bus om de controller op de hoogte te stellen van een interrupt.

Algemene opdrachtcodes

Common Command Codes (CCC) zijn gestandaardiseerde commando's die de controller kan verzenden als een algemene broadcast naar alle I3C-apparaten tegelijk of naar een specifiek doelapparaat. Deze commando's zijn voor items met betrekking tot busbeheer. Het formaat van het CCC-protocol begint met het I3C broadcastadres, dat door alle I3C-apparaten op de bus wordt herkend. Elk I²C-apparaat op de bus zal het verzoek niet bevestigen omdat het een gereserveerd I²C-adres is.

Elk commando bevat een 8-bits ID-veld voor de descriptor en kan worden gevolgd door een payload. Een commando dat naar een specifiek apparaat wordt gestuurd, geeft het apparaatadres door in de eerste byte van de payload. Er zijn meer dan veertig CCC-commando's, waaronder:

  • Dynamische adrestoewijzing invoeren (ENTDAA)
  • Nieuwe dynamische adrestoewijzing instellen (SETNEWDA)
  • Gebeurtenissen inschakelen (ENEC)/Gebeurtenissen uitschakelen (DISEC)
  • Dynamische adrestoewijzing resetten (RSTDAA)
  • Modus voor hoge gegevenssnelheid activeren (ENTHDRx)
  • Apparaatkenmerkenregister ophalen (GETDCR)

Leveranciers mogen een speciale reeks CCC-ID's gebruiken om hun eigen commando's te implementeren.

Foutdetectie en -herstel

In tegenstelling tot I²C bevat I3C voorzieningen voor foutdetectie en -herstel. Zes fout- en herstelmethoden voor doelapparaten zijn verplicht en een andere is optioneel. Er zijn ook extra fout- en herstelmethoden beschikbaar specifiek voor master-side fouten.

I3C ondersteunde componenten

Zoals weergegeven in Afbeelding 2 (links), bestaat een basis I3C-netwerk uit ten minste één master-controller en één of meer I3C-targets of -slaves. De hoofdmaster kan een MCU zijn zoals de NXP Semiconductors LPC5534JHI48-00MP (Afbeelding 4). Het is een 32-bits Arm® Cortex®-M33 MCU met 128 kilobytes (Kbytes) SRAM en 256 Kbytes Flash. De Flexcomm-interface ondersteunt acht verschillende seriële interfaces, waaronder I3C.

Afbeelding van NXP Semiconductor LPC5534JHI48/00MP MCU met een I3C-interface (klik om te vergroten)Afbeelding 4: De LPC5534JHI48/00MP MCU bevat een I3C-interface en zeven andere seriële interfaces. (Bron afbeelding: NXP Semiconductor)

De I3C-bus staat de toevoeging van secundaire masters toe die als slaves op de bus worden geïntroduceerd. De I3C kan meerdere masters hebben, maar slechts één kan de controller zijn. Eenmaal aangemeld kan de secundaire master de huidige masterstatus opvragen en als de huidige master toestemt, wordt de controle overgedragen aan de aanvragende secundaire master.

Een typische I3C-sensor is de P3T2030CUKAZ van NXP. Deze temperatuursensor zet temperaturen van -40 °C tot 125 °C om in een 12-bits digitale waarde met een nauwkeurigheid van ±2 °C. Het bevat zowel een I²C als een I3C SDR-modus seriële interface.

Een geavanceerdere sensor is de ICM-42605 gyroscoop en versnellingsmeter met drie assen en micro-elektromechanische systemen (MEMS) van TDK InvenSense. Als rate gyro meet hij rotatiesnelheden van ±15,2 tot ±2000 graden per seconde (°/s). Het bereik als versnellingsmeter is ±2 tot ±15 g. Het detecteert beweging, kantelen, tikken of stappen (stappenteller). Als I3C-sensor werkt hij op 12,5 MHz in SDR-modus en op 25 MHz in DDR-modus.

IC's zoals de NXP P3S0200GMX I3C-schakelaar kunnen de I3C-bus herconfigureren door I3C-bussignalen te routeren tussen een I3C-controller en meerdere sets doelapparaten, of tussen een enkel doel en meerdere I3C-controllers zoals bepaald door een externe MCU (Afbeelding 5).

Diagram van NXP Semiconductors P3S0200GMX I3C-schakelaar kan worden gebruikt om een I3C-bus te herconfigureren (klik om te vergroten)Afbeelding 5: De P3S0200GMX I3C-schakelaar kan worden gebruikt om een I3C-bus te herconfigureren door I3C-bussignalen te routeren tussen een I3C-controller en meerdere sets van doelapparaten, of tussen een enkel doel en meerdere I3C-controllers. (Bron afbeelding: NXP Semiconductors)

Schakelen tussen twee targets kan nodig zijn als beide targets hetzelfde adres hebben en niet op dezelfde bus kunnen zitten. Het kan ook zijn dat een enkel doel gedeeld moet worden door twee processen, waardoor er geschakeld moet worden tussen de twee I3C-controllers.

Conclusie

I3C is een seriële interface die de I²C-bus uitbreidt door de datasnelheid te verhogen, het aantal draden te verminderen en flexibiliteit toe te voegen aan de busbesturing. Het is een verbetering die het nut van legacy I²C- en SPI-interfaces uitbreidt.

DigiKey logo

Disclaimer: The opinions, beliefs, and viewpoints expressed by the various authors and/or forum participants on this website do not necessarily reflect the opinions, beliefs, and viewpoints of DigiKey or official policies of DigiKey.

Achtergrondinformatie over deze auteur

Image of Art Pini

Art Pini

Arthur (Art) Pini is een verdienstelijke auteur bij DigiKey. Hij behaalde een Bachelor-diploma in Elektrotechniek bij het City College van New York en een Master-diploma in Elektrotechniek bij de City University van New York. Hij heeft meer dan 50 jaar ervaring in elektronica en vervulde belangrijke technische en marketingfuncties bij Teledyne LeCroy, Summation, Wavetek en Nicolet Scientific. Hij is geïnteresseerd in meettechnologie en heeft heel veel ervaring met oscilloscopen, spectrumanalysators, arbitraire golfvormgenerators, digitizers en vermogenmeters.

Over deze uitgever

De Noord-Amerikaanse redacteurs van DigiKey