Moderní součástky musejí pracovat „v týmu", zpravidla pod řízením či dohledem lokálního mikrokontroléru či vestavěného počítačového systému. Zejména to platí pro analogové anebo výkonové součástky, kde je uživatelem vyžadována nezávislá kontrola či ochrana před přehřátím, přebitím baterie a dalšími mezními situacemi či možnost uvedení do úsporného režimu anebo nějaká komunikace.
Sběrnicí rozumíme rozhraní, kterým je vybaveno a propojeno a přes které komunikuje zpravidla větší množství obvodů, pod řízením nadřazeného organizátora, „mastera". Je to prostředek, kterým se master, nejčastěji procesor, dostane ke stavovým a řídicím veličinám podřízených obvodů. Master sběrnice je zodpovědný za stanovení taktu a generování cyklů sběrnice, které jsou elementy jejího provozu. Obecně sběrnice může mít i více masterů, kteří si mezi sebou musí vyřešit předávání řízení sběrnice v neaktivním stavu, podle priorit.
Sběrnice mezi procesory a paměťmi zpravidla musejí mít vysokou přenosovou kapacitu, a proto jsou mnohavodičové, velmi rychlé, ale na krátkou vzdálenost, jak jen to umožňuje plošný spoj. Naopak připojení periferních obvodů, zejména analogových, je uměním kompromisu mezi požadavky na přenosovou kapacitu sběrnice (nepříliš silnými), hustotu montáže, potlačení šumu a požadavky samotné analogové části obvodů na napájení a přizpůsobení konektorům. Proto sběrnice pro připojení analogových obvodů má nižší přenosovou kapacitu, ale zato podstatně nižší počet signálů, kterými překlenuje větší vzdálenosti, typicky jedné desky nebo nejvýše propojení desek v zásuvné jednotce. Tyto sběrnice jsou zpravidla sériové.
Jsou to nejčastěji převodníky A/D a D/A převádějící napětí či proud na číslo, anebo naopak, jejich vstupní a výstupní obvody, například multiplexery a výstupní budiče či modulátory, digitální potenciometry apod. V poslední době se objevují přímo obvody čidel převádějící neelektrické veličiny (tlak, vlhkost, teplotu, osvětlení, sílu, zrychlení, chemické informace či polohu) na číslo, komunikující s nadřazeným procesorem po sériové sběrnici.
K tomu patří i obvody binárních vstupů a výstupů (I/O expandéry), telekomunikační a síťové obvody, některé typy grafických displejů a další aplikačně-specifické obvody.
Všechny níže uvedené sběrnice jsou sériové, což znamená, že informace (adresy, data, povely, statusy) se posílají po jednotlivých bitech, s použitím vnitřních posuvných registrů v obvodech.
Tyto sběrnice jsou relativně nejrychlejší, a proto se používají k připojení např. rychlých převodníků. Sběrnice v různých variantách se nazývá SPI, SCI, IOM-2 nebo Microwire. Princip sběrnice je na obr. 1. Sběrnice má jeden obvod Master, který generuje hodinové impulsy SCK, v jejichž rytmu se přenášejí data z Mastera do některého z obvodů Slave (zde SDO, často též MOSI) a data ze Slavů do Mastera (SDI nebo MISO). Dále Master vytváří několik selektovacích signálů pro jednotlivé obvody Slave, SSx. Selekty jsou zpravidla aktivní v nízké úrovni.
Řadiče sběrnice SPI často umožňují programovat přenosy opakovaně s vysokou přesností periody (tedy s malým jitterem) a s využitím přenosu DMA bez přímé účasti programu, což je velmi příjemné. Někdy však může dojít k rozporným požadavkům na přenosy v různých kanálech SPI, což uvidíme dále.
Všimněte si, že jediným třístavovým signálem je zde MISO, aktivní výstup je z toho obvodu, který je osloven aktivním selektem. Proto je tato sběrnice poměrně málo rušící a dosti imunní proti rušení a má malou spotřebu i při poměrně vysoké frekvenci SCK.
Bohužel nedošlo včas k potřebné standardizaci protokolu komunikace na SPI, a tak různí výrobci pod zkratkou SPI implementovali rozmanité varianty sběrnice a jejího protokolu, takže může být riskantní bez odladění navrhnout na jedné sběrnici obvody různých výrobců.
Obr. 2 ukazuje dvě možnosti, jak se může lišit hardwarová implementace SPI: v polaritě hodin SCK (CPOL udává úroveň SCK v klidu) a v jejich fázi (CPHA udává, která hrana SCK, resp. hrana SS, znamená počátek bitové doby). Bitová doba začíná uvolněním dat (obou směrů) na sběrnici a uprostřed bitové doby dojde k vzorkování dat do příslušného vstupu posuvného registru. Většina hardwarových řadičů SPI má tyto parametry programovatelné, a často ještě parametry selektů SS.
Délka cyklu sběrnice je dána počáteční a koncovou hranou signálu SS a počtem period SCK mezi nimi. Na obr. 2 je to 8 bitů, ale používá se až 1 024 bitů. Zpravidla má koncová hrana SS význam „potvrzení“ dat.
Další možností, jak něco zkomplikovat, je volba pořadí bitů v čase: je možné posílat „MSB first“, obvyklý u převodníků SAR (při půlení intervalu), anebo „LSB first“, používaný v komunikačních obvodech.
Dále se mohou lišit protokoly svou strukturou: některé obvody očekávají několikabitový kód povelu s parametry a odpovídají různým počtem bitů. Proto se délka cyklu může lišit i pro různé módy činnosti jednoho obvodu.
Pokud obvod potřebuje upoutat pozornost procesoru, může požádat o přenos SPI signálem „Request“, který má u procesoru podobný význam jako žádost o přerušení či DMA.
Existuje také „smyčkový“ SPI mód, při kterém jsou všechny selekty aktivní a data cirkulují přes všechny obvody ve smyčce ze vstupu SDI přes vnitřní posuvný registr do výstupu SDO a do následujícího obvodu. Principiální zapojení je na obr. 3. Zdá se však, že s výjimkou úspory selektovacích signálů toto uspořádání nemá mnoho výhod. Používá se např. u grafických displejů. Zpět do řadiče jde informace o případných závadách v obrazových elementech.
Sběrnice SPI umožňuje multi-master provoz, kdy se otočí směr signálů a význam MISO-MOSI, zpravidla se však tato možnost využívá pro pevnou konfiguraci režimu Master či Slave.
Sběrnice SPI může mít dosah až přibližně metr, pokud na výstupy signálů dáme budiče, i víc; je dostatečně robustní, aby byla vytažena konektorem přes zadní desku propojení v 19" jednotkách. Na pozičně adresovaných deskách je možno udělat dvoufázové dekódování selektů pro obvody na desce, sběrnice pak má jen 6 signálů. Toto uspořádání bylo použito v telekomunikačním systému Ateus NetStar z našeho vývoje.
Hlavním představitelem dvoudrátové sběrnice je sběrnice I²C, vyvinutá v 80. létech firmou Philips pro desky spotřební elektroniky. Alternativní názvy jsou IIC (Inter-IC) nebo TWI (Two-Wire Interface). V průběhu desetiletí se k tomuto protokolu přidala řada výrobců. Tento protokol je sice podstatně pomalejší než SPI, ale přesto je nesmírně populární, existuje např. obsáhlé téma Wikipedie a zájmové sdružení www.i2c-bus.org.
Blokové schéma systému s I²C je na obr. 4. Přenosovým médiem jsou dva signály SDA ‚data‘ a SCL ‚hodiny‘, které jsou někde uprostřed připojeny do napájení přes rezistory o hodnotě řádu kΩ. Obvody na sběrnici musejí mít na oba signály výstup typu „otevřený kolektor“ a vstup zpět do obvodu. Tyto pull-up odpory, spolu s kapacitou obou signálových vodičů proti zemi a mezi sebou a nepřizpůsobenými konci vedení, tvoří principiální omezení dosahu (cca 40 cm) a přenosové rychlosti v řádu jednotek Mb/s.
V klidu mezi cykly sběrnice jsou všechny výstupy odpojeny a na obou signálech SDA i SCL je logická úroveň H. Cyklus sběrnice je zahájen jindy nepřípustnou událostí, kdy Master uzemní signál SDA. (Jinak vždy platí, že SDA se smí měnit jen, je-li SCL uzemněný). To se nazývá S-start.
Poté Master vysouvá povel po SDA v rytmu SCL. Součástí povelu je i oslovení typu obvodu a 3bitová adresa, která je v Slave obvodech porovnána s nastavením až 3 vstupních vývodů součástky. Tak je možno, jen pomocí přizemňování, naadresovat až 8 součástek jednoho typu. Viz obr. 5.
Je-li součástí cyklu sběrnice odpověď osloveného obvodu, Master v rytmu jím vysílaných impulsů SCL vysílá ‚nic‘ na SDA, tedy log. H, kterou však může Slave vysláním nuly přizemnit na log. L.
Konec cyklu sběrnice I²C je rozpoznán opět událostí porušující řád I²C, přechodem SDA do úrovně H, když SCL je v H, s názvem P-End.
Programová obsluha obvodů s I²C je dosti komplikovaná a přenos je pomalý. Díky dobré odlišitelnosti díky adresaci obvodů se na jedné sběrnici obvody různých výrobců poměrně dobře snášejí. Díky malému počtu vývodů je možno vytvořit několik portů I²C na jednom procesoru.
Sběrnice I²C je velmi populární u obvodů s nízkým příkonem či zálohovaných z baterie, například hodinkových a časovacích obvodech, ale také u převodníků A/D, D/A a v periferních expandérech.
U dvouvodičových sběrnic stojí za zmínku USB a UART. USB je dnes v každém vestavném PC či lokálním mikropočítači a několik výrobců vyrábí konvertory sběrnic z USB do SPI nebo UART, což umožňuje řídit systémy všech velikostí přes kabel z PC. Pomocí USB je možno i napájet malé periferie. USB je sběrnicí v pravém smyslu, protože ji je možno rozplést jednotkou Hub nebo Switch pro více periferních zařízení. Navíc v módu přenosu dat má sběrnice podobu symetrického vedení, takže umožňuje velmi rychlé přenosy. USB má řadu módů, ale jejich popis je nad rámec tohoto přehledu.
UART je sice nešikovný a pomalý a není to sběrnice, spíš rozhraní bod-bod, ale většina soudobých procesorů a mikrokontrolerů má hned několik těchto rozhraní na čipu.
Jasným králem je zde systém 1-Wire firmy Dallas-Maxim. Je to velmi propracovaný systém zahrnující monitorovací, teploměrné, identifikační a další periferní obvody. Kromě originálního výrobce Dallas-Maxim je řada dalších výrobců kompatibilních systémů a součástek, a to i z ČR. Je sice hodně pomalý, zvládne obsloužit asi 30 identifikačních + dalších funkcí každou vteřinu, ale po 1 drátě + zemi zvládne napájet a obsloužit až 30 obvodů, což stačí například pro monitorování rozsáhlého teplotního pole. Princip komunikace 1-wire je na obr. 6. Médiem komunikace je jeden vodič s připojeným pull-up odporem do napájení. Po něm se napájejí součástky díky vnitřní kapacitě, která se dobíjí. Komunikace probíhá tak, že Master krátkodobě uzemní vodič, což Slave rozpozná jako počátek bitové doby. Pokud se jedná o zápis z Mastera, obvody Slave rozpoznají „krátké“ a „dlouhé“ uzemnění vodiče jako vyslanou 1 nebo 0. Pokud má Slave odpovědět 1 nebo 0, provede „OR“ uzemnění vodiče na krátkou nebo dlouhou dobu, což Master rozpozná.
Přestože je komunikační protokol „hodně přitažený za vlasy“, funguje to a velké množství aplikací používá tento systém nejen s pevně zamontovanými součástkami, ale i s kontaktními „přívěsky“ na vzdálenosti desítek metrů s použitím telefonního kabelu, z čehož lze usoudit, že systém je i velmi robustní a odolný proti ESD.
Uvedený přehled sběrnic zdaleka není úplný. Pro volbu správného rozhraní je třeba zvážit požadovanou přenosovou rychlost a vzdálenost, takže výběr je uměním kvalifikovaného kompromisu.
[1] Wikipedia.com – témata SPI, I²C, 1-Wire
[2] Firemní dokumentace na stránkách Microchip.com
[3] Stránky HW.cz