Vestavné mikropočítačové systémy 7. Týden – Datové komunikace II (SPI, I2C, 1-Wire)
SPI – Serial Peripheral Interface Duplexní single-masterová synchronní sériová sběrnice Komunikační signály jsou sdílené MOSI – master-out, slave-in MISO – master-in, slave-out SCK – hodinový signál generovaný masterem Adresace se provádí pomocí zvláštních vodičů SS (slave-select) resp. CS (chip-select)
SPI – módy Mód komunikace je určen dvěma parametry – CPOL a CPHA V µP lze zpravidla volit dle požadavků připojeného zařízení
I2C – Inter-Integrated Circuit Poloduplexní multi-masterová synchronní sériová sběrnice (Philips) Používá se pro připojení nízkorychlostních periferií Umožňuje propojení až 128 různých zařízení pomocí dvou vodičů SCL – hodinový signál (Synchronous Clock) SDA – datový kanál (Synchronous Data) Zařízení na směrnici může vystupovat v jedné ze dvou rolí Master – zahajuje a ukončuje komunikaci, generuje hodiny Slave – zařízení adresované masterem µP (master) RTC (slave) E2PROM (slave) R-trim (slave) teploměr (slave) SDA SCL VCC
I2C – fyzická vrstva Oba signály mají charakter otevřeného kolektoru – musí být připojeny přes pull-up rezistor ke kladnému napájecímu napětí Délka vodičů je omezena jejich nejvyšší přípustnou kapacitou 400pF Maximální frekvence SCL je podle verze buď 100 kHz nebo 400 kHz Při běžném provozu platí, že stav signálu SDA se smí změnit pouze jeli SCL v úrovni L Toto pravidlo je porušeno ve dvou speciálních případech – při vysílání tzv. START resp. STOP podmínky, které se používají pro signalizaci zahájení resp. ukončení přenosu START STOP SCL SDA
I2C – linková vrstva Přenosový rámec začíná značkou START, následuje 7 bitů adresy a jeden bit, který specifikuje druh přenosu čtení/zápis Přenesení osmi bitů následuje tzv. ACK bit. Strana, která odeslal těch 8 bitů uvolní sběrnici (H) a přijímací strana potvrdí příjem tak, že sběrnici stáhne do L Po naadresovaní slave zařízení se přenáší vlastní data. Osmice datových bitů jsou rovněž prokládány ACK bitem
I2C – další vlastnosti Arbitráž Adresace Používá se metoda sdílení sběrnice s detekcí kolizí; Každá stanice může zahájit vysílání, je-li sběrnice v klidovém stavu; Během vysílání se porovnává skutečný stav SDA s vysílanými daty; Začnou-li vysílat dvě zařízení, dříve nebo později dojde ke kolizi; Vzhledem k charakteru sběrnice (otevřený kolektor) lze kolie bezpečně detekovat. Pokud jedno zařízení vysílá H a druhé L, tak sběrnice je ve stavu L. Zařízení, které vysílalo H v takovém případě detekuje kolizi a musí okamžitě ukončit své vysílání. Adresace Součástka má zpravidla z výroby přidělenu nějakou adresu – podléhá licenčním podmínkám; Některé adresy jsou rezervované pro speciální účely: 0 – broadcast; Adresa 11110aa indikuje 10-ti bitové adresování. aa jsou nejvyšší dva bity adresy. Zbývajících 8 bitů následuje.
1-Wire Poloduplexní single-masterová asynchronní sériová sběrnice (Maxim) 1 signálový vodič, může sloužit zároveň i k napájení slave Používá se pro připojení nízkorychlostních periferií Standardní rychlost: 15,4kbps Overdrive: 125kbps Každé zařízení má z výroby neměnitelnou unikátní 64 bitovou adresu
1-Wire – fyzická vrstva Komunikaci zahajuje a řídí master Sběrnice má charakter otevřeného kolektoru (povinný pull-up rezistor) Slave zařízení mají obvykle zabudovaný kapacitor, který jim umožňuje napájení přímo ze sběrnice – není třeba samostatný napájecí vodič Slave zařízení jsou synchronizována sestupnou hranou
1-Wire – princip time-slotů Data (bity) jsou přenášeny v tzv. time-slotech 1 odpovídá krátkému pulsu 0 odpovídá dlouhému pulsu Time-slot (T) Standardní rychlost: 60µs Overdrive: 8µs
1-Wire – komunikace Komunikace na sběrnici 1-Wire se skládá ze tří cyklicky se opakujících fází: Reset/Synchronizace zařízení Výběr zařízení (ROM-level Command) Funkce zařízení (Device-level Command)
1-Wire – Reset/Presence Synchronizační fáze uvádí sběrnici do výchozího stavu a master dostává informaci, že na sběrnici je připojen nějaký slave.
1-Wire – Čtení/zápis bitu
1-Wire – ROM-level Commands Skip ROM – přeskočí výběr zařízení (na sběrnici je pouze 1 slave) Read ROM – čtení identifikace zařízení (na sběrnici je pouze 1 slave) Match ROM – výběr zařízení Resume – použije předchozí vybrané zařízení Overdrive-skip ROM – přeskočí výběr a přepne sběrnici do overdrive Search ROM – prohledávání sběrnice (algoritmus viz tutoriál)