Sběrnice I3C (Improved Inter-Integrated Circuit) je vylepšená komunikace mezi integrovanými obvody, která nabízí vyšší datové rychlosti, větší flexibilitu a skutečné dvoudrátové rozhraní s vnitřními přerušeními (IBI - in-band interrupts) namísto externích. Tento článek nám přiblíží vlastnosti rozhraní I3C a důvody, proč nenahradit stávající sériové rozhraní I²C a SPI. Součástí článku je také ukázka aplikace, kde je použito rozhraní I3C pro komunikaci MCU a příslušných senzorů.
Vestavěná komunikační sběrnice
Vestavěná sériová sběrnice jako je I²C a SPI se používají již mnoho let pro komunikaci mezi integrovanými obvody. Primárně se používají jako komunikační sběrnice mezi senzory a jejich řídicími procesory. Například v telefonu vzrostl počet senzorů na deset až dvacet a ve vozidlech je to ještě výrazně více. Požadavky na komunikaci se zároveň staly pro konstruktéry náročnější, protože se zvyšují požadavky na vyšší rychlost, nižší spotřebu energie a méně linek. Tyto požadavky lze splnit při zachování řízení pomocí přerušení a povolování jednotlivých linek (obrázek 1).
Obrázek 1: Vestavěná komunikace by měla nabízet vyšší rychlost, nižší spotřebu a minimální počet linek (vodičů). (Zdroj obrázku: NXP Semiconductors )
I²C je dvouvodičové rozhraní a SPI je čtyřvodičové rozhraní. Přerušení, povolování a další řídicí linky jsou odděleny od hodinových a datových linek. To znamená více linek na rozhraní. Moderní přístup eliminuje tyto nadbytečné linky a zvládá veškeré operace pouze pomocí hodin a datových linek. Kromě toho by sběrnice měla být schopna pracovat při vyšších rychlostech a s nižšími ztrátami výkonu.
I3C rozhraní
I3C bylo vyvinuto aliancí Mobile Industry Processor Interface (MIPI) Alliance, aby splnila výše zmíněné požadavky. Rozhraní je dostupné jako MIPI I3C pro členy aliance MIPI, tak jako MIPI I3C Basic s omezenou funkčností pro nečleny. Stejně jako starší rozhraní I²C či SPI je vylepšená forma sériová a je implementována pomocí dvou vodičů, aby se minimalizoval počet signálových cest mezi komponenty. I3C dosahuje přenosové rychlosti 12,5 Mbit/s s taktem 12,5 MHz a zároveň pracuje při nižších úrovních výkonu a využívá jednoduchou, ale flexibilní architekturu.
Je důležité zmínit, že I3C si zachovává omezenou zpětnou kompatibilitu s I²C. Díky tomu lze připojit i obvody s I²C ke sběrnici I3C a zároveň lze sběrnici přepínat na vyšší datové rychlosti pro komunikaci mezi obvody I3C. Porovnání jednotlivých rozhraní je na obrázku 2.
Obrázek 2: Porovnání základních konfigurací rozhraní I3C, I²C a SPI ukazuje vyšší rychlost a jednodušší zapojení u I3C. (Zdroj obrázku: NXP Semiconductors)
Čtyřvodičové rozhraní SPI pracuje rychleji a podporuje plně duplexní komunikaci. Oproti tomu I²C komunikuje pomocí polovičního duplexu po dvoudrátové sběrnici skládající se z hodinové linky SCL a datové SDA. SPI vyžaduje další linky pro přerušení a další řídicí funkce jako je výběr čipu (Chip select). I3C snižuje počet linek používaných v rozhraní na dva. Čili není nutné mít samostatnou linku pro přerušení (Interrupt), povolení (Enable) a volbu čipu (Chip Select).
Toto snížení počtu linek je významnou výhodou v systémech vyžadující deset až dvacet samostatných senzorů připojených k procesoru. Přerušení a další řídící linky jsou nahrazeny IBI (in-band interrupts). V I3C cílový senzor vloží svou adresu do hlavičky adresy sběrnice I3C, aby upozornil procesor na tzv. přerušení. Rozdíl v taktovací frekvenci mezi I²C a I3C je významný. I²C je obecně taktován na 100 kHz, 400 kHz nebo 1 MHz, zatímco I3C může být taktován až na 12,5 MHz. Dříve se SPI používalo pro taktovací frekvence vyšší než 1 MHz. Volba typu rozhraní znamenalo rozhodování se mezi taktovací frekvencí a počtem linek. I3C toto rozhodování eliminovalo, jelikož nabízí vyšší takt a datovou rychlost pomocí jen dvouvodičové topologie.
Push-pull výstupy lze přepínat rychleji než open-drain nebo otevřený kolektor. Díky tomu lze významně zvýšit taktovací frekvenci I3C. Aby byla zachována kompatibilita s I²C, tak I3C je schopno přepínat mezi drivery typu open-drain a push-pull v závislosti na typ sběrnice. Design open-drain nebo otevřeného kolektoru se používá při počátečním adresování, kde zařízení I²C i I3C mohou být na lince současně. I3C používá push-pull, když je komunikace jednosměrná a není šance, že by zařízení I²C komunikovalo současně.
Kromě standardního SDR podporuje I3C několik volitelných režimů vysoké přenosové rychlosti (HDR). Režimy HDR pracují se stejnou taktovací frekvencí, ale vysílají s vyšší hustotou dat. První z režimů HDR je HDR double data rate (HDR-DDR), kde jsou data taktována na obou okrajích hodinového signálu, s to poskytuje téměř dvojnásobnou rychlost přenosu dat. Pro takt 12,5 MHz dosahuje režim DDR efektivní datové rychlosti 20 Mbit/s.
Ternární symboly HDR mají dvě verze: ternární symbol HDR, čistý HDR-TSP pouze pro zařízení I3C a ternární symbol HDR-TSL pro sběrnice s I²C i I3C. Režimy ternárních symbolů dosahují tří datových bitů na hodinový clock pomocí tříbitových (ternárních) symbolů zakódovaných na linkách SCL a SDA. Režim HDR hromadného transportu (HDR-BT) nabízí nejvyšší datový rate díky podpoře komunikace přes quad, dual nebo single SDA datové linky. Výsledkem je osminásobek, čtyřnásobek nebo dvojnásobek výkonu při single data rate a stejném taktu. Toto zvýšení rychlosti přenosu dat umožňuje zařízení zapínat na kratší dobu a to snižuje pracovní cyklus sběrnice a spotřebu energie ve srovnání s I²C (obrázek 3). Změna otevřeného kolektoru s externími pull-up rezistory na push-pull dále snižuje spotřebu energie, protože pull-up rezistory jsou energeticky náročnější.
Obrázek 3: I3C nabízí ve srovnání s I²C vyšší rychlost přenosu dat a zároveň nižší spotřebuenergie. (Zdroj obrázku: NXP Semiconductors)
Adresování
I²C používá statické adresy o délce 7 nebo 10 bitů pro každé sběrnicové zařízení. V I3C je dynamické 7bitové adresování, kde master sběrnice nastavuje adresu zařízení během dynamického přidělování adresy (DAA) a ukládá ji do registru zařízení. Statické adresování jako v případě I²C lze ale stále používat v rámci I3C. Díky dynamickému adresování lze adresy zařízení později změnit. To podporuje tzv. Hot plug, které umožňuje přidání nového zařízení do sběrnice za provozu. Nové zařízení připojené ke sběrnici I3C signalizuje svou přítomnost masteru I3C odesláním požadavku na připojení za provozu. Hlavní ovladač potvrdí požadavek a přidělí adresu.
IBIs
I3C je skutečná dvouvodičová sběrnice, která používá IBIs (in-band interrupts) namísto vyhrazených linek pro přerušení jako je to u I²C. Cílové zařízení signalizuje svou dostupnost masteru stažením linky SDA. Master pak spustí hodiny na lince SCL a cílové zařízení vyšle svou adresu na sběrnici I3C, aby upozornilo driver na přerušení a master si tak adresu může přečíst.
Běžné příkazové kódy
Společné kódy příkazů (CCC – Common Comand Code) jsou standardizované příkazy, které řídicí jednotka může vysílat jako obecné vysílání do všech zařízení I3C současně nebo do konkrétního cílového zařízení. Tyto příkazy souvisejí se správou sběrnice. Formát protokolu CCC začíná adresou vysílání I3C, kterou rozpoznávají všechna zařízení I3C na sběrnici. Žádné zařízení I²C na sběrnici požadavek nepotvrdí, protože se jedná o vyhrazenou adresu I²C. Každý příkaz obsahuje 8bitové pole ID deskriptoru a pak jsou následovány data (payload). Příkaz odeslaný konkrétnímu zařízení předá adresu zařízení v prvním bajtu dat (payloadu).
Existuje více než čtyřicet příkazů CCC:
- Dynamické přiřazení adresy (ENTDAA)
- Nastavení nové dynamické přiřazení adresy (SETNEWDA)
- Povolení události (ENEC)/Zakáz události (DISEC)
- Reset dynamického přiřazení adresy (RSTDAA)
- Vstup do režimu vysoké přenosové rychlosti (ENTHDRx)
- Vyžádání si charakteristiky příslušného zařízení (GETDCR)
Dodavatelé integrovaných obvodů je povolena vyhrazená řada CCC ID pro implementaci jejich vlastních příkazů.
Detekce a obnova chyb
Na rozdíl od I²C obsahuje I3C funkce pro detekci a obnovu chyb. Šest chyb a metod obnovy pro cílová zařízení je povinných a další jsou volitelná.
Jaké komponenty podporují I3C
Jak je znázorněno na obrázku 2 (vlevo), základní I3C síť obsahuje alespoň jeden hlavní řadič a jeden nebo více I3C cílů nebo podřízených. Hlavním masterem může být MCU jako je LPC5534JHI48-00MP od NXP Semiconductors (obrázek 4). Jedná se o 32bitový MCU Arm Cortex-M33 se 128 Kbytes paměti SRAM a 256 kB Flash. Jeho rozhraní Flexcomm podporuje osm různých sériových rozhraní včetně I3C.
Obrázek 4: MCU LPC5534JHI48/00MP obsahuje rozhraní I3C a sedm dalších sériových rozhraní. (Zdroj obrázku: NXP Semiconductor)
Sběrnice I3C umožňuje přidání sekundárních masterů zavedených do sběrnice jako slave. I3C může mít více masterů, ale pouze jeden může být řadičem. Jakmile se sekundární master zaregistruje, může požádat o řízení aktuálního mastera a pokud aktuální master přistoupí na změnu tak jeho řízení je předáno žádajícímu sekundárnímu masteru. Typickým I3C senzorem je teplotní senzor P3T2030CUKAZ od NXP. Tento teplotní senzor monitoruje teplotu od -40 °C do +125 °C na 12bitovou digitální hodnotu s přesností ±2°C. Obsahuje sériové rozhraní I²C a I3C v režimu SDR.
Sofistikovanějším senzorem je tříosý gyroskop a akcelerometr ICM-42605 od TDK InvenSense. Gyroskop měří rychlost otáčení od ±15,2 do ±2000 °/s. Rozsah akcelerometru je ±2 až ±15 g. Detekuje pohyb, náklon, klepnutí nebo kroky. Jako I3C senzor pracuje na 12,5 MHz v režimu SDR a 25 MHz v režimu DDR.
Integrované obvody jako je přepínač I3C P3S0200GMX mohou překonfigurovat sběrnici I3C směrováním signálů sběrnice I3C mezi driverem I3C a několika cílovými zařízeními nebo mezi jedním cílem a několika drivery I3C podle toho jak to vyhovuje externímu MCU (obrázek 5).
Obrázek 5: Přepínač P3S0200GMX I3C lze použít k překonfigurování sběrnice I3C směrováním signálů sběrnice I3C mezi driverem I3C a více cílovými zařízeními nebo mezi jedním cílem a více drivery I3C. (Zdroj obrázku: NXP Semiconductors)
Přepínání mezi dvěma cíli se používá například tehdy pokud mají oba cíle stejnou adresu a nemohli by tak umístěny na stejné sběrnici. Alternativně může nastat situace kdy je nutné sdílet jeden cíl mezi dvěma procesory, což vyžaduje přepínání mezi dvěma I3C řadiči.
Závěr
I3C je sériové rozhraní, které vylepšuje sběrnici I²C a SPI zvýšením rychlosti přenosu dat, snížením spotřeby energie, snížením počtu linek a zvýšením flexibility řízení sběrnice.
Článek vyšel v originále na webu DigiKey.com