14. díl – OctopusLAB – datové sběrnice
Pokud chceme přenést digitální informaci (stav 1 nebo 0) z jednoho místa na druhé, použijeme vodič nebo skupinu vodičů. Další možností je přenos bezdrátový, ale tomu se budeme věnovat až někdy příště.
Opět tedy velmi stručně zopakujeme hlavní rozdělení.
• Paralelní přenos dat – přenášíme více bitů vedle sebe zároveň, pro 8 bitů pak potřebujeme osm „drátů“. Výhodou je velká přenosová rychlost a jak můžeme sledovat i při zrychlování osobních počítačů byla jedním z parametrů šířka sběrnice, od 8 na dnes už běžných 128 bitů.
• Sériový přenos dat – data posíláme za sebou postupně.
Další přehled nejčastějších digitálních sběrnic (které používají i mikrokontroléry) má společnou sériovou datovou linku (jednu pro obousměrný provoz nebo dvě) a doplněnou dalšími pomocnými signály dle dané modifikace.
• UART (nebo USART, Universal asynchronous receiver-transmitter) – sériová linka, kdysi na počítači jako komunikační port COM, je základem RS232 a podobně. Mívá pro vysílání a přijímaní samostatnou linku. Tx (transmit) pro posílání a Rx (recieve) pro přijímání dat.
• 1-WIRE oproti tomu komunikuje oběma směry po jediném vodiči. Některé senzory (například teploměry od firmy Dallas) umí běžet v režimu parazitního napájení a postačí nám k připojení pouze dva vodiče.
Pro zrychlení přenosu dat se na jiných sběrnicích používá hodinový (clock) signál, který slouží pro časování přenosu.
• SPI (Serial Peripheral Interface) – má dvě linky datové (MOSI a MISO), hodinovou (SCLK) a SS (slave select), u některých obvodů označované jako CS (chip select). Slouží pro volbu periferie, se kterou chceme komunikovat. Výhodou SPI je velká přenosová rychlost, nevýhodou další datové linky (CS) pro každé další zařízení. Existují ještě dvě varianty – třídrátová (pro senzory) nebo čtyřdrátová (častěji pro displeje, které mívají navíc „DC“ data/command).
• I2C – ve srovnání s SPI nemá CS a data putují jediným vodičem SDA. Volba periferie se provádí udáním její adresy, která je součástí přenášeného signálu. Velkou výhodou I2C je, že na sběrnici můžeme připojit až 128 periférií na pořád stejné dvě datové linky (i s napájením tedy čtyři vodiče).
I2C sběrnice a použití datového expandéru
Obvod ATtiny, kterým se zabýváme, má omezený počet pinů. Pokud potřebujeme zpracovat více digitálních hodnot, máme možnost použít expandér, tj. obvod, který nám rozšíří počet vstupně výstupních linek na sběrnici. Používáme I2C obvod PCF8574 (osmibitový), k dispozici je i 16-ti bitový MCP23016. Na sběrnici můžeme připojit sice až 128 periférií, ale expandérů stejného typu pouze osm. Důvodem je to, že pro jednoznačné určení obvodu máme k dispozici tři digitální vstupy, které nám dávají osm různých kombinací, kde každá reprezentuje jednu adresu. (Vstupy A0, A1, A2 na obrázku zeleně, v zapojení s polem „jumperů“ – propojek, které se připojí buď k napájení nebo k zemi – červená nebo černá).
Zjednodušený náhled komunikačního protokolu, jak jej vidí signálový analyzátor na datovém pinu. Po start bitu „S“, první blok dat určí adresu (ADR: 20) spolu se směrem přenosu „R“ read nebo „W“ write. Následuje „A“ – ACK (acknowledge, potvrzení signálu od Slave) a dojde k načtení dat (Data read: zde FF / 0b11111111).
V dalším díle si navrhneme jednoduchý simulátor logických hradel, který využívá ATtiny a osmibitový expandér.